Limitare l'accesso ai dati utilizzando le regole di analisi
Questo documento fornisce informazioni generali sulle regole di analisi in GoogleSQL per BigQuery.
Che cos'è una regola di analisi?
Una regola di analisi applica i criteri per la condivisione dei dati. Un criterio rappresenta una condizione che deve essere soddisfatta prima che eseguire una query. Con BigQuery, puoi applicare in modo forzato una regola di analisi una vista, utilizzando una data clean room o applicando la regola di analisi direttamente alla vista. Quando applichi una di analisi, si impone che tutti coloro che eseguono query su quella vista devono rispettare la di analisi nella vista. Se la regola di analisi è soddisfatta, la query genera che soddisfi la regola di analisi. Se la query non soddisfa le di analisi, viene generato un errore.
Regole di analisi supportate
Sono supportate le seguenti regole di analisi:
Regola di analisi della soglia di aggregazione: applica il parametro numero minimo di entità distinte che devono essere presenti in un set di dati. Puoi applicare questa regola a una vista, utilizzando le istruzioni DDL o data clean room. Questa regola supporta il criterio di soglia di aggregazione e il criterio di limitazione dei join.
Regola dell'analisi della privacy differenziale: applica una il budget per la privacy, che limita i dati rivelati a un abbonato quando Se i dati sono protetti con la privacy differenziale. Puoi applicare questa regola a una vista, utilizzando le istruzioni DDL o data clean room. Questa regola supporta le norme sulla privacy differenziale e il criterio di limitazione dei join.
Regola di analisi della sovrapposizione degli elenchi: le righe sovrapposte possono solo: eseguire query dopo un'operazione di join, conforme alla regola. Puoi applicare questa regola a una vista, utilizzando istruzioni DDL o data clean room. Questa regola supporta il criterio di limitazione di join.
Regola di analisi della soglia di aggregazione
Una regola di analisi della soglia di aggregazione applica il numero minimo entità distinte che devono contribuire a una riga di output di una query, la riga di output è inclusa nel risultato della query.
Quando applicata, la regola di analisi della soglia di aggregazione raggruppa i dati su dimensioni, garantendo al contempo che la soglia di aggregazione venga soddisfatta. Conta di unità privacy distinte (rappresentate dalla colonna unità privacy) per ogni gruppo, e restituisce solo i gruppi in cui le distinte unità privacy vengono conteggiate soddisfi la soglia di aggregazione.
Una vista che include questa regola di analisi deve includere i campi criterio della soglia di aggregazione e può includere facoltativamente i criteri di limitazione per gli abbonati.
Definisci una regola di analisi della soglia di aggregazione per una vista
Puoi definire una regola di analisi della soglia di aggregazione per una vista in un
data clean room o con
Istruzione 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;
Definizioni:
aggregation_threshold_policy
: il criterio di soglia di aggregazione per il valore soglia di aggregazione.VIEW_NAME: il percorso e il nome della vista.
THRESHOLD: il numero minimo di unità privacy distinte che devono contribuire a ogni riga nei risultati della query. Se esiste un potenziale riga non soddisfa questa soglia, la riga viene omessa dalla i risultati della query.
PRIVACY_UNIT_COLUMN: rappresenta la colonna dell'unità privacy. R La colonna unità privacy è un identificatore univoco di un'unità privacy. Un'unità privacy è un valore della colonna unità privacy che rappresenta l'entità in un set di dati protetto.
Puoi usare una sola colonna unità privacy e il tipo di dati per la colonna unità privacy deve essere raggruppabili.
I valori nella colonna dell'unità privacy non possono essere previsti direttamente mediante una query e puoi utilizzare solo funzioni aggregate supportate da regole di analisi per aggregare i dati in questa colonna.
(Facoltativo)
join_restriction_policy
: il criterio facoltativo relativo alla limitazione di partecipazione per la regola di analisi della soglia di aggregazione.JOIN_CONDITION: il tipo di limitazione di join da applicare in una vista. Può trattarsi di uno dei seguenti valori:
JOIN_ALL
: tutte le colonne injoin_allowed_columns
devono essere interno per fare query su questa vista.JOIN_ANY
: almeno una colonna injoin_allowed_columns
deve essere per poter eseguire query su questa vista.JOIN_BLOCKED
: questa visualizzazione non può essere unita in nessuna colonna. Non impostarejoin_allowed_columns
in questo caso.JOIN_NOT_REQUIRED
: non è necessario un join per eseguire una query su questa vista. Se viene utilizzato il join, solo le colonne injoin_allowed_columns
possono essere in uso.
JOIN_ALLOWED_COLUMNS: le colonne che possono far parte di un di join.
QUERY: la query per la vista.
Esempio:
Nell'esempio seguente, viene creata una regola di analisi della soglia di aggregazione in
una visualizzazione chiamata ExamView
. ExamView
fa riferimento a una tabella denominata
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 );
Per esaminare la sintassi privacy_policy
per CREATE VIEW
, consulta le
Elenco OPTIONS
in CREATE VIEW
.
Aggiornare una regola di analisi della soglia di aggregazione per una vista
Puoi modificare la regola di analisi della soglia di aggregazione per una vista in una
data clean room o con l'istruzione ALTER VIEW
:
ALTER VIEW VIEW_NAME SET OPTIONS ( privacy_policy= '{ "aggregation_threshold_policy": { "threshold" : THRESHOLD, "privacy_unit_column": "PRIVACY_UNIT_COLUMN" } }' )
Per ulteriori informazioni sui valori che puoi impostare per le norme sulla privacy nella sintassi precedente, vedi Definisci una regola di analisi della soglia di aggregazione per una vista.
Esempio:
Nell'esempio seguente, viene aggiornata una regola di analisi della soglia di aggregazione
in una visualizzazione chiamata ExamView
.
ALTER VIEW mydataset.ExamView
SET OPTIONS (
privacy_policy= '{"aggregation_threshold_policy": {"threshold": 50, "privacy_unit_column": "last_name"}}'
);
Per esaminare la sintassi privacy_policy
per ALTER VIEW
, consulta
l'elenco OPTIONS
in ALTER VIEW SET OPTIONS
.
Eseguire query su una vista applicata dalla regola di analisi della soglia di aggregazione
Puoi eseguire query su una vista che ha una regola di analisi della soglia di aggregazione con
AGGREGATION_THRESHOLD
una clausola. La query deve includere funzioni di aggregazione e puoi utilizzare solo
funzioni aggregate supportate dalla soglia di aggregazione
in questa query.
Esempio:
Nell'esempio seguente, viene eseguita una query su una regola di analisi della soglia di aggregazione
una visualizzazione denominata 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 |
*---------+---------------*/
La regola di analisi della soglia di aggregazione può anche includere facoltativamente il criterio di limitazione dei join. Per scoprire come utilizzare unire il criterio di limitazione a una regola di analisi, consulta Unisci il criterio di limitazione nelle regole di analisi.
Per esaminare altri esempi relativi
AGGREGATION_THRESHOLD
, consulta
clausola AGGREGATION_THRESHOLD
.
Regola di analisi della privacy differenziale
La regola di analisi della privacy differenziale applica un budget per la privacy, che limita rivelati a un abbonato quando sono protetti privacy differenziale. Un budget di privacy impedisce a qualsiasi sottoscrittore di eseguire query sui dati condivisi quando la somma di tutte le query epsilon o delta raggiunge il valore epsilon o delta totale. Puoi utilizzare questa regola di analisi in una vista.
Una vista che include questa regola di analisi deve includere i campi norme sulla privacy differenziale e può includere facoltativamente i criteri di limitazione per gli abbonati.
Definire una regola di analisi della privacy differenziale per una vista
Puoi definire una regola di analisi della privacy differenziale per una vista in un
data clean room o con
Istruzione 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;
Definizioni:
differential_privacy_policy
: le norme sulla privacy differenziale per di analisi della privacy differenziale.PRIVACY_UNIT_COLUMN: il colonna che identifica l'entità in un set di dati protetto utilizzando di analisi della privacy. Questo valore è una stringa JSON.
MAX_EPSILON_PER_QUERY: determina la quantità di rumore aggiunto ai risultati per query e impedisce l'epsilon totale non sia raggiungibile da una singola query. Questo valore è un numero JSON da Da
0.001
a1e+15
.EPSILON_BUDGET: il epsilon che rappresenta l'epsilon totale che può essere utilizzato in tutte query private differenziate sulla vista. Questo valore deve essere superiore a
MAX_EPSILON_PER_QUERY
e si tratta di un Numero JSON da0.001
a1e+15
.DELTA_PER_QUERY: la probabilità che qualsiasi riga nel risultato non può essere epsilon diversamente privata. Questo valore è un numero JSON compreso tra
1e-15
e1
.DELTA_BUDGET: il delta che rappresenta il delta totale che può essere utilizzato in tutte query private differenziate sulla vista. Questo valore deve essere superiore a
DELTA_PER_QUERY
, che è un numero JSON compreso tra1e-15
e1000
.MAX_GROUPS_CONTRIBUTED (facoltativo): limita il valore numero di gruppi a cui può contribuire un'entità in una colonna dell'unità privacy. Questo valore deve essere un numero intero JSON non negativo.
(Facoltativo)
join_restriction_policy
: il criterio facoltativo relativo alla limitazione di partecipazione per la regola di analisi della privacy differenziale.JOIN_CONDITION: il tipo di limitazione di join da applicare in una vista. Può trattarsi di uno dei seguenti valori:
JOIN_ALL
: tutte le colonne injoin_allowed_columns
devono essere interno per fare query su questa vista.JOIN_ANY
: almeno una colonna injoin_allowed_columns
deve essere per poter eseguire query su questa vista.JOIN_BLOCKED
: questa visualizzazione non può essere unita in nessuna colonna. Non impostarejoin_allowed_columns
in questo caso.JOIN_NOT_REQUIRED
: non è necessario un join per eseguire una query su questa vista. Se viene utilizzato il join, solo le colonne injoin_allowed_columns
possono essere in uso.
JOIN_ALLOWED_COLUMNS: le colonne che possono far parte di un di join.
QUERY: la query per la vista.
Esempio:
Nell'esempio seguente, viene creata una regola di analisi della privacy differenziale
una visualizzazione chiamata ExamView
. ExamView
fa riferimento a una tabella denominata
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.
Per esaminare la sintassi privacy_policy
per CREATE VIEW
, consulta le
Elenco OPTIONS
in CREATE VIEW
.
Aggiornare una regola di analisi della privacy differenziale per una vista
Puoi modificare la regola di analisi della privacy differenziale per una vista in una
data clean room o con
Istruzione 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 } }' )
Per ulteriori informazioni sui valori che puoi impostare per le norme sulla privacy nella sintassi precedente, vedi Definire una regola di analisi della privacy differenziale per una vista.
Esempio:
Nell'esempio seguente, viene aggiornata una regola di analisi della privacy differenziale
in una visualizzazione chiamata 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.
Per esaminare la sintassi privacy_policy
per ALTER VIEW
, consulta
l'elenco OPTIONS
in ALTER VIEW SET OPTIONS
.
Eseguire query su una vista applicata da una regola di analisi della privacy differenziale
Puoi eseguire query su una vista che ha una regola di analisi della privacy differenziale con
DIFFERENTIAL_PRIVACY
. Per esaminare la sintassi e altri esempi
per la clausola DIFFERENTIAL_PRIVACY
, consulta
clausola DIFFERENTIAL_PRIVACY
.
Esempio:
Nell'esempio seguente, viene eseguita una query su una regola di analisi della privacy differenziale
una visualizzazione denominata ExamView
. Il concetto di privacy differenziata
i dati dovrebbero essere restituiti correttamente da ExamView
perché epsilon
, delta
,
e max_groups_contributed
soddisfano tutte le condizioni del differenziale
di analisi in 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 |
*---------+--------------------*/
Blocca una query con un epsilon fuori intervallo
Epsilon può essere utilizzato per aggiungere o rimuovere il rumore. Più epsilon significa che con meno rumore
da aggiungere. Se vuoi assicurarti che una query distintamente privata abbia un
minima quantità di rumore, presta attenzione al valore delle
max_epsilon_per_query
nella regola di analisi della privacy differenziale.
Esempio:
Nella query seguente, la query è bloccata con un errore perché
epsilon
nella clausola DIFFERENTIAL_PRIVACY
è superiore a
max_epsilon_per_query
a 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.
Dopo aver creato la visualizzazione, attendi brevemente e poi esegui questa query:
-- 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;
Blocca le query che hanno superato un budget epsilon
Epsilon può essere utilizzato per aggiungere o rimuovere il rumore. Meno epsilon aumenta il rumore,
più epsilon riduce il rumore. Anche quando il rumore è elevato, vengono eseguite più query
gli stessi dati possono alla fine rivelare la versione senza rumore dei dati. Per interrompere
questa situazione, puoi creare un budget epsilon. Se vuoi aggiungere un
budget epsilon, controlla il valore di epsilon_budget
nella
regola di analisi della privacy differenziale
per la tua vista.
Esempio:
Esegui questa query tre volte. La terza volta, la query viene bloccata
perché l'epsilon totale utilizzato è 30
, ma epsilon_budget
in
ExamView
consente solo 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.
Dopo aver creato la visualizzazione, attendi brevemente e poi esegui questa query tre volte:
-- 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;
Regola di analisi della sovrapposizione degli elenchi
È possibile eseguire query solo su righe sovrapposte dopo un'operazione di join, conforme a la regola di sovrapposizione degli elenchi. Puoi applicare questa regola a una vista utilizzando le istruzioni DDL data clean room.
Una vista che include questa regola di analisi deve includere solo i valori norme relative alle limitazioni per l'iscrizione.
Definire una regola di analisi della sovrapposizione degli elenchi per una vista
Puoi definire una regola di analisi della sovrapposizione degli elenchi per una vista in un
data clean room o con
Istruzione 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;
Definizioni:
join_restriction_policy
: il criterio di limitazione di join per di analisi della sovrapposizione degli elenchi.JOIN_CONDITION: il tipo di sovrapposizione dell'elenco da applicare in una vista. Può trattarsi di uno dei seguenti valori:
JOIN_ALL
: tutte le colonne injoin_allowed_columns
devono essere interno per fare query su questa vista.JOIN_ANY
: almeno una colonna injoin_allowed_columns
deve essere per poter eseguire query su questa vista.
JOIN_ALLOWED_COLUMNS: le colonne che possono far parte di un di join.
QUERY: la query per la vista.
Esempio:
Nell'esempio seguente, viene creata una regola di analisi della sovrapposizione degli elenchi in
una visualizzazione chiamata ExamView
. ExamView
fa riferimento a una tabella denominata
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 );
Aggiornare una regola di analisi della sovrapposizione degli elenchi per una vista
Puoi modificare la regola di analisi della sovrapposizione degli elenchi per una vista con un
data clean room o con
Istruzione ALTER VIEW
:
ALTER VIEW VIEW_NAME SET OPTIONS ( privacy_policy= '{ "join_restriction_policy": { "join_condition": "JOIN_CONDITION", "join_allowed_columns": JOIN_ALLOWED_COLUMNS } }' )
Per ulteriori informazioni sui valori che puoi impostare per le norme sulla privacy nella sintassi precedente, vedi Definire una regola di analisi della sovrapposizione degli elenchi per una vista.
Esempio:
Nell'esempio seguente, viene aggiornata una regola di analisi della sovrapposizione degli elenchi
in una visualizzazione chiamata ExamView
.
ALTER VIEW mydataset.ExamView
SET OPTIONS(
privacy_policy= '{"join_restriction_policy": {"join_condition": "JOIN_ALL", "join_allowed_columns": ["test_id", "test_score"]}}'
);
Per esaminare la sintassi privacy_policy
per ALTER VIEW
, consulta
l'elenco OPTIONS
in ALTER VIEW SET OPTIONS
.
Eseguire una query su una vista applicata dalla regola di analisi della sovrapposizione degli elenchi
Puoi eseguire un'operazione di join su una vista con un
di analisi della sovrapposizione degli elenchi.
Per rivedere la sintassi per l'operazione JOIN
, consulta
Operazione di join.
Bloccare un'operazione di join senza sovrapposizione
Puoi bloccare un'operazione di join se non ne include almeno una si sovrappongono a una colonna obbligatoria.
Esempio:
Nella query seguente, una vista denominata ExamView
è
unito a una tabella denominata StudentTable
. Poiché
La vista contiene la regola di analisi della sovrapposizione degli elenchi JOIN_ANY
, almeno
è necessaria una riga sovrapposta di ExamView
e StudentTable
. Poiché
se è presente almeno una sovrapposizione, la query viene eseguita correttamente.
-- 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 |
*------------+-----------+---------+-------------*/
Bloccare un'operazione di join interno senza intera sovrapposizione
Puoi bloccare un'operazione di join se non include una sovrapposizione con tutte le colonne obbligatorie.
Esempio:
Nell'esempio seguente, viene tentata un'operazione di join su una vista denominata
ExamView
e una tabella denominata
StudentTable
, ma la query non riesce. Si verifica l'errore
perché la regola di analisi della sovrapposizione degli elenchi ExamView
richiede l'unione su tutte
nel criterio di limitazione di join. Poiché la tabella ha chiamato
StudentTable
non contiene questi
colonne, non tutte le righe si sovrappongono e viene generato un errore.
-- 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);
Utilizza un criterio di limitazione di join con un altro criterio
Il criterio di limitazione di join può essere utilizzato con altri criteri della soglia di aggregazione e regole di analisi della privacy differenziale. Tuttavia, una volta hai utilizzato un criterio di limitazione per le partecipazioni con un altro criterio, non puoi a modificare l'altra norma in seguito.
Esempio:
Nell'esempio seguente, un criterio di limitazione di join viene utilizzato in una regola di analisi della soglia di aggregazione:
-- 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 );
Blocca un'operazione di join senza colonna obbligatoria
Puoi bloccare un'operazione di join se non ne include almeno una colonna richiesta. Per farlo, includi le seguenti parti nella sovrapposizione dell'elenco regola di analisi:
"join_restriction_policy": { "join_condition": "JOIN_ANY", "join_allowed_columns": ["column_name", ...] }
Esempio:
Nella query seguente, la query è bloccata con un errore perché
la query non contiene operazioni di join in test_score
o
test_id
in ExamView
e
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);
Per eseguire la query precedente, sostituisci last_name
nella clausola USING
con test_score
.
Blocca una query senza operazione di join
Se la query deve avere un'operazione di join, puoi bloccarla se non è presente alcun join operativa è presente utilizzando uno dei seguenti regole di analisi della sovrapposizione degli elenchi:
"join_restriction_policy": { "join_condition": "JOIN_NOT_REQUIRED" }
"join_restriction_policy": { "join_condition": "JOIN_NOT_REQUIRED", "join_allowed_columns": [] }
Esempio:
Nella seguente query, la query è bloccata perché non sono presenti
operazione di join con ExamView
nella query:
-- 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;
Blocca una query senza operazione di join e senza colonna obbligatoria
Se la query deve eseguire un'operazione di join e l'operazione di join deve avere È necessaria almeno una colonna obbligatoria, includi le seguenti parti nella sovrapposizione dell'elenco regola di analisi:
"join_restriction_policy": { "join_condition": "JOIN_NOT_REQUIRED", "join_allowed_columns": ["column_name", ...] }
Esempio:
Nella query seguente, la query è bloccata perché
l'operazione di join non include una colonna nel
ExamView
Array 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);
Per eseguire la query precedente, sostituisci last_name
nella clausola USING
con test_score
.
Blocca tutte le operazioni di join
Puoi bloccare tutte le operazioni di join. Per farlo, includi solo le seguenti parti nella regola di analisi della sovrapposizione degli elenchi:
"join_restriction_policy": { "join_condition": "JOIN_BLOCKED", }
Esempio:
Nella query seguente, la query è bloccata perché è presente un
dell'operazione di join con una vista denominata 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);
Per eseguire la query precedente, rimuovi l'operazione INNER JOIN
.
Blocca un'operazione di join interno senza tutte le colonne obbligatorie
Puoi bloccare un'operazione di inner join se non include tutti colonne obbligatorie. A tale scopo, includi le seguenti parti nella sovrapposizione dell'elenco regola di analisi:
"join_restriction_policy": { "join_condition": "JOIN_ALL", "join_allowed_columns": ["column_name", ...] }
Esempio:
Nella query seguente, la query è bloccata con un errore perché
la query non include test_score
nell'operazione di join con
la visualizzazione 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);
Per eseguire la query precedente, sostituisci USING (last_name)
con USING (last_name, test_score)
.
Tabelle di esempio
Diversi esempi in questo documento fanno riferimento a due tabelle denominate ExamTable
e
StudentTable
. ExamTable
contiene un elenco dei punteggi dei test prodotti dagli studenti
e StudentTable
contiene un elenco degli studenti e i punteggi dei relativi test.
Per testare gli esempi in questo documento, aggiungi prima le seguenti tabelle di esempio a il tuo progetto:
-- 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);
Limitazioni
Le regole di analisi hanno le seguenti limitazioni:
- Se hai già aggiunto una regola di analisi a una vista, non puoi passare tra le regole di analisi delle soglie di aggregazione regole di analisi della privacy differenziale.
Una regola di analisi della soglia di aggregazione ha le seguenti limitazioni:
- Puoi utilizzare solo le funzioni di aggregazione supportate in una query su una vista applicata da una regola di analisi della soglia di aggregazione.
- Non puoi aggiungere una regola di analisi della soglia di aggregazione a una vista materializzata.
- Se utilizzi una vista applicata da una regola di analisi della soglia di aggregazione in una soglia di aggregazione, entrambi devono avere lo stesso valore per la colonna unità privacy.
- Se utilizzi una vista applicata da una regola di analisi della soglia di aggregazione in una soglia di aggregazione, la soglia nella della query deve essere maggiore o uguale alla soglia nella vista.
- L'opzione Viaggi nel tempo è disattivata su qualsiasi con una regola di analisi della soglia di aggregazione.
Una regola di analisi della privacy differenziale ha le seguenti limitazioni:
- Una volta esaurito il budget di privacy per una vista, quest'ultima non può essere utilizzata e devi creare una nuova vista.
Una regola di analisi della sovrapposizione degli elenchi ha le seguenti limitazioni:
- Se combini una regola di analisi della soglia di aggregazione o una
di analisi della privacy differenziale
con una regola di analisi della sovrapposizione degli elenchi
non posizioni
privacy_unit_column
comejoin_allowed_column
nella regola di analisi della sovrapposizione degli elenchi, potresti non essere in grado di colonne in determinate situazioni.
Prezzi
- Non sono previsti costi aggiuntivi per collegare una regola di analisi a una vista.
- Si applicano i prezzi di BigQuery standard per l'analisi.
- Le query su una vista con una regola di analisi sono limitate a offerte non disponibili nella versione o nella versione Enterprise Plus.