Filter data di Lake Formation - AWS Lake Formation

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Filter data di Lake Formation

Anda dapat menerapkan keamanan tingkat kolom, tingkat baris, dan tingkat sel dengan membuat filter data. Anda memilih filter data saat Anda memberikan izin SELECT Lake Formation pada tabel. Jika tabel berisi struktur kolom bersarang, Anda dapat menentukan filter data dengan menyertakan atau mengecualikan kolom turunan dan menentukan ekspresi filter tingkat baris pada atribut bersarang.

Setiap filter data milik tabel tertentu dalam Katalog Data Anda. Filter data mencakup informasi berikut:

  • Filter nama

  • Katalog IDs tabel yang terkait dengan filter

  • Nama tabel

  • Nama database yang berisi tabel

  • Spesifikasi kolom - daftar kolom dan kolom bersarang (dengan struct tipe data) untuk menyertakan atau mengecualikan dalam hasil kueri.

  • Ekspresi filter baris - ekspresi yang menentukan baris untuk disertakan dalam hasil kueri. Dengan beberapa batasan, ekspresi memiliki sintaks WHERE klausa dalam bahasa PartiQL. Untuk menentukan semua baris, pilih Akses ke semua baris di bawah Akses tingkat baris di konsol atau gunakan AllRowsWildcard dalam API panggilan.

    Untuk informasi selengkapnya tentang apa yang didukung dalam ekspresi filter baris, lihatDukungan PartiQL dalam ekspresi filter baris.

Tingkat penyaringan yang Anda dapatkan tergantung pada bagaimana Anda mengisi filter data.

  • Saat Anda menentukan wildcard “semua kolom” dan memberikan ekspresi filter baris, Anda hanya membuat keamanan tingkat baris (pemfilteran baris).

  • Saat Anda menyertakan atau mengecualikan kolom tertentu dan kolom bersarang, dan menentukan “semua baris” menggunakan wildcard semua baris, Anda hanya membuat keamanan tingkat kolom (pemfilteran kolom).

  • Saat Anda menyertakan atau mengecualikan kolom tertentu dan juga memberikan ekspresi filter baris, Anda membangun keamanan tingkat sel (penyaringan sel).

Tangkapan layar berikut dari konsol Lake Formation menunjukkan filter data yang melakukan pemfilteran tingkat sel. Untuk kueri terhadap orders tabel, ini membatasi akses ke customer_name kolom dan hasil kueri hanya mengembalikan baris di mana product_type kolom berisi 'pharma'.

Jendela filter data berisi bidang-bidang ini, disusun secara vertikal: Nama filter data; Basis data target; Tabel target; Grup tombol opsi dengan opsi Akses ke semua kolom, Sertakan kolom, dan Kecualikan kolom; Pilih kolom (daftar drop-down); Ekspresi filter baris (kotak teks multi-baris). Opsi Kecualikan kolom dipilih, kolom customer_name dipilih untuk pengecualian, dan bidang ekspresi filter baris berisi. 'product_type='pharma'

Perhatikan penggunaan tanda kutip tunggal untuk melampirkan string literal,'pharma'.

Anda dapat menggunakan konsol Lake Formation untuk membuat filter data ini, atau Anda dapat menyediakan objek permintaan berikut ke CreateDataCellsFilter API operasi.

{ "Name": "restrict-pharma", "DatabaseName": "sales", "TableName": "orders", "TableCatalogId": "111122223333", "RowFilter": {"FilterExpression": "product_type='pharma'"}, "ColumnWildcard": { "ExcludedColumnNames": ["customer_name"] } }

Anda dapat membuat filter data sebanyak yang Anda butuhkan untuk sebuah tabel. Untuk melakukannya, Anda memerlukan SELECT izin dengan opsi hibah di atas meja. Administrator Data Lake secara default memiliki izin untuk membuat filter data pada semua tabel di akun itu. Anda biasanya hanya menggunakan subset dari filter data yang mungkin saat memberikan izin pada tabel kepada prinsipal. Misalnya, Anda bisa membuat filter data kedua untuk orders tabel yang merupakan filter row-security-only data. Mengacu pada tangkapan layar sebelumnya, Anda dapat memilih opsi Akses ke semua kolom dan menyertakan ekspresi filter baris dari. product_type<>pharma Nama filter data ini bisa jadino-pharma. Ini membatasi akses ke semua baris yang memiliki product_type kolom diatur ke 'pharma'.

Objek permintaan untuk CreateDataCellsFilter API operasi untuk filter data ini adalah sebagai berikut.

{ "Name": "no-pharma", "DatabaseName": "sales", "TableName": "orders", "TableCatalogId": "111122223333", "RowFilter": {"FilterExpression": "product_type<>'pharma'"}, "ColumnNames": ["customer_id", "customer_name", "order_num" "product_id", "purchase_date", "product_type", "product_manufacturer", "quantity", "price"] }

Anda kemudian dapat memberikan SELECT pada orders tabel dengan filter restrict-pharma data ke pengguna administratif, dan SELECT pada orders tabel dengan filter no-pharma data untuk pengguna non-administratif. Untuk pengguna di sektor perawatan kesehatan, Anda akan memberikan SELECT di orders atas meja dengan akses penuh ke semua baris dan kolom (tanpa filter data), atau mungkin dengan filter data lain yang membatasi akses ke informasi harga.

Anda dapat menyertakan atau mengecualikan kolom bersarang saat menentukan keamanan tingkat kolom dan tingkat baris dalam filter data. Dalam contoh berikut, akses ke product.offer bidang ditentukan menggunakan nama kolom yang memenuhi syarat (dibungkus dengan tanda kutip ganda). Hal ini penting untuk bidang bersarang untuk menghindari kesalahan yang terjadi ketika nama kolom berisi karakter khusus, dan untuk mempertahankan kompatibilitas mundur dengan definisi keamanan tingkat kolom tingkat atas.

{ "Name": "example_dcf", "DatabaseName": "example_db", "TableName": "example_table", "TableCatalogId": "111122223333", "RowFilter": { "FilterExpression": "customer.customerName <> 'John'" }, "ColumnNames": ["customer", "\"product\".\"offer\""] }