Membatasi akses data menggunakan aturan analisis
Dokumen ini memberikan informasi umum tentang aturan analisis di GoogleSQL untuk BigQuery.
Apa yang dimaksud dengan aturan analisis?
Aturan analisis menerapkan kebijakan untuk berbagi data. Kebijakan mewakili kondisi yang perlu 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 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. 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 batasan penggabungan.
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 batasan penggabungan.
Aturan analisis tumpang-tindih daftar: Baris yang tumpang-tindih hanya dapat dikueri setelah operasi join, yang sesuai dengan aturan. Anda dapat menerapkan aturan ini pada tampilan, menggunakan pernyataan DDL atau ruang bersih data. Aturan ini mendukung kebijakan batasan join.
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 agregasi dan secara opsional dapat menyertakan kebijakan pembatasan join.
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 batasan join opsional untuk aturan analisis nilai minimum agregasi.JOIN_CONDITION: Jenis batasan join yang akan diterapkan pada tampilan. Ini dapat berupa salah satu dari nilai berikut ini:
JOIN_ALL
: Semua kolom dijoin_allowed_columns
harus dihubungkan secara dalam agar tampilan ini dapat dikueri.JOIN_ANY
: Setidaknya satu kolom dijoin_allowed_columns
harus digabungkan agar tampilan ini dapat dikueri.JOIN_BLOCKED
: Tampilan ini tidak dapat digabungkan di sepanjang kolom mana pun. Jangan tetapkanjoin_allowed_columns
dalam kasus ini.JOIN_NOT_REQUIRED
: Join tidak diperlukan untuk membuat kueri tampilan ini. Jika join digunakan, hanya kolom dijoin_allowed_columns
yang dapat digunakan.
JOIN_ALLOWED_COLUMNS: Kolom yang dapat menjadi bagian dari operasi join.
QUERY: Kueri untuk tabel virtual.
Contoh:
Dalam contoh berikut, aturan analisis nilai minimum agregasi dibuat di tampilan yang disebut 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 nilai minimum 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 informasi selengkapnya tentang nilai yang dapat Anda tetapkan untuk kebijakan privasi dalam sintaksis sebelumnya, lihat Menentukan aturan analisis nilai minimum agregasi untuk tampilan.
Contoh:
Pada contoh berikut, aturan analisis nilai minimum agregasi diperbarui
di 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 ini 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 di tampilan yang disebut 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 menyertakan kebijakan batasan penggabungan secara opsional. Untuk mempelajari cara menggunakan kebijakan batasan join dengan aturan analisis, lihat Kebijakan batasan join 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 saat jumlah semua epsilon atau delta kueri mencapai total epsilon atau nilai delta total. 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 join.
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.001
hingga1e+15
.EPSILON_BUDGET: Anggaran epsilon yang mewakili total epsilon yang dapat digunakan di semua kueri yang bersifat pribadi secara diferensial pada tampilan. Nilai ini harus lebih besar dari
MAX_EPSILON_PER_QUERY
, dan merupakan angka JSON dari0.001
hingga1e+15
.DELTA_PER_QUERY: Probabilitas bahwa baris apa pun dalam hasil gagal menjadi epsilon-differential private. Nilai ini adalah angka JSON dari
1e-15
hingga1
.DELTA_BUDGET: Anggaran delta, yang mewakili total delta yang dapat digunakan di semua kueri yang bersifat pribadi secara diferensial pada tampilan. Nilai ini harus lebih besar dari
DELTA_PER_QUERY
, dan merupakan angka JSON dari1e-15
hingga1000
.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 join opsional untuk aturan analisis privasi diferensial.JOIN_CONDITION: Jenis batasan join yang akan diterapkan pada tampilan. Ini dapat berupa salah satu dari nilai berikut ini:
JOIN_ALL
: Semua kolom dijoin_allowed_columns
harus dihubungkan secara dalam agar tampilan ini dapat dikueri.JOIN_ANY
: Setidaknya satu kolom dijoin_allowed_columns
harus digabungkan agar tampilan ini dapat dikueri.JOIN_BLOCKED
: Tampilan ini tidak dapat digabungkan di sepanjang kolom mana pun. Jangan tetapkanjoin_allowed_columns
dalam kasus ini.JOIN_NOT_REQUIRED
: Join tidak diperlukan untuk membuat kueri tampilan ini. Jika join digunakan, hanya kolom dijoin_allowed_columns
yang dapat digunakan.
JOIN_ALLOWED_COLUMNS: Kolom yang dapat menjadi bagian dari operasi join.
QUERY: Kueri untuk tabel virtual.
Contoh:
Dalam contoh berikut, aturan analisis privasi diferensial dibuat di tampilan yang disebut 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 informasi selengkapnya tentang nilai yang dapat Anda tetapkan untuk kebijakan privasi dalam sintaksis sebelumnya, lihat Menentukan aturan analisis privasi diferensial untuk tampilan.
Contoh:
Pada contoh berikut, aturan analisis privasi diferensial diperbarui
pada tampilan yang disebut 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 privasi diferensial
harus 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. Lebih banyak epsilon berarti lebih sedikit derau yang
akan ditambahkan. Jika Anda ingin memastikan bahwa kueri pribadi diferensial memiliki
jumlah derau minimal, perhatikan dengan cermat 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 dari
max_epsilon_per_query
di 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. Semakin sedikit epsilon, semakin banyak derau,
semakin banyak epsilon, semakin sedikit derau. Meskipun derau tinggi, beberapa kueri pada
data yang sama pada akhirnya dapat mengungkapkan versi data yang tidak berisi derau. 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 join, 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 join.
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 batasan penggabungan untuk aturan analisis tumpang-tindih daftar.JOIN_CONDITION: Jenis tumpang-tindih daftar untuk diterapkan pada tampilan. Ini dapat berupa salah satu dari nilai berikut ini:
JOIN_ALL
: Semua kolom dijoin_allowed_columns
harus dihubungkan secara dalam agar tampilan ini dapat dikueri.JOIN_ANY
: Setidaknya satu kolom dijoin_allowed_columns
harus digabungkan agar tampilan ini dapat dikueri.
JOIN_ALLOWED_COLUMNS: Kolom yang dapat menjadi bagian dari operasi join.
QUERY: Kueri untuk tabel virtual.
Contoh:
Dalam contoh berikut, aturan analisis tumpang-tindih daftar dibuat di
tampilan yang disebut 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 informasi selengkapnya tentang nilai yang dapat Anda tetapkan untuk kebijakan privasi dalam sintaksis sebelumnya, lihat Menentukan aturan analisis tumpang-tindih daftar untuk tampilan.
Contoh:
Pada contoh berikut, aturan analisis tumpang-tindih daftar diperbarui
di tampilan yang disebut 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 diberlakukan aturan analisis tumpang-tindih daftar
Anda dapat melakukan operasi join pada tampilan yang memiliki
aturan analisis tumpang-tindih daftar.
Untuk meninjau sintaksis operasi JOIN
, lihat
Operasi join.
Memblokir operasi join tanpa tumpang-tindih
Anda dapat memblokir operasi join jika tidak menyertakan setidaknya satu tumpang-tindih dengan kolom yang diperlukan.
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
setidaknya ada satu tumpang-tindih, kueri berhasil berjalan.
-- 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 join dalam tanpa seluruh tumpang-tindih
Anda dapat memblokir operasi join jika tidak menyertakan tumpang-tindih dengan semua kolom yang diperlukan.
Contoh:
Dalam contoh berikut, operasi join 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 batasan penggabungan. Karena tabel yang disebut
StudentTable
tidak berisi kolom
ini, tidak semua baris tumpang-tindih dan error akan dihasilkan.
-- 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 batasan penggabungan dapat digunakan dengan kebijakan lain dalam nilai minimum agregasi dan aturan analisis privasi diferensial. Namun, setelah menggunakan kebijakan batasan bergabung dengan kebijakan lain, Anda tidak dapat mengubah kebijakan lain tersebut setelahnya.
Contoh:
Pada contoh berikut, kebijakan batasan join 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 join tanpa kolom yang diperlukan
Anda dapat memblokir operasi join jika tidak menyertakan setidaknya satu kolom yang diperlukan. 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 join apa pun 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 berjalan, dalam klausa USING
, ganti last_name
dengan test_score
.
Memblokir kueri tanpa operasi join
Jika kueri harus memiliki operasi join, Anda dapat memblokir kueri jika tidak ada operasi join 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 join 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 join dan tanpa kolom wajib
Jika kueri harus memiliki operasi join dan operasi join 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 join tidak menyertakan kolom dalam array join_allowed_columns
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_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, dalam klausa USING
, ganti last_name
dengan test_score
.
Memblokir semua operasi join
Anda dapat memblokir semua operasi join. Untuk melakukannya, hanya sertakan bagian berikut dalam aturan analisis tumpang-tindih daftar:
"join_restriction_policy": { "join_condition": "JOIN_BLOCKED", }
Contoh:
Dalam kueri berikut, kueri diblokir karena ada
operasi join 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 berjalan, hapus operasi INNER JOIN
.
Memblokir operasi join dalam tanpa semua kolom yang diperlukan
Anda dapat memblokir operasi join dalam 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 join 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 berjalan, 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 nilai ujian yang dihasilkan oleh siswa
dan StudentTable
berisi daftar siswa beserta nilai ujian mereka.
Untuk menguji contoh dalam dokumen ini, tambahkan tabel contoh berikut ke project Anda terlebih dahulu:
-- 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 sudah menambahkan aturan analisis ke tampilan, Anda tidak dapat beralih antara aturan analisis nilai minimum agregasi dan aturan analisis privasi diferensial.
Aturan analisis nilai minimum agregasi memiliki batasan berikut:
- Anda hanya dapat menggunakan fungsi agregat yang didukung dalam kueri di tampilan 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 tabel virtual 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 tabel virtual.
- Perjalanan waktu dinonaktifkan pada semua 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 agregasi atau
aturan analisis privasi diferensial dengan aturan analisis tumpang-tindih daftar dan
tidak menempatkan
privacy_unit_column
sebagaijoin_allowed_column
dalam 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.
- Kueri pada tabel virtual dengan aturan analisis dibatasi untuk penawaran non-edisi atau edisi Enterprise Plus.