Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Création d'un filtre de données
Vous pouvez créer un ou plusieurs filtres de données pour chaque table du catalogue de données.
Pour créer un filtre de données pour une table du catalogue de données (console)
-
Ouvrez la console Lake Formation à l'adresse https://console.aws.amazon.com/lakeformation/
. Connectez-vous en tant qu'administrateur du lac de données, propriétaire de la table cible ou principal disposant d'une autorisation Lake Formation sur la table cible.
-
Dans le volet de navigation, sous Catalogue de données, sélectionnez Filtres de données.
-
Sur la page Filtres de données, choisissez Créer un nouveau filtre.
-
Dans la boîte de dialogue Créer un filtre de données, entrez les informations suivantes :
-
Nom du filtre de données
-
Base de données cible : spécifiez la base de données qui contient la table.
-
Tableau des cibles
-
Column-level accès — Laissez ce paramètre défini sur Accès à toutes les colonnes pour spécifier le filtrage des lignes uniquement. Choisissez Inclure les colonnes ou Exclure les colonnes pour définir le filtrage des colonnes ou des cellules, puis spécifiez les colonnes à inclure ou à exclure.
Colonnes imbriquées : si vous appliquez le filtre à une table contenant des colonnes imbriquées, vous pouvez spécifier explicitement les sous-structures des colonnes de structure imbriquées dans un filtre de données.
Lorsque vous accordez l'autorisation SELECT à un principal sur ce filer, le principal exécutant la requête suivante ne verra que les données pour
customer.customerNameet noncustomer.customerId.SELECT "customer" FROM "example_db"."example_table";
Lorsque vous accordez des autorisations à la
customercolonne, le principal reçoit l'accès à la colonne et aux champs imbriqués situés sous la colonne (customerNameetcustomerID). -
Expression de filtre de ligne : entrez une expression de filtre pour spécifier le filtrage des lignes ou des cellules. Pour les types de données et les opérateurs pris en charge, consultezSupport partiQL dans les expressions de filtre de ligne. Choisissez Accès à toutes les lignes pour accorder l'accès à toutes.
Vous pouvez inclure des structures de colonnes partielles issues de colonnes imbriquées dans une expression de filtre de ligne afin de filtrer les lignes contenant une valeur spécifique.
Lorsqu'un principal est autorisé à accéder à une table avec une expression
Select * from example_nestedtable where customer.customerName <>'John'de filtre de ligne et que l'Column-levelaccès est défini sur Accès à toutes les colonnes, les résultats de la requête n'affichent quecustomerName <>'John'les lignes dont la valeur est vraie.
La capture d'écran suivante montre un filtre de données qui implémente le filtrage des cellules. Dans les requêtes portant sur la
orderstable, il refuse l'accès à lacustomer_namecolonne et affiche uniquement les lignes contenant « pharma » dans laproduct_typecolonne.
-
-
Choisissez Create filter (Créer un filtre).
Pour créer un filtre de données avec des politiques de filtrage de cellules sur un champ imbriqué
Cette section utilise l'exemple de schéma suivant pour montrer comment créer un filtre de cellules de données :
[ { name: "customer", type: "struct<customerId:string,customerName:string>" }, { name: "customerApplication", type: "struct<appId:string>" }, { name: "product", type: "struct<offer:struct<prodId:string,listingId:string>,type:string>" }, { name: "purchaseId", type: "string" }, ]
-
Sur la page Créer un filtre de données, entrez le nom du filtre de données.
-
Ensuite, utilisez le menu déroulant pour choisir le nom de la base de données et le nom de la table.
-
Dans la section Column-level Accès, choisissez Colonnes incluses, puis sélectionnez une colonne imbriquée (
customer.customerName). -
Dans la section Row-level Accès, choisissez l'option Accès à toutes les lignes.
-
Choisissez Create filter (Créer un filtre).
Lorsque vous
SELECTautorisez ce filtre, le principal a accès à toutes les lignes de lacustomerNamecolonne. -
Définissez ensuite un autre filtre de données pour le même database/table.
-
Dans la section Column-level Accès, choisissez Colonnes incluses, puis sélectionnez une autre colonne imbriquée (
customer.customerid). -
Dans la section Row-level Accès, choisissez Filtrer les lignes, puis entrez une expression de filtre de ligne (
customer.customerid <> 5). -
Choisissez Create filter (Créer un filtre).
Lorsque vous
SELECTautorisez ce filtre, le principal a accès à toutes les lignes descustomerIdchampscustomerName, à l'exception de la cellule dont la valeur est 5 dans lacustomerIdcolonne.