Membatasi akses data menggunakan aturan analisis
Dokumen ini memberikan informasi umum tentang aturan analisis di GoogleSQL untuk BigQuery.
Apa itu aturan analisis?
Aturan analisis menerapkan kebijakan untuk berbagi data. Kebijakan merepresentasikan kondisi yang harus dipenuhi sebelum kueri dapat dijalankan. Dengan BigQuery, Anda dapat menerapkan aturan analisis pada tampilan, menggunakan ruang bersih data atau dengan menerapkan aturan analisis langsung ke tampilan. Saat Anda menerapkan aturan analisis, Anda memastikan bahwa semua orang yang membuat kueri tabel virtual tersebut harus mematuhi aturan analisis tersebut dalam tabel virtual. Jika aturan analisis terpenuhi, kueri akan menghasilkan output yang memenuhi aturan analisis tersebut. Jika kueri tidak memenuhi aturan analisis, error akan muncul.
Aturan analisis yang didukung
Aturan analisis berikut didukung:
Aturan analisis nilai minimum agregasi: Menerapkan jumlah minimum entity berbeda yang harus ada dalam set data. Anda dapat menerapkan aturan ini pada tampilan, menggunakan pernyataan DDL atau ruang bersih data. Aturan ini mendukung kebijakan nilai minimum agregasi dan kebijakan pembatasan gabungan.
Aturan analisis privasi diferensial: Menerapkan anggaran privasi, yang membatasi data yang diungkapkan kepada pelanggan saat data dilindungi dengan privasi diferensial. Anda dapat menerapkan aturan ini pada tampilan, menggunakan pernyataan DDL atau ruang bersih data. Aturan ini mendukung kebijakan privasi diferensial dan kebijakan pembatasan gabungan.
Aturan analisis tumpang-tindih daftar: Baris yang tumpang-tindih hanya dapat dikueri setelah operasi penggabungan, yang sesuai dengan aturan. Anda dapat menerapkan aturan ini pada tampilan, menggunakan pernyataan DDL atau ruang bersih data. Aturan ini mendukung kebijakan pembatasan gabungan.
Aturan analisis nilai minimum agregasi
Aturan analisis nilai minimum agregasi menerapkan jumlah minimum entity berbeda yang harus berkontribusi pada baris output kueri, sehingga baris output disertakan dalam hasil kueri.
Jika diterapkan, aturan analisis nilai minimum agregasi akan mengelompokkan data di berbagai dimensi, sekaligus memastikan nilai minimum agregasi terpenuhi. Nilai ini menghitung jumlah unit privasi yang berbeda (diwakili oleh kolom unit privasi) untuk setiap grup, dan hanya menghasilkan output grup dengan jumlah unit privasi berbeda yang memenuhi batas agregasi.
Tampilan yang menyertakan aturan analisis ini harus menyertakan kebijakan nilai minimum penggabungan dan secara opsional dapat menyertakan kebijakan pembatasan gabungan.
Menentukan aturan analisis nilai minimum agregasi untuk tampilan
Anda dapat menentukan aturan analisis nilai minimum agregasi untuk tampilan di
ruang bersih data atau dengan pernyataan
CREATE VIEW:
CREATE OR REPLACE VIEW VIEW_NAME OPTIONS ( privacy_policy= '''{ "aggregation_threshold_policy": { "threshold" : THRESHOLD, "privacy_unit_column": "PRIVACY_UNIT_COLUMN" }, "join_restriction_policy": { "join_condition": "JOIN_CONDITION", "join_allowed_columns": JOIN_ALLOWED_COLUMNS } }''' ) AS QUERY;
Definisi:
aggregation_threshold_policy: Kebijakan nilai minimum agregasi untuk aturan analisis nilai minimum agregasi.VIEW_NAME: Jalur dan nama tabel virtual.
THRESHOLD: Jumlah minimum unit privasi berbeda yang perlu berkontribusi pada setiap baris dalam hasil kueri. Jika baris potensial tidak memenuhi nilai minimum ini, baris tersebut akan dihilangkan dari hasil kueri.
PRIVACY_UNIT_COLUMN: Menampilkan kolom unit privasi. Kolom unit privasi adalah ID unik untuk unit privasi. Unit privasi adalah nilai dari kolom unit privasi yang mewakili entity dalam kumpulan data yang dilindungi.
Anda hanya dapat menggunakan satu kolom unit privasi, dan jenis data untuk kolom unit privasi harus dapat dikelompokkan.
Nilai dalam kolom unit privasi tidak dapat diproyeksikan langsung melalui kueri, dan Anda hanya dapat menggunakan fungsi agregat yang didukung aturan analisis untuk menggabungkan data dalam kolom ini.
join_restriction_policy(opsional): Kebijakan pembatasan bergabung opsional untuk aturan analisis nilai minimum agregasi.JOIN_CONDITION: Jenis batasan bergabung yang akan diterapkan pada tampilan. Ini dapat berupa salah satu dari nilai berikut ini:
JOIN_ALL: Semua kolom dijoin_allowed_columnsharus digabungkan secara dalam agar tampilan ini dapat dikueri.JOIN_ANY: Setidaknya satu kolom dijoin_allowed_columnsharus digabungkan agar tabel virtual ini dapat dikueri.JOIN_BLOCKED: Tampilan ini tidak dapat digabungkan di sepanjang kolom mana pun. Jangan tetapkanjoin_allowed_columnsdalam kasus ini.JOIN_NOT_REQUIRED: Gabungan tidak diperlukan untuk membuat kueri tampilan ini. Jika penggabungan digunakan, hanya kolom dijoin_allowed_columnsyang dapat digunakan.
JOIN_ALLOWED_COLUMNS: Kolom yang dapat menjadi bagian dari operasi gabungan.
QUERY: Kueri untuk tabel virtual.
Contoh:
Dalam contoh berikut, aturan analisis nilai minimum agregasi dibuat pada
tampilan bernama ExamView. ExamView mereferensikan tabel bernama
ExamTable:
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"aggregation_threshold_policy": {"threshold": 3, "privacy_unit_column": "last_name"}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
Guna meninjau sintaksis privacy_policy untuk CREATE VIEW, lihat daftar OPTIONS di CREATE VIEW.
Memperbarui aturan analisis batas agregasi untuk tampilan
Anda dapat mengubah aturan analisis nilai minimum agregasi untuk tampilan di
ruang bersih data atau dengan pernyataan ALTER VIEW:
ALTER VIEW VIEW_NAME SET OPTIONS ( privacy_policy= '''{ "aggregation_threshold_policy": { "threshold" : THRESHOLD, "privacy_unit_column": "PRIVACY_UNIT_COLUMN" } }''' )
Untuk mengetahui informasi selengkapnya tentang nilai yang dapat Anda tetapkan untuk kebijakan privasi dalam sintaksis sebelumnya, lihat Menentukan aturan analisis nilai minimum agregasi untuk tabel virtual.
Contoh:
Dalam contoh berikut, aturan analisis nilai minimum agregasi diperbarui
pada tampilan yang disebut ExamView.
ALTER VIEW mydataset.ExamView
SET OPTIONS (
privacy_policy= '{"aggregation_threshold_policy": {"threshold": 50, "privacy_unit_column": "last_name"}}'
);
Guna meninjau sintaksis privacy_policy untuk ALTER VIEW, lihat daftar OPTIONS di ALTER VIEW SET OPTIONS.
Membuat kueri tampilan yang menerapkan aturan analisis nilai minimum agregasi
Anda dapat membuat kueri tampilan yang memiliki aturan analisis nilai minimum agregasi dengan klausa AGGREGATION_THRESHOLD. Kueri harus menyertakan fungsi agregasi, dan Anda hanya dapat menggunakan fungsi agregat yang didukung nilai minimum agregasi dalam kueri ini.
Contoh:
Dalam contoh berikut, aturan analisis nilai minimum agregasi dikueri pada
tampilan bernama ExamView:
SELECT WITH AGGREGATION_THRESHOLD
test_id, COUNT(DISTINCT last_name) AS student_count
FROM mydataset.ExamView
GROUP BY test_id;
/*---------+---------------*
| test_id | student_count |
+---------+---------------+
| P91 | 3 |
| U25 | 4 |
*---------+---------------*/
Aturan analisis nilai minimum agregasi juga dapat secara opsional menyertakan kebijakan pembatasan gabungan. Untuk mempelajari cara menggunakan kebijakan pembatasan gabungan dengan aturan analisis, lihat Kebijakan pembatasan gabungan dalam aturan analisis.
Untuk meninjau contoh tambahan untuk klausa
AGGREGATION_THRESHOLD, lihat
klausa AGGREGATION_THRESHOLD.
Aturan analisis privasi diferensial
Aturan analisis privasi diferensial menerapkan anggaran privasi, yang membatasi data yang diungkapkan kepada pelanggan saat data dilindungi dengan privasi diferensial. Anggaran privasi mencegah pelanggan membuat kueri data bersama jika jumlah epsilon atau delta semua kueri mencapai nilai total epsilon atau total delta. Anda dapat menggunakan aturan analisis ini dalam tampilan.
Tampilan yang menyertakan aturan analisis ini harus menyertakan kebijakan privasi diferensial dan secara opsional dapat menyertakan kebijakan pembatasan gabungan.
Menentukan aturan analisis privasi diferensial untuk tabel virtual
Anda dapat menentukan aturan analisis privasi diferensial untuk tampilan di
ruang bersih data atau dengan pernyataan
CREATE VIEW:
CREATE OR REPLACE VIEW VIEW_NAME OPTIONS ( privacy_policy= '''{ "differential_privacy_policy": { "privacy_unit_column": "PRIVACY_UNIT_COLUMN", "max_epsilon_per_query": MAX_EPSILON_PER_QUERY, "epsilon_budget": EPSILON_BUDGET, "delta_per_query": DELTA_PER_QUERY, "delta_budget": DELTA_BUDGET, "max_groups_contributed": MAX_GROUPS_CONTRIBUTED }, "join_restriction_policy": { "join_condition": "JOIN_CONDITION", "join_allowed_columns": JOIN_ALLOWED_COLUMNS } }''' ) AS QUERY;
Definisi:
differential_privacy_policy: Kebijakan privasi diferensial untuk aturan analisis privasi diferensial.PRIVACY_UNIT_COLUMN: Kolom yang mengidentifikasi entity dalam set data yang dilindungi menggunakan aturan analisis privasi. Nilai ini adalah string JSON.
MAX_EPSILON_PER_QUERY: Menentukan jumlah derau yang ditambahkan ke hasil per kueri dan mencegah total epsilon dicapai oleh satu kueri. Nilai ini adalah angka JSON dari
0.001hingga1e+15.EPSILON_BUDGET: Anggaran epsilon yang merepresentasikan total epsilon yang dapat digunakan di semua kueri privasi diferensial pada tampilan. Nilai ini harus lebih besar dari
MAX_EPSILON_PER_QUERY, dan merupakan angka JSON dari0.001hingga1e+15.DELTA_PER_QUERY: Probabilitas bahwa setiap baris dalam hasil gagal menjadi privasi diferensial epsilon. Nilai ini adalah angka JSON dari
1e-15hingga1.DELTA_BUDGET: Anggaran delta, yang menampilkan total delta yang dapat digunakan di semua kueri privasi diferensial pada tampilan. Nilai ini harus lebih besar dari
DELTA_PER_QUERY, dan merupakan angka JSON dari1e-15hingga1000.MAX_GROUPS_CONTRIBUTED (opsional): Membatasi jumlah grup yang dapat dikontribusikan oleh entity dalam kolom unit privasi. Nilai ini harus berupa bilangan bulat JSON non-negatif.
join_restriction_policy(opsional): Kebijakan pembatasan bergabung opsional untuk aturan analisis privasi diferensial.JOIN_CONDITION: Jenis batasan bergabung yang akan diterapkan pada tampilan. Ini dapat berupa salah satu dari nilai berikut ini:
JOIN_ALL: Semua kolom dijoin_allowed_columnsharus digabungkan secara dalam agar tampilan ini dapat dikueri.JOIN_ANY: Setidaknya satu kolom dijoin_allowed_columnsharus digabungkan agar tabel virtual ini dapat dikueri.JOIN_BLOCKED: Tampilan ini tidak dapat digabungkan di sepanjang kolom mana pun. Jangan tetapkanjoin_allowed_columnsdalam kasus ini.JOIN_NOT_REQUIRED: Gabungan tidak diperlukan untuk membuat kueri tampilan ini. Jika penggabungan digunakan, hanya kolom dijoin_allowed_columnsyang dapat digunakan.
JOIN_ALLOWED_COLUMNS: Kolom yang dapat menjadi bagian dari operasi gabungan.
QUERY: Kueri untuk tabel virtual.
Contoh:
Dalam contoh berikut, aturan analisis privasi diferensial dibuat pada
tampilan bernama ExamView. ExamView mereferensikan tabel bernama
ExamTable:
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"differential_privacy_policy": {"privacy_unit_column": "last_name", "max_epsilon_per_query": 1000.0, "epsilon_budget": 10000.1, "delta_per_query": 0.01, "delta_budget": 0.1, "max_groups_contributed": 2}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- NOTE: Delta and epsilon parameters are set very high due to the small
-- dataset. In practice, these should be much smaller.
Guna meninjau sintaksis privacy_policy untuk CREATE VIEW, lihat daftar OPTIONS di CREATE VIEW.
Memperbarui aturan analisis privasi diferensial untuk tabel virtual
Anda dapat mengubah aturan analisis privasi diferensial untuk tampilan di
ruang bersih data atau dengan pernyataan
ALTER VIEW:
ALTER VIEW VIEW_NAME SET OPTIONS ( privacy_policy= '''{ "differential_privacy_policy": { "privacy_unit_column": "PRIVACY_UNIT_COLUMN", "max_epsilon_per_query": MAX_EPSILON_PER_QUERY, "epsilon_budget": EPSILON_BUDGET, "delta_per_query": DELTA_PER_QUERY, "delta_budget": DELTA_BUDGET, "max_groups_contributed": MAX_GROUPS_CONTRIBUTED } }''' )
Untuk mengetahui informasi selengkapnya tentang nilai yang dapat Anda tetapkan untuk kebijakan privasi dalam sintaksis sebelumnya, lihat Menentukan aturan analisis privasi diferensial untuk tabel virtual.
Contoh:
Pada contoh berikut, aturan analisis privasi diferensial diperbarui
pada tampilan bernama ExamView.
ALTER VIEW mydataset.ExamView
SET OPTIONS(
privacy_policy= '{"differential_privacy_policy": {"privacy_unit_column": "last_name", "max_epsilon_per_query": 0.01, "epsilon_budget": 1000.0, "delta_per_query": 0.05, "delta_budget": 0.1, "max_groups_contributed": 2}}'
);
-- NOTE: Delta and epsilon parameters are set very high due to the small
-- dataset. In practice, these should be much smaller.
Guna meninjau sintaksis privacy_policy untuk ALTER VIEW, lihat daftar OPTIONS di ALTER VIEW SET OPTIONS.
Membuat kueri tabel virtual yang menerapkan aturan analisis privasi diferensial
Anda dapat membuat kueri tabel virtual yang memiliki aturan analisis privasi diferensial dengan klausa DIFFERENTIAL_PRIVACY. Untuk meninjau sintaksis dan contoh tambahan
untuk klausa DIFFERENTIAL_PRIVACY, lihat
klausa DIFFERENTIAL_PRIVACY.
Contoh:
Dalam contoh berikut, aturan analisis privasi diferensial dikueri pada
tampilan yang disebut ExamView. Data yang memiliki privasi diferensial
akan berhasil ditampilkan dari ExamView karena epsilon, delta,
dan max_groups_contributed semuanya memenuhi kondisi aturan analisis
diferensial di ExamView.
-- Query an analysis–rule enforced view called ExamView.
SELECT
WITH DIFFERENTIAL_PRIVACY
test_id,
AVG(test_score) AS average_test_score
FROM mydataset.ExamView
GROUP BY test_id;
-- Results will vary.
/*---------+--------------------*
| test_id | average_test_score |
+---------+--------------------+
| P91 | 512.627693163311 |
| C83 | 506.01565971561649 |
| U25 | 524.81202728847893 |
*---------+--------------------*/
Memblokir kueri dengan epsilon di luar batas
Epsilon dapat digunakan untuk menambahkan atau menghapus derau. Nilai epsilon yang lebih besar berarti lebih sedikit derau yang akan ditambahkan. Jika Anda ingin memastikan bahwa kueri pribadi diferensial memiliki
jumlah derau minimal, perhatikan baik-baik nilai untuk
max_epsilon_per_query dalam aturan analisis privasi diferensial Anda.
Contoh:
Dalam kueri berikut, kueri diblokir dengan error karena
epsilon dalam klausa DIFFERENTIAL_PRIVACY lebih tinggi daripada
max_epsilon_per_query dalam ExamView:
-- Create a view that includes a table called ExamTable.
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"differential_privacy_policy": {"privacy_unit_column": "last_name", "max_epsilon_per_query": 10.01, "epsilon_budget": 1000.0, "delta_per_query": 0.01, "delta_budget": 0.1, "max_groups_contributed": 2}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- NOTE: Delta and epsilon parameters are set very high due to the small
-- dataset. In practice, these should be much smaller.
Setelah membuat tampilan, tunggu sebentar, lalu jalankan kueri berikut:
-- Error: Epsilon is too high: 1e+20, policy for table mydataset.
-- ExamView allows max 10.01
SELECT
WITH DIFFERENTIAL_PRIVACY
OPTIONS(epsilon=1e20)
test_id,
AVG(test_score) AS average_test_score
FROM mydataset.ExamView
GROUP BY test_id;
Memblokir kueri yang telah melampaui anggaran epsilon
Epsilon dapat digunakan untuk menambahkan atau menghapus derau. Epsilon yang lebih kecil akan meningkatkan derau, sedangkan epsilon yang lebih besar akan mengurangi derau. Meskipun noise tinggi, beberapa kueri pada data yang sama pada akhirnya dapat mengungkapkan versi data yang tidak memiliki noise. Untuk mencegah hal ini terjadi, Anda dapat membuat anggaran epsilon. Jika Anda ingin menambahkan anggaran epsilon, tinjau nilai untuk epsilon_budget dalam aturan analisis privasi diferensial untuk tampilan Anda.
Contoh:
Jalankan kueri berikut tiga kali. Pada ketiga kalinya, kueri diblokir karena total epsilon yang digunakan adalah 30, tetapi epsilon_budget di ExamView hanya mengizinkan 25.6:
-- Create a view that includes a table called ExamTable.
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"differential_privacy_policy": {"privacy_unit_column": "last_name", "max_epsilon_per_query": 10.01, "epsilon_budget": 25.6, "delta_per_query": 0.01, "delta_budget": 0.1, "max_groups_contributed": 2}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- NOTE: Delta and epsilon parameters are set very high due to the small
-- dataset. In practice, these should be much smaller.
Setelah membuat tampilan, tunggu sebentar, lalu jalankan kueri berikut tiga kali:
-- Error after three query runs: Privacy budget is not sufficient for
-- table 'mydataset.ExamView' in this query.
SELECT
WITH DIFFERENTIAL_PRIVACY
OPTIONS(epsilon=10)
test_id,
AVG(test_score) AS average_test_score
FROM mydataset.ExamView
GROUP BY test_id;
Mencantumkan aturan analisis tumpang-tindih
Hanya baris yang tumpang-tindih yang dapat dikueri setelah operasi gabungan, yang sesuai dengan aturan tumpang-tindih daftar. Anda dapat menerapkan aturan ini pada tampilan, menggunakan pernyataan DDL atau ruang bersih data.
Tampilan yang menyertakan aturan analisis ini hanya boleh menyertakan kebijakan pembatasan gabungan.
Menentukan aturan analisis tumpang-tindih daftar untuk tampilan
Anda dapat menentukan aturan analisis tumpang-tindih daftar untuk tampilan di
ruang bersih data atau dengan pernyataan
CREATE VIEW:
CREATE OR REPLACE VIEW VIEW_NAME OPTIONS ( privacy_policy= '''{ "join_restriction_policy": { "join_condition": "JOIN_CONDITION", "join_allowed_columns": JOIN_ALLOWED_COLUMNS } }''' ) AS QUERY;
Definisi:
join_restriction_policy: Kebijakan pembatasan gabungan untuk aturan analisis tumpang-tindih daftar.JOIN_CONDITION: Jenis tumpang-tindih daftar yang akan diterapkan pada tampilan. Ini dapat berupa salah satu dari nilai berikut ini:
JOIN_ALL: Semua kolom dijoin_allowed_columnsharus digabungkan secara dalam agar tampilan ini dapat dikueri.JOIN_ANY: Setidaknya satu kolom dijoin_allowed_columnsharus digabungkan agar tabel virtual ini dapat dikueri.
JOIN_ALLOWED_COLUMNS: Kolom yang dapat menjadi bagian dari operasi gabungan.
QUERY: Kueri untuk tabel virtual.
Contoh:
Dalam contoh berikut, aturan analisis tumpang-tindih daftar dibuat di
tampilan bernama ExamView. ExamView mereferensikan tabel bernama
ExamTable:
-- Create a view that includes a table called ExamTable.
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"join_restriction_policy": {"join_condition": "JOIN_ANY", "join_allowed_columns": ["test_id", "test_score"]}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
Memperbarui aturan analisis tumpang-tindih daftar untuk tampilan
Anda dapat mengubah aturan analisis tumpang-tindih daftar untuk tampilan dengan
ruang bersih data atau dengan pernyataan
ALTER VIEW:
ALTER VIEW VIEW_NAME SET OPTIONS ( privacy_policy= '''{ "join_restriction_policy": { "join_condition": "JOIN_CONDITION", "join_allowed_columns": JOIN_ALLOWED_COLUMNS } }''' )
Untuk mengetahui informasi selengkapnya tentang nilai yang dapat Anda tetapkan untuk kebijakan privasi dalam sintaksis sebelumnya, lihat Menentukan aturan analisis tumpang-tindih daftar untuk tabel virtual.
Contoh:
Dalam contoh berikut, aturan analisis tumpang-tindih daftar diperbarui
pada tampilan bernama ExamView.
ALTER VIEW mydataset.ExamView
SET OPTIONS(
privacy_policy= '{"join_restriction_policy": {"join_condition": "JOIN_ALL", "join_allowed_columns": ["test_id", "test_score"]}}'
);
Guna meninjau sintaksis privacy_policy untuk ALTER VIEW, lihat daftar OPTIONS di ALTER VIEW SET OPTIONS.
Membuat kueri tampilan yang menerapkan aturan analisis tumpang-tindih daftar
Anda dapat melakukan operasi gabungan pada tampilan yang memiliki aturan analisis tumpang-tindih daftar.
Untuk meninjau sintaksis operasi JOIN, lihat
Operasi penggabungan.
Memblokir operasi penggabungan tanpa tumpang-tindih
Anda dapat memblokir operasi gabungan jika tidak menyertakan setidaknya satu tumpang-tindih dengan kolom wajib diisi.
Contoh:
Dalam kueri berikut, tampilan bernama ExamView
digabungkan dengan tabel bernama StudentTable. Karena
tampilan berisi aturan analisis tumpang-tindih daftar JOIN_ANY, setidaknya
satu baris yang tumpang-tindih dari ExamView dan StudentTable diperlukan. Karena
ada setidaknya satu tumpang-tindih, kueri berhasil dijalankan.
-- Create a view that includes a table called ExamTable.
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"join_restriction_policy": {"join_condition": "JOIN_ANY", "join_allowed_columns": ["test_score", "last_name"]}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query a view called ExamView and a table called StudentTable.
SELECT *
FROM mydataset.ExamView INNER JOIN mydataset.StudentTable USING (test_score);
/*------------+-----------+---------+-------------*
| test_score | last_name | test_id | last_name_1 |
+------------+-----------+---------+-------------+
| 490 | Ivanov | U25 | Ivanov |
| 500 | Wang | U25 | Wang |
| 510 | Hansen | P91 | Hansen |
| 550 | Silva | U25 | Silva |
| 580 | Devi | U25 | Devi |
*------------+-----------+---------+-------------*/
Memblokir operasi gabungan dalam tanpa tumpang-tindih seluruhnya
Anda dapat memblokir operasi gabungan jika tidak menyertakan tumpang-tindih dengan semua kolom yang diperlukan.
Contoh:
Dalam contoh berikut, operasi gabungan dicoba pada tampilan bernama
ExamView dan tabel bernama
StudentTable, tetapi kueri gagal. Kegagalan terjadi karena aturan analisis tumpang-tindih daftar ExamView memerlukan penggabungan pada semua kolom yang ada dalam kebijakan pembatasan gabungan. Karena tabel yang disebut
StudentTable tidak berisi kolom
ini, tidak semua baris tumpang-tindih dan error akan terjadi.
-- Create a view that includes ExamTable.
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"join_restriction_policy": {"join_condition": "JOIN_ALL", "join_allowed_columns": ["test_score", "last_name"]}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query error: Joining must occur on all of the following columns
-- [test_score, last_name] on table mydataset.ExamView.
SELECT *
FROM mydataset.ExamView INNER JOIN mydataset.StudentTable USING (last_name);
Menggunakan kebijakan batasan bergabung dengan kebijakan lain
Kebijakan pembatasan gabungan dapat digunakan dengan kebijakan lain dalam aturan analisis nilai minimum agregasi dan privasi diferensial. Namun, setelah Anda menggunakan kebijakan pembatasan gabungan dengan kebijakan lain, Anda tidak dapat mengubah kebijakan lain tersebut setelahnya.
Contoh:
Dalam contoh berikut, kebijakan pembatasan gabungan digunakan dalam aturan analisis nilai minimum agregasi:
-- Create a view that includes a table called ExamTable.
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"aggregation_threshold_policy":{"threshold": 3, "privacy_unit_column": "last_name"}, "join_restriction_policy": {"join_condition": "JOIN_ANY", "join_allowed_columns": ["test_id", "test_score"]}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
Memblokir operasi gabungan tanpa kolom wajib diisi
Anda dapat memblokir operasi gabung jika tidak menyertakan setidaknya satu kolom wajib diisi. Untuk melakukannya, sertakan bagian berikut dalam aturan analisis tumpang-tindih daftar Anda:
"join_restriction_policy": { "join_condition": "JOIN_ANY", "join_allowed_columns": ["column_name", ...] }
Contoh:
Dalam kueri berikut, kueri diblokir dengan error karena
kueri tidak berisi operasi gabungan pada kolom test_score atau
test_id di ExamView dan
StudentTable:
-- Create a view that includes a table called ExamTable.
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"aggregation_threshold_policy": {"threshold": 3, "privacy_unit_column": "last_name"}, "join_restriction_policy": {"join_condition": "JOIN_ANY", "join_allowed_columns": ["test_score", "test_id"]}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query error: Joining must occur on at least one of the following columns
-- [test_score, test_id] on table mydataset.ExamView.
SELECT *
FROM mydataset.ExamView INNER JOIN mydataset.StudentTable USING (last_name);
Agar kueri sebelumnya dapat dijalankan, di klausa USING, ganti last_name
dengan test_score.
Memblokir kueri tanpa operasi gabungan
Jika kueri harus memiliki operasi gabungan, Anda dapat memblokir kueri jika tidak ada operasi gabungan dengan menggunakan salah satu aturan analisis tumpang-tindih daftar berikut:
"join_restriction_policy": { "join_condition": "JOIN_NOT_REQUIRED" }
"join_restriction_policy": { "join_condition": "JOIN_NOT_REQUIRED", "join_allowed_columns": [] }
Contoh:
Dalam kueri berikut, kueri diblokir karena tidak ada
operasi gabungan dengan ExamView dalam kueri:
-- Create a view that includes a table called ExamTable.
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"aggregation_threshold_policy": {"threshold": 3, "privacy_unit_column": "last_name"}, "join_restriction_policy": {"join_condition": "JOIN_NOT_REQUIRED"}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query error: At least one allowed column must be specified with
-- join_condition = 'JOIN_NOT_REQUIRED'.
SELECT *
FROM mydataset.ExamView;
Memblokir kueri tanpa operasi gabungan dan tanpa kolom wajib diisi
Jika kueri harus memiliki operasi gabungan dan operasi gabungan harus memiliki setidaknya satu kolom yang diperlukan, sertakan bagian berikut dalam aturan analisis tumpang-tindih daftar Anda:
"join_restriction_policy": { "join_condition": "JOIN_NOT_REQUIRED", "join_allowed_columns": ["column_name", ...] }
Contoh:
Dalam kueri berikut, kueri diblokir karena operasi
penggabungan tidak menyertakan kolom dalam array
ExamView join_allowed_columns:
-- Create a view that includes a table called ExamTable.
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"aggregation_threshold_policy": {"threshold": 3, "privacy_unit_column": "last_name"}, "join_restriction_policy": {"join_condition": "JOIN_NOT_REQUIRED", "join_allowed_columns": ["test_score"]}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query error: Join occurring on a restricted column.
SELECT *
FROM mydataset.ExamView INNER JOIN mydataset.StudentTable USING (last_name);
Agar kueri sebelumnya dapat dijalankan, di klausa USING, ganti last_name
dengan test_score.
Memblokir semua operasi gabung
Anda dapat memblokir semua operasi gabung. Untuk melakukannya, hanya sertakan bagian berikut dalam aturan analisis tumpang-tindih daftar Anda:
"join_restriction_policy": { "join_condition": "JOIN_BLOCKED", }
Contoh:
Dalam kueri berikut, kueri diblokir karena ada operasi
penggabungan dengan tampilan yang disebut ExamView:
-- Create a view that includes a table called ExamTable.
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"aggregation_threshold_policy": {"threshold": 3, "privacy_unit_column": "last_name"}, "join_restriction_policy": {"join_condition": "JOIN_BLOCKED"}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query error: Join occurring on a restricted column.
SELECT *
FROM mydataset.ExamView INNER JOIN mydataset.StudentTable USING (last_name);
Agar kueri sebelumnya dapat dijalankan, hapus operasi INNER JOIN.
Memblokir operasi inner join tanpa semua kolom yang diperlukan
Anda dapat memblokir operasi inner join jika tidak menyertakan semua kolom yang diperlukan. Untuk melakukannya, sertakan bagian berikut dalam aturan analisis tumpang-tindih daftar Anda:
"join_restriction_policy": { "join_condition": "JOIN_ALL", "join_allowed_columns": ["column_name", ...] }
Contoh:
Dalam kueri berikut, kueri diblokir dengan error karena
kueri tidak menyertakan test_score dalam operasi gabungan dengan
tampilan yang disebut ExamView:
-- Create a view that includes a table called ExamTable.
CREATE OR REPLACE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"aggregation_threshold_policy": {"threshold": 3, "privacy_unit_column": "last_name"}, "join_restriction_policy": {"join_condition": "JOIN_ALL", "join_allowed_columns": ["test_score", "last_name"]}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query error: Joining must occur on all of the following columns
-- [test_score, last_name] on table mydataset.ExamView.
SELECT *
FROM mydataset.ExamView INNER JOIN mydataset.StudentTable USING (last_name);
Agar kueri sebelumnya dapat dijalankan, ganti USING (last_name)
dengan USING (last_name, test_score).
Contoh tabel
Beberapa contoh dalam dokumen ini mereferensikan dua tabel yang disebut ExamTable dan
StudentTable. ExamTable berisi daftar skor tes yang dihasilkan oleh siswa
dan StudentTable berisi daftar siswa dan skor tes mereka.
Untuk menguji contoh dalam dokumen ini, tambahkan terlebih dahulu tabel contoh berikut ke project Anda:
-- Create a table called ExamTable.
CREATE OR REPLACE TABLE mydataset.ExamTable AS (
SELECT "Hansen" AS last_name, "P91" AS test_id, 510 AS test_score UNION ALL
SELECT "Wang", "U25", 500 UNION ALL
SELECT "Wang", "C83", 520 UNION ALL
SELECT "Wang", "U25", 460 UNION ALL
SELECT "Hansen", "C83", 420 UNION ALL
SELECT "Hansen", "C83", 560 UNION ALL
SELECT "Devi", "U25", 580 UNION ALL
SELECT "Devi", "P91", 480 UNION ALL
SELECT "Ivanov", "U25", 490 UNION ALL
SELECT "Ivanov", "P91", 540 UNION ALL
SELECT "Silva", "U25", 550);
-- Create a table called StudentTable.
CREATE OR REPLACE TABLE mydataset.StudentTable AS (
SELECT "Hansen" AS last_name, 510 AS test_score UNION ALL
SELECT "Wang", 500 UNION ALL
SELECT "Devi", 580 UNION ALL
SELECT "Ivanov", 490 UNION ALL
SELECT "Silva", 550);
Batasan
Aturan analisis memiliki batasan berikut:
- Jika telah menambahkan aturan analisis ke tampilan, Anda tidak dapat beralih antara aturan analisis nilai minimum penggabungan dan aturan analisis privasi diferensial.
Aturan analisis nilai minimum agregasi memiliki batasan berikut:
- Anda hanya dapat menggunakan fungsi agregat yang didukung dalam kueri di tabel virtual yang menerapkan aturan analisis nilai minimum agregasi.
- Anda tidak dapat menambahkan aturan analisis nilai minimum agregasi ke tampilan terwujud.
- Jika Anda menggunakan tabel virtual yang menerapkan aturan analisis nilai minimum agregasi dalam kueri nilai minimum agregasi, keduanya harus memiliki nilai yang sama untuk kolom unit privasi.
- Jika Anda menggunakan tampilan yang menerapkan aturan analisis nilai minimum agregasi dalam kueri nilai minimum agregasi, nilai minimum dalam kueri harus lebih besar dari atau sama dengan nilai minimum dalam tampilan.
- Time travel dinonaktifkan di tampilan yang memiliki aturan analisis nilai minimum agregasi.
Aturan analisis privasi diferensial memiliki batasan berikut:
- Setelah anggaran privasi habis untuk suatu tampilan, tampilan tersebut tidak dapat digunakan dan Anda harus membuat tampilan baru.
Aturan analisis tumpang-tindih daftar memiliki batasan berikut:
- Jika Anda menggabungkan aturan analisis nilai minimum penggabungan atau aturan analisis privasi diferensial dengan aturan analisis tumpang-tindih daftar dan Anda tidak menempatkan
privacy_unit_columnsebagaijoin_allowed_columndalam aturan analisis tumpang-tindih daftar, Anda mungkin tidak dapat menggabungkan kolom apa pun dalam situasi tertentu.
Harga
- Tidak ada biaya tambahan untuk melampirkan aturan analisis ke tampilan.
- Harga BigQuery standar untuk analisis berlaku.