Dokumen ini memberikan informasi umum tentang aturan analisis di GoogleSQL untuk BigQuery.
Apa itu aturan analisis?
Aturan analisis memberlakukan suatu kondisi untuk berbagi data. Dengan BigQuery, Anda dapat menerapkan aturan analisis pada tampilan, menggunakan ruang bersih data, atau dengan menerapkan aturan analisis langsung ke tampilan tersebut. Saat menerapkan aturan analisis, Anda menerapkan bahwa setiap orang yang membuat kueri tampilan tersebut harus mematuhi aturan analisis tersebut pada tampilan. Jika aturan analisis terpenuhi, kueri akan menghasilkan output yang memenuhi aturan analisis. Jika kueri tidak memenuhi aturan analisis, error akan terjadi.
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, atau ruang bersih data.
- 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, atau ruang bersih data.
- Aturan analisis batasan join: Membatasi jenis join yang dapat digunakan dengan kolom tertentu. Gabungan tidak perlu ada dalam kueri dan kolom tertentu dapat diblokir. Dapat disertakan dengan aturan analisis nilai minimum agregasi atau aturan analisis privasi diferensial. Anda dapat menerapkan aturan ini pada tampilan, menggunakan pernyataan, atau ruang bersih data.
- Daftar aturan analisis tumpang-tindih: Mirip dengan aturan analisis batasan join, tetapi tidak dapat digunakan dengan aturan analisis lainnya. Anda dapat menerapkan aturan ini pada tampilan, menggunakan ruang pembersihan data.
Aturan analisis nilai minimum agregasi
Aturan analisis nilai minimum agregasi menerapkan jumlah minimum entity berbeda yang harus ada dalam set data, sehingga statistik pada set data tersebut disertakan dalam hasil kueri.
Jika diterapkan, aturan analisis nilai minimum agregasi akan mengelompokkan data di seluruh 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 juga dapat menyertakan aturan analisis batasan join.
Menentukan aturan analisis nilai minimum agregasi untuk tampilan
Anda dapat menentukan aturan analisis nilai minimum agregasi untuk tampilan dalam ruang bersih data atau dengan pernyataan berikut:
CREATE OR REPLACE VIEW VIEW_NAME OPTIONS ( privacy_policy= '{ "aggregation_threshold_policy": { "threshold" : THRESHOLD, "privacy_unit_column": "PRIVACY_UNIT_COLUMN" } }' ) AS QUERY;
Ganti nilai berikut:
- VIEW_NAME: Jalur dan nama tabel virtual.
- THRESHOLD: Jumlah minimum unit privasi berbeda yang harus berkontribusi pada setiap baris dalam hasil kueri. Jika baris potensial tidak memenuhi batas 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.
QUERY: Kueri untuk tabel virtual.
Dalam contoh berikut, aturan analisis nilai minimum agregasi dibuat:
-- Create a table called ExamTable.
CREATE 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 view that includes ExamTable.
CREATE 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 berikut:
ALTER VIEW VIEW_NAME SET OPTIONS ( privacy_policy= '{ "aggregation_threshold_policy": { "threshold" : THRESHOLD, "privacy_unit_column": "PRIVACY_UNIT_COLUMN" } }' )
Ganti nilai berikut:
- VIEW_NAME: Jalur dan nama tabel virtual.
- THRESHOLD: Jumlah minimum unit privasi berbeda yang harus berkontribusi pada setiap baris dalam hasil kueri. Jika baris potensial tidak memenuhi batas 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.
Pada contoh berikut, aturan analisis nilai minimum agregasi diperbarui:
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
.
Mengkueri tampilan yang diterapkan 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 aturan analisis dalam kueri ini.
Pada contoh berikut, tampilan dengan aturan analisis nilai minimum agregasi dikueri:
-- Create a table called ExamTable.
CREATE 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 view that includes ExamTable.
CREATE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"aggregation_threshold_policy": {"threshold": 3, "privacy_unit_column": "last_name"}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query an analysis–rule enforced view called 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 |
*---------+---------------*/
Untuk meninjau contoh tambahan terkait 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 jika data dilindungi dengan privasi diferensial. Anggaran privasi mencegah pelanggan membuat kueri data bersama saat jumlah semua epsilon atau delta kueri mencapai total epsilon atau total nilai delta. Anda dapat menggunakan aturan analisis ini dalam tampilan. Tampilan yang menyertakan aturan analisis ini juga dapat menyertakan aturan analisis batasan join.
Menentukan aturan analisis privasi diferensial untuk tampilan
Anda dapat menentukan aturan analisis privasi diferensial untuk tampilan dalam ruang bersih data atau dengan pernyataan berikut:
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 } }' ) AS QUERY;
Ganti nilai berikut:
- PRIVACY_UNIT_COLUMN: Kolom yang mengidentifikasi entity dalam set data yang dilindungi menggunakan aturan analisis privasi. Nilai ini berupa string JSON.
- MAX_EPSILON_PER_QUERY: Menentukan kekuatan jaminan privasi per kueri dan mencegah total epsilon dijangkau oleh satu kueri. Nilai ini adalah nomor JSON dari
0.001
hingga1e+15
. - EPSILON_BUDGET: Anggaran epsilon yang
menunjukkan keunggulan dari jaminan privasi secara keseluruhan. Ini
digunakan secara total untuk semua kueri pribadi diferensial pada tampilan.
Nilai ini harus lebih besar dari
MAX_EPSILON_PER_QUERY
, dan merupakan nomor JSON dari0.001
sampai1e+15
. - DELTA_PER_QUERY: Probabilitas maksimum kehilangan privasi per
kueri di luar jaminan yang ditentukan oleh total epsilon. Mencegah total delta tidak tercapai oleh satu kueri.
Nilai ini adalah nomor JSON dari
1e-15
sampai1
. - DELTA_BUDGET: Anggaran delta, yang mewakili
probabilitas maksimum kehilangan privasi secara keseluruhan di luar jaminan
yang ditentukan oleh total epsilon. Ini digunakan secara total untuk semua
kueri pribadi diferensial pada tampilan. Nilai ini harus lebih besar dari
DELTA_PER_QUERY
, dan merupakan nomor JSON dari1e-15
sampai1000
. - 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.
- QUERY: Kueri untuk tabel virtual.
Pada contoh berikut, aturan analisis privasi diferensial dibuat:
-- Create a table called ExamTable.
CREATE 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 view that includes ExamTable.
CREATE 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": 1000.0, "max_groups_contributed": 2}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Epsilon parameters are set very high due to the small dataset.
-- In practice, epsilon should be much smaller.
Guna meninjau sintaksis privacy_policy
untuk CREATE VIEW
, lihat daftar OPTIONS
di CREATE VIEW
.
Memperbarui aturan analisis privasi diferensial untuk tampilan
Anda dapat mengubah aturan analisis privasi diferensial untuk tampilan di data clean room atau dengan pernyataan berikut:
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 } }' )
Ganti nilai berikut:
- PRIVACY_UNIT_COLUMN: Kolom yang mengidentifikasi entity dalam set data yang dilindungi menggunakan aturan analisis privasi. Nilai ini berupa string JSON.
- MAX_EPSILON_PER_QUERY: Menentukan kekuatan jaminan privasi per kueri dan mencegah total epsilon dijangkau oleh satu kueri. Nilai ini adalah nomor JSON dari
0.001
hingga1e+15
. - EPSILON_BUDGET: Anggaran epsilon yang
menunjukkan keunggulan dari jaminan privasi secara keseluruhan. Ini
digunakan secara total untuk semua kueri pribadi diferensial pada tampilan.
Nilai ini harus lebih besar dari
MAX_EPSILON_PER_QUERY
, dan merupakan nomor JSON dari0.001
sampai1e+15
. - DELTA_PER_QUERY: Probabilitas maksimum kehilangan privasi per
kueri di luar jaminan yang ditentukan oleh total epsilon. Mencegah total delta tidak tercapai oleh satu kueri.
Nilai ini adalah nomor JSON dari
1e-15
sampai1
. - DELTA_BUDGET: Anggaran delta, yang mewakili
probabilitas maksimum kehilangan privasi secara keseluruhan di luar jaminan
yang ditentukan oleh total epsilon. Ini digunakan secara total untuk semua
kueri pribadi diferensial pada tampilan. Nilai ini harus lebih besar dari
DELTA_PER_QUERY
, dan merupakan nomor JSON dari1e-15
sampai1000
. - 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.
Pada contoh berikut, aturan analisis privasi diferensial diperbarui:
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.005, "delta_budget": 1000.0, "max_groups_contributed": 2}}'
);
-- Epsilon parameters are set very high due to the small dataset.
-- In practice, epsilon should be much smaller.
Guna meninjau sintaksis privacy_policy
untuk ALTER VIEW
, lihat daftar OPTIONS
di ALTER VIEW SET OPTIONS
.
Mengkueri tampilan yang diterapkan aturan analisis privasi diferensial
Anda dapat membuat kueri tampilan yang memiliki aturan analisis privasi diferensial dengan
klausa DIFFERENTIAL_PRIVACY
. Untuk meninjau sintaksis dan contoh tambahan
untuk klausa DIFFERENTIAL_PRIVACY
, lihat
klausa DIFFERENTIAL_PRIVACY
.
Pastikan kueri pribadi diferensial berjalan
Buat kueri pribadi diferensial untuk tampilan yang diterapkan aturan analisis, dan pastikan kueri tersebut berjalan.
Misalnya, dalam kueri berikut, data pribadi diferensial
berhasil ditampilkan dari ExamView
karena epsilon
, delta
, dan
max_groups_contributed
semuanya memenuhi kondisi aturan analisis
diferensial dalam ExamView
:
-- Create a table called ExamTable.
CREATE 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 view that includes ExamTable.
CREATE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"differential_privacy_policy": {"privacy_unit_column": "last_name", "max_epsilon_per_query": 1000.01, "epsilon_budget": 1000.0, "delta_per_query": 0.01, "delta_budget": 1000.0, "max_groups_contributed": 2}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
Setelah Anda membuat tampilan, tunggu sebentar, lalu jika Anda yakin tampilan telah dibuat, jalankan kueri berikut:
-- Query an analysis–rule enforced view called ExamView.
SELECT
WITH DIFFERENTIAL_PRIVACY
OPTIONS(epsilon=10, delta=.01, max_groups_contributed=2, privacy_unit_column=last_name)
test_id,
AVG(test_score, contribution_bounds_per_group => (0,100)) AS average_test_score
FROM mydataset.ExamView
GROUP BY test_id;
-- These results will change each time you run the query.
-- Smaller aggregations might be removed.
/*---------+--------------------*
| test_id | average_test_score |
+---------+--------------------+
| P91 | ??? |
| U25 | ??? |
*---------+--------------------*/
-- Epsilon parameters are set very high due to the small dataset.
-- In practice, epsilon should be much smaller.
Memblokir kueri dengan epsilon yang tidak sesuai batas
Epsilon dapat digunakan untuk menambahkan atau menghilangkan derau. Lebih banyak epsilon berarti lebih sedikit noise yang ditambahkan. Jika Anda ingin memastikan bahwa kueri pribadi diferensial memiliki
jumlah derau minimal, perhatikan dengan cermat nilai
max_epsilon_per_query
dalam aturan analisis privasi diferensial Anda.
Misalnya, dalam kueri berikut, kueri diblokir dengan error karena epsilon
dalam klausa DIFFERENTIAL_PRIVACY
lebih tinggi dari max_epsilon_per_query
dalam ExamView
:
-- Create a table called ExamTable.
CREATE 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 view that includes ExamTable.
CREATE 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": 1000.0, "max_groups_contributed": 2}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
Setelah Anda membuat tampilan, tunggu sebentar, lalu jalankan kueri berikut:
-- Error: epsilon is out of bounds.
SELECT
WITH DIFFERENTIAL_PRIVACY
OPTIONS(epsilon=1e20, delta=.01, max_groups_contributed=2, privacy_unit_column=last_name)
test_id,
AVG(test_score, contribution_bounds_per_group => (0,100)) AS average_test_score
FROM mydataset.ExamView
GROUP BY test_id;
-- Epsilon parameters are set very high due to the small dataset.
-- In practice, epsilon should be much smaller.
Memblokir kueri yang tidak memiliki jumlah delta tertentu
Delta mewakili nilai minimum yang menentukan apakah data mungkin bocor
secara tidak sengaja. Semakin sedikit delta menaikkan nilai minimum, semakin banyak delta yang menurunkan batas. Untuk memastikan kueri pribadi diferensial memiliki batas tertentu, perbarui setelan delta_per_query
dalam aturan analisis privasi diferensial Anda.
Misalnya, dalam kueri berikut, kueri diblokir dengan error karena delta
dalam klausa DIFFERENTIAL_PRIVACY
tidak cocok dengan delta_per_query
di ExamView
:
-- Create a table called ExamTable.
CREATE 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 view that includes ExamTable.
CREATE 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": 1000.0, "max_groups_contributed": 2}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
Setelah Anda membuat tampilan, tunggu sebentar, lalu jalankan kueri berikut:
-- Error: delta in query does not match delta_per_query.
SELECT
WITH DIFFERENTIAL_PRIVACY
OPTIONS(epsilon=10, delta=.02, max_groups_contributed=2, privacy_unit_column=last_name)
test_id,
AVG(test_score, contribution_bounds_per_group => (0,100)) AS average_test_score
FROM mydataset.ExamView
GROUP BY test_id;
-- Epsilon parameters are set very high due to the small dataset.
-- In practice, epsilon should be much smaller.
Blokir kueri yang telah melampaui anggaran epsilon
Epsilon dapat digunakan untuk menambahkan atau menghilangkan derau. Semakin sedikit epsilon mengurangi kebisingan,
semakin banyak epsilon mengurangi kebisingan. Meskipun derau tinggi, beberapa kueri atas data yang sama pada akhirnya dapat menampilkan versi data yang tidak memiliki derau. Untuk menghentikan hal ini, Anda dapat membuat anggaran epsilon. Jika Anda ingin menambahkan
anggaran epsilon, tinjau nilai untuk epsilon_budget
dalam
aturan analisis privasi diferensial untuk tampilan Anda.
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 table called ExamTable.
CREATE 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 view that includes ExamTable.
CREATE 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": 1000.0, "max_groups_contributed": 2}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
Setelah Anda membuat tampilan, tunggu sebentar, lalu jalankan kueri berikut tiga kali:
-- Error after three query runs: epsilon budget exceeded
SELECT
WITH DIFFERENTIAL_PRIVACY
OPTIONS(epsilon=10, delta=.01, max_groups_contributed=2, privacy_unit_column=last_name)
test_id,
AVG(test_score, contribution_bounds_per_group => (0,100)) AS average_test_score
FROM mydataset.ExamView
GROUP BY test_id;
-- Epsilon parameters are set very high due to the small dataset.
-- In practice, epsilon should be much smaller.
Blokir kueri yang telah melebihi anggaran delta
Delta mewakili nilai minimum yang menentukan apakah data mungkin bocor
secara tidak sengaja. Semakin sedikit delta menaikkan nilai minimum, semakin banyak delta yang menurunkan batas. Meskipun batasnya tinggi, beberapa kueri atas data yang sama pada akhirnya dapat mengungkap data pribadi diferensial. Agar hal ini tidak terjadi, Anda dapat membuat anggaran delta. Jika Anda ingin menambahkan
anggaran delta, tinjau nilai untuk delta_budget
dalam
aturan analisis privasi diferensial untuk tampilan Anda.
Jalankan kueri berikut tujuh kali. Pada kali ketujuh, kueri diblokir
karena total delta yang digunakan adalah 0.7
, tetapi delta_budget
di ExamView
hanya mengizinkan 0.6
:
-- Create a table called ExamTable.
CREATE 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 view that includes ExamTable.
CREATE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"differential_privacy_policy": {"privacy_unit_column": "last_name", "max_epsilon_per_query": 10.01, "epsilon_budget": 0.2, "delta_per_query": 0.01, "delta_budget": 0.6, "max_groups_contributed": 2}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
Setelah membuat tampilan, tunggu sebentar, lalu jalankan kueri berikut tujuh kali:
-- Error after seven query runs: epsilon budget exceeded
SELECT
WITH DIFFERENTIAL_PRIVACY
OPTIONS(epsilon=10, delta=.01, max_groups_contributed=2, privacy_unit_column=last_name)
test_id,
AVG(test_score, contribution_bounds_per_group => (0,100)) AS average_test_score
FROM mydataset.ExamView
GROUP BY test_id;
-- Epsilon parameters are set very high due to the small dataset.
-- In practice, epsilon should be much smaller.
Memblokir kueri yang memungkinkan terlalu banyak kontribusi grup
Anda dapat membatasi jumlah grup yang dapat dikontribusikan oleh setiap entity dalam
kueri pribadi diferensial. Jika Anda ingin memastikan bahwa kueri pribadi diferensial memiliki jumlah grup terbatas yang dapat dikontribusikan oleh setiap entity, perhatikan dengan cermat nilai untuk max_groups_contributed
dalam aturan analisis privasi diferensial Anda.
Misalnya, dalam kueri berikut, kueri diblokir dengan error karena max_groups_contributed
dalam klausa DIFFERENTIAL_PRIVACY
lebih tinggi dari max_groups_contributed
dalam ExamView
:
-- Create a table called ExamTable.
CREATE 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 view that includes ExamTable.
CREATE 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": 1000.0, "max_groups_contributed": 2}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
Setelah Anda membuat tampilan, tunggu sebentar, lalu jalankan kueri berikut:
-- Error: max_groups_contributed is out of bounds.
SELECT
WITH DIFFERENTIAL_PRIVACY
OPTIONS(epsilon=10, delta=.02, max_groups_contributed=3, privacy_unit_column=last_name)
test_id,
AVG(test_score, contribution_bounds_per_group => (0,100)) AS average_test_score
FROM mydataset.ExamView
GROUP BY test_id;
-- Epsilon parameters are set very high due to the small dataset.
-- In practice, epsilon should be much smaller.
Aturan analisis pembatasan bergabung
Aturan analisis batasan gabungan membatasi jenis gabungan yang dapat digunakan dengan kolom tertentu dalam tampilan. Anda dapat menggunakan aturan analisis ini dalam tampilan. Tampilan yang menyertakan aturan analisis ini juga dapat menyertakan aturan analisis nilai minimum agregasi atau aturan analisis privasi diferensial.
Menentukan aturan analisis batasan gabungan untuk tampilan
Anda dapat menentukan aturan analisis batasan gabungan untuk tampilan dalam ruang bersih data atau dengan pernyataan berikut.
CREATE OR REPLACE VIEW VIEW_NAME OPTIONS ( privacy_policy= '{ "join_restriction_policy": { "join_condition": "JOIN_CONDITION", "join_allowed_columns": JOIN_ALLOWED_COLUMNS } }' ) AS QUERY;
Ganti nilai berikut:
JOIN_CONDITION: Jenis batasan penggabungan yang akan diterapkan pada tampilan. Ini dapat berupa salah satu dari nilai berikut ini:
JOIN_NOT_REQUIRED
: Gabungan tidak diperlukan untuk membuat kueri tampilan ini. Jika join digunakan, hanya kolom dijoin_allowed_columns
yang dapat digunakan.JOIN_BLOCKED
: Tampilan ini tidak dapat digabungkan di kolom mana pun. Jangan tetapkanjoin_allowed_columns
dalam kasus ini.JOIN_ANY
: Setidaknya satu kolom dijoin_allowed_columns
harus digabungkan agar tampilan ini dapat dikueri.JOIN_ALL
: Semua 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.
Pada contoh berikut, aturan analisis batasan gabungan dibuat:
-- Create a table called ExamTable.
CREATE 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 view that includes ExamTable.
CREATE 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 );
Menggunakan aturan analisis batasan gabungan dengan aturan analisis lain
Anda dapat menggunakan aturan analisis batasan gabungan dengan aturan analisis nilai minimum agregasi atau aturan analisis privasi diferensial. Namun, setelah menggunakan batasan penggabungan dengan aturan analisis lain pada tampilan, Anda tidak dapat mengubah aturan analisis lainnya tersebut.
Dalam contoh berikut, aturan analisis batasan gabungan dan aturan analisis nilai minimum agregasi digunakan bersama:
-- Create a table called ExamTable.
CREATE 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 view that includes ExamTable.
CREATE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"join_restriction_policy": {"join_condition": "JOIN_ANY", "join_allowed_columns": ["test_id", "test_score"]}, "aggregation_threshold_policy": {"threshold": 3, "privacy_unit_column": "last_name"}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
Memperbarui aturan analisis batasan penggabungan untuk tampilan
Anda dapat mengubah aturan analisis batasan join untuk tampilan dengan data clean room atau dengan pernyataan berikut:
ALTER VIEW VIEW_NAME SET OPTIONS ( privacy_policy= '{ "join_restriction_policy": { "join_condition": "JOIN_CONDITION", "join_allowed_columns": JOIN_ALLOWED_COLUMNS } }' )
Ganti nilai berikut:
JOIN_CONDITION: Jenis batasan penggabungan yang akan diterapkan pada tampilan. Ini dapat berupa salah satu dari nilai berikut ini:
JOIN_NOT_REQUIRED
: Gabungan tidak diperlukan untuk membuat kueri tampilan ini. Jika join digunakan, hanya kolom dijoin_allowed_columns
yang dapat digunakan.JOIN_BLOCKED
: Tampilan ini tidak dapat digabungkan di kolom mana pun. Jangan tetapkanjoin_allowed_columns
dalam kasus ini.JOIN_ANY
: Setidaknya satu kolom dijoin_allowed_columns
harus digabungkan agar tampilan ini dapat dikueri.JOIN_ALL
: Semua 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.
Pada contoh berikut, aturan analisis batasan gabungan diperbarui:
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
.
Mengkueri tampilan yang diterapkan aturan analisis batasan gabungan
Anda dapat melakukan operasi gabungan pada tampilan yang memiliki
aturan analisis batasan join.
Untuk meninjau sintaksis operasi JOIN
, lihat Bergabung dengan operasi.
Memastikan bahwa kueri batasan gabungan berjalan
Anda harus menguji untuk memastikan bahwa kueri gabungan Anda yang dibatasi berjalan.
Misalnya, dalam kueri berikut, data yang digabungkan berhasil ditampilkan
dari ExamView
dan StudentTable
:
-- Create a table called ExamTable.
CREATE 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 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);
-- Create a view that includes ExamTable.
CREATE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"join_restriction_policy": {"join_condition": "JOIN_ANY", "join_allowed_columns": ["test_score"]}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query the ExamView view.
SELECT *
FROM mydataset.ExamView INNER JOIN mydataset.StudentTable USING (test_score)
GROUP BY test_id;
-- These results will change each time you run the query.
-- Smaller aggregations might be removed.
/*---------+--------------------*
| test_id | average_test_score |
+---------+--------------------+
| P91 | ??? |
| U25 | ??? |
*---------+--------------------*/
Memblokir operasi gabungan tanpa kolom wajib
Anda dapat memblokir operasi gabungan jika tidak menyertakan setidaknya satu kolom yang diperlukan. Untuk melakukannya, sertakan bagian berikut dalam aturan analisis pembatasan gabungan:
"join_restriction_policy": { "join_condition": "JOIN_ANY", "join_allowed_columns": ["column_name", ...] }
Misalnya, dalam kueri berikut, kueri diblokir dengan error karena kueri tidak berisi operasi gabungan apa pun pada kolom test_score
atau test_id
di ExamView
dan StudentTable
:
-- Create a table called ExamTable.
CREATE 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 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);
-- Create a view that includes ExamTable.
CREATE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"join_restriction_policy": {"join_condition": "JOIN_ANY", "join_allowed_columns": ["test_score", "test_id"]}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query the ExamView view.
SELECT *
FROM mydataset.ExamView INNER JOIN mydataset.StudentTable USING (last_name)
GROUP BY test_id;
Agar kueri sebelumnya berjalan, dalam klausa USING
, ganti last_name
dengan test_score
.
Memblokir kueri tanpa operasi gabungan
Jika kueri harus memiliki operasi gabungan, Anda dapat memblokir kueri tersebut jika tidak ada operasi gabungan dengan menggunakan salah satu aturan analisis pembatasan join berikut:
"join_restriction_policy": { "join_condition": "JOIN_NOT_REQUIRED" }
"join_restriction_policy": { "join_condition": "JOIN_NOT_REQUIRED", "join_allowed_columns": [] }
Misalnya, dalam kueri berikut, kueri diblokir karena tidak ada operasi gabungan dalam kueri:
-- Create a table called ExamTable.
CREATE 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 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);
-- Create a view that includes ExamTable.
CREATE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"join_restriction_policy": {"join_condition": "JOIN_NOT_REQUIRED"}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query the ExamView view.
SELECT *
FROM mydataset.ExamView
GROUP BY test_id;
Memblokir kueri tanpa operasi gabungan dan tanpa kolom wajib
Jika kueri harus memiliki operasi gabungan dan operasi gabungan harus memiliki setidaknya satu kolom yang diperlukan, sertakan bagian berikut dalam aturan analisis pembatasan gabungan Anda:
"join_restriction_policy": { "join_condition": "JOIN_NOT_REQUIRED", "join_allowed_columns": ["column_name", ...] }
Misalnya, dalam kueri berikut, kueri diblokir karena operasi join tidak menyertakan kolom dalam array join_allowed_columns
:
-- Create a table called ExamTable.
CREATE 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 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);
-- Create a view that includes ExamTable.
CREATE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"join_restriction_policy": {"join_condition": "JOIN_NOT_REQUIRED", "join_allowed_columns": ["test_score"]}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query the ExamView view.
SELECT *
FROM mydataset.ExamView INNER JOIN mydataset.StudentTable USING (last_name)
GROUP BY test_id;
Agar kueri sebelumnya berjalan, dalam klausa USING
, ganti last_name
dengan test_score
.
Memblokir semua operasi gabungan
Anda dapat memblokir semua operasi gabungan. Untuk melakukannya, hanya sertakan bagian berikut dalam aturan analisis batasan penggabungan:
"join_restriction_policy": { "join_condition": "JOIN_BLOCKED", }
Misalnya, dalam kueri berikut, kueri diblokir karena ada operasi join:
-- Create a table called ExamTable.
CREATE 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 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);
-- Create a view that includes ExamTable.
CREATE VIEW mydataset.ExamView
OPTIONS(
privacy_policy= '{"join_restriction_policy": {"join_condition": "JOIN_BLOCKED"}}'
)
AS ( SELECT * FROM mydataset.ExamTable );
-- Query the ExamView view.
SELECT *
FROM mydataset.ExamView INNER JOIN mydataset.StudentTable USING (last_name)
GROUP BY test_id;
Agar kueri sebelumnya berjalan, hapus operasi INNER JOIN
.
Memblokir operasi gabungan dalam tanpa semua kolom yang wajib diisi
Anda dapat memblokir operasi gabungan dalam jika tidak menyertakan semua kolom yang diperlukan. Untuk melakukannya, sertakan bagian berikut dalam aturan analisis pembatasan gabungan:
"join_restriction_policy": { "join_condition": "JOIN_ALL", "join_allowed_columns": ["column_name", ...] }
Misalnya, dalam kueri berikut, kueri diblokir dengan error karena kueri tidak menyertakan test_score
dalam operasi gabungan:
-- Create a table called ExamTable.
CREATE 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 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);
-- Create a view that includes ExamTable.
CREATE 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 the ExamView view.
SELECT *
FROM mydataset.ExamView INNER JOIN mydataset.StudentTable USING (last_name)
GROUP BY test_id;
Agar kueri sebelumnya berjalan, ganti USING (last_name)
dengan USING (last_name, test_score)
.
Mencantumkan aturan analisis tumpang-tindih
Membatasi jenis gabungan yang dapat digunakan dengan kolom tertentu. Gabungan harus ada dalam kueri dan kolom tertentu tidak dapat diblokir. Anda dapat menentukan dan memperbarui aturan analisis tumpang-tindih daftar untuk tampilan di ruang pembersihan data. Untuk informasi selengkapnya, lihat Berbagi data sensitif dengan ruang bersih data.
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 diferensial.
Aturan analisis nilai minimum agregasi memiliki batasan berikut:
- Anda hanya dapat menggunakan fungsi agregat yang didukung dalam kueri pada tampilan yang diterapkan aturan analisis nilai minimum agregasi.
- Anda tidak dapat menambahkan aturan analisis nilai minimum agregasi ke tampilan terwujud.
- Jika Anda menggunakan tampilan yang diterapkan 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 diterapkan 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.
- Perjalanan waktu dinonaktifkan di setiap tampilan yang memiliki aturan analisis nilai minimum agregasi.
Aturan analisis privasi diferensial memiliki batasan berikut:
- Setelah anggaran privasi habis untuk sebuah tampilan, tampilan tersebut tidak dapat digunakan dan Anda harus membuat tampilan baru.
Aturan analisis batasan gabungan memiliki batasan berikut:
- Jika Anda tidak menempatkan
privacy_unit_column
sebagaijoin_allowed_column
dalam aturan analisis batasan gabungan, 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 tampilan dengan aturan analisis dibatasi untuk penawaran non-edisi atau edisi Enterprise Plus.