Datenzugriff mithilfe von Analyseregeln einschränken
Dieses Dokument enthält allgemeine Informationen zu Analyseregeln in GoogleSQL for BigQuery.
Was ist eine Analyseregel?
Eine Analyseregel erzwingt Richtlinien für die Freigabe von Daten. Eine Richtlinie stellt eine Bedingung dar, die erfüllt sein muss, bevor eine Abfrage ausgeführt werden kann. In BigQuery können Sie eine Analyseregel für eine Datenansicht erzwingen, indem Sie einen Data-Clean-Room verwenden oder die Analyseregel direkt auf die Datenansicht anwenden. Wenn Sie eine Analyseregel erzwingen, erzwingen Sie, dass alle Nutzer, die diese Ansicht abfragen, die Analyseregel für die Ansicht einhalten müssen. Wenn die Analyseregel erfüllt ist, erzeugt die Abfrage eine Ausgabe, die der Analyseregel entspricht. Wenn die Abfrage nicht der Analyseregel entspricht, wird ein Fehler ausgegeben.
Unterstützte Analyseregeln
Die folgenden Analyseregeln werden unterstützt:
Analyse des Aggregationsschwellenwerts: Erzwingt die Mindestanzahl unterschiedlicher Entitäten, die in einem Dataset vorhanden sein müssen. Sie können diese Regel für eine Ansicht mithilfe von DDL-Anweisungen oder Data-Clean-Rooms erzwingen. Diese Regel unterstützt die Richtlinie für Aggregationsschwellenwerte und die Join-Einschränkungsrichtlinie.
Analyseregel für Differential Privacy: Erzwingt ein Privacy-Budget, das die Daten einschränkt, die einem Abonnenten verfügbar gemacht werden, wenn die Daten mit Differential Privacy geschützt sind. Sie können diese Regel für eine Ansicht mithilfe von DDL-Anweisungen oder Data-Clean-Rooms erzwingen. Diese Regel unterstützt die Richtlinie zum differenziellen Datenschutz und die Richtlinie zu Einschränkungen bei Zusammenführungen.
Analyseregel für Listenüberschneidungen: Überlappende Zeilen können nur nach einem Join-Vorgang abgefragt werden, der der Regel entspricht. Sie können diese Regel mithilfe von DDL-Anweisungen oder Data-Clean-Rooms für eine Ansicht erzwingen. Diese Regel unterstützt die Richtlinie für Einschränkungen bei der Gruppenbeitrittsberechtigung.
Analyseregel für Aggregationsschwellenwert
Eine Analyseregel für den Aggregationsschwellenwert erzwingt die Mindestanzahl verschiedener Entitäten, die zu einer Ausgabezeile einer Abfrage beitragen müssen, sodass die Ausgabezeile im Abfrageergebnis enthalten ist.
Wenn sie erzwungen wird, gruppiert die Analyseregel für den Aggregationsschwellenwert Daten über Dimensionen hinweg, wobei sichergestellt wird, dass der Aggregationsschwellenwert erreicht wird. Sie zählt die Anzahl der verschiedenen Datenschutzeinheiten (repräsentiert durch die Spalte für die Datenschutzeinheit) für jede Gruppe und gibt nur die Gruppen aus, bei denen die Anzahl der Datenschutzeinheiten den Aggregationsschwellenwert erreicht.
Eine Ansicht, die diese Analyseregel enthält, muss die Richtlinie für den Aggregationsschwellenwert enthalten und kann optional die Richtlinie für die Join-Einschränkung enthalten.
Analyseregel für Aggregationsschwellenwerte für eine Datenansicht definieren
Sie können eine Analyseregel für den Aggregationsschwellenwert für eine Ansicht in einem Data-Clean-Room oder mit der Anweisung CREATE VIEW
definieren:
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;
Definitionen:
aggregation_threshold_policy
: Die Richtlinie für den Aggregationsschwellenwert für die Analyseregel für den Aggregationsschwellenwert.VIEW_NAME: Der Pfad und der Name der Ansicht.
THRESHOLD: Die Mindestanzahl unterschiedlicher Datenschutzeinheiten, die zu jeder Zeile in den Abfrageergebnissen beitragen müssen. Wenn eine potenzielle Zeile diesen Schwellenwert nicht erreicht, wird diese Zeile in den Abfrageergebnissen weggelassen.
PRIVACY_UNIT_COLUMN: Stellt die Spalte für die Datenschutzeinheit dar. Eine Spalte für die Datenschutzeinheit ist eine eindeutige Kennung für eine Datenschutzeinheit. Eine Datenschutzeinheit ist ein Wert aus der Spalte für die Datenschutzeinheit, der für die Entität in einem geschützten Satz von Daten steht.
Sie können nur eine Spalte für die Datenschutzeinheit verwenden und der Datentyp der Spalte für die Datenschutzeinheit muss gruppierbar sein.
Die Werte in der Spalte für die Datenschutzeinheit können nicht direkt über eine Abfrage projiziert werden. Sie können nur von der Analyseregel unterstützte Aggregationsfunktionen verwenden, um die Daten in dieser Spalte zu aggregieren.
join_restriction_policy
(optional): Die optionale Join-Einschränkungsrichtlinie für die Analyseregel für den Aggregationsschwellenwert.JOIN_CONDITION: Die Art der Zusammenführungsbeschränkung, die für eine Datenansicht erzwungen werden soll. Dies kann einer der folgenden Werte sein:
JOIN_ALL
: Alle Spalten injoin_allowed_columns
müssen inner verbunden sein, damit diese Ansicht abgefragt werden kann.JOIN_ANY
: Zum Abfragen dieser Ansicht muss mindestens eine Spalte injoin_allowed_columns
verknüpft werden.JOIN_BLOCKED
: Diese Ansicht kann nicht mit einer Spalte verbunden werden. Legen Sie in diesem Falljoin_allowed_columns
nicht fest.JOIN_NOT_REQUIRED
: Zum Abfragen dieser Ansicht ist kein Join erforderlich. Wenn ein Join verwendet wird, können nur die Spalten injoin_allowed_columns
verwendet werden.
JOIN_ALLOWED_COLUMNS: Die Spalten, die Teil eines Zusammenführungsvorgangs sein können.
QUERY: Die Abfrage für die Ansicht.
Beispiel:
Im folgenden Beispiel wird eine Analyseregel für den Aggregationsgrenzwert für die Ansicht ExamView
erstellt. ExamView
verweist auf eine Tabelle mit dem Namen 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 );
Informationen zur privacy_policy
-Syntax für CREATE VIEW
finden Sie in der OPTIONS
-Liste in CREATE VIEW
.
Analyseregel für Aggregationsschwellenwerte für eine Ansicht aktualisieren
Sie können die Analyseregel für den Aggregationsschwellenwert für eine Ansicht in einem Data-Clean-Room oder mit der Anweisung ALTER VIEW
ändern:
ALTER VIEW VIEW_NAME SET OPTIONS ( privacy_policy= '{ "aggregation_threshold_policy": { "threshold" : THRESHOLD, "privacy_unit_column": "PRIVACY_UNIT_COLUMN" } }' )
Weitere Informationen zu den Werten, die Sie in der obigen Syntax für die Datenschutzrichtlinien festlegen können, finden Sie unter Analyseregel für Aggregationsgrenzwert für eine Ansicht definieren.
Beispiel:
Im folgenden Beispiel wird eine Regel zur Analyse des Aggregationsschwellenwerts in einer Ansicht namens ExamView
aktualisiert.
ALTER VIEW mydataset.ExamView
SET OPTIONS (
privacy_policy= '{"aggregation_threshold_policy": {"threshold": 50, "privacy_unit_column": "last_name"}}'
);
Informationen zur privacy_policy
-Syntax für ALTER VIEW
finden Sie in der OPTIONS
-Liste in ALTER VIEW SET OPTIONS
.
Ansicht mit erzwungener Analyseregel für Aggregationsschwellenwerte abfragen
Sie können eine Ansicht mit einer Analyseregel für Aggregationsschwellenwerte mit der Klausel AGGREGATION_THRESHOLD
abfragen. Die Abfrage muss Aggregationsfunktionen enthalten und Sie können in dieser Abfrage nur von einem Aggregationsgrenzwert unterstützte Aggregationsfunktionen verwenden.
Beispiel:
Im folgenden Beispiel wird eine Analyseregel für Aggregationsschwellenwerte für eine Ansicht namens ExamView
abgefragt:
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 |
*---------+---------------*/
Die Analyseregel für den Aggregationsschwellenwert kann optional auch die Richtlinie zur Join-Einschränkung enthalten. Informationen zur Verwendung der Join-Einschränkungsrichtlinie mit einer Analyseregel finden Sie unter Join-Einschränkungsrichtlinie in Analyseregeln.
Weitere Beispiele für die AGGREGATION_THRESHOLD
-Klausel finden Sie unter AGGREGATION_THRESHOLD
-Klausel.
Regel für die differenzielle Datenschutzanalyse
Die Regel für die differenzielle Datenschutzanalyse erzwingt ein Datenschutzbudget, das die Daten begrenzt, die einem Abonnenten angezeigt werden, wenn die Daten mit differenziellem Datenschutz geschützt sind. Ein Privacy-Budget verhindert, dass Abonnenten weitergegebene Daten abfragen, wenn die Summe aller Epsilon oder Delta der Abfragen den gesamten Epsilon-Wert oder gesamten Delta-Wert erreicht. Sie können diese Analyseregel in einer Datenansicht verwenden.
Eine Ansicht, die diese Analyseregel enthält, muss die differenzielle Datenschutzrichtlinie enthalten und kann optional die Join-Einschränkungsrichtlinie enthalten.
Analyseregel für die Differential Privacy für eine Datenansicht definieren
Sie können eine Regel für die differenzielle Datenschutzanalyse für eine Ansicht in einem Data-Clean-Room oder mit der Anweisung CREATE VIEW
definieren:
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;
Definitionen:
differential_privacy_policy
: Die Richtlinie zur Differential Privacy für die Regel zur Analyse der Differential Privacy.PRIVACY_UNIT_COLUMN: Die Spalte, die die Entität in einem Datensatz identifiziert, der mit einer Regel für die Datenschutzanalyse geschützt ist. Dieser Wert ist ein JSON-String.
MAX_EPSILON_PER_QUERY: Bestimmt die Menge an Rauschen, die den Ergebnissen pro Abfrage hinzugefügt werden, und verhindert, dass das gesamte epsilon von einer einzigen Abfrage erreicht wird. Dieser Wert ist eine JSON-Nummer von
0.001
bis1e+15
.EPSILON_BUDGET: Das epsilon-Budget, das das Gesamt-Epsilon-Budget darstellt, das in allen differenziell privaten Abfragen in der Ansicht verwendet werden kann. Dieser Wert muss größer als
MAX_EPSILON_PER_QUERY
sein und eine JSON-Nummer zwischen0.001
und1e+15
.DELTA_PER_QUERY: Die Wahrscheinlichkeit, dass eine Zeile im Ergebnis nicht epsilon-differential privat ist. Dieser Wert ist eine JSON-Zahl zwischen
1e-15
und1
.DELTA_BUDGET: Das Delta-Budget, das den Gesamtdelta darstellt, der für alle differenziell privaten Abfragen in der Ansicht verwendet werden kann. Dieser Wert muss größer als
DELTA_PER_QUERY
sein und ist eine JSON-Zahl zwischen1e-15
und1000
.MAX_GROUPS_CONTRIBUTED (optional): Begrenzt die Anzahl der Gruppen, zu denen eine Entität in einer Spalte für die Datenschutzeinheit beitragen kann. Dieser Wert muss eine nichtnegative JSON-Ganzzahl sein
join_restriction_policy
(optional): Die optionale Join-Einschränkungsrichtlinie für die differenzielle Datenschutzanalyseregel.JOIN_CONDITION: Die Art der Zusammenführungsbeschränkung, die für eine Datenansicht erzwungen werden soll. Dies kann einer der folgenden Werte sein:
JOIN_ALL
: Alle Spalten injoin_allowed_columns
müssen inner verbunden sein, damit diese Ansicht abgefragt werden kann.JOIN_ANY
: Zum Abfragen dieser Ansicht muss mindestens eine Spalte injoin_allowed_columns
verknüpft werden.JOIN_BLOCKED
: Diese Ansicht kann nicht mit einer Spalte verbunden werden. Legen Sie in diesem Falljoin_allowed_columns
nicht fest.JOIN_NOT_REQUIRED
: Zum Abfragen dieser Ansicht ist kein Join erforderlich. Wenn ein Join verwendet wird, können nur die Spalten injoin_allowed_columns
verwendet werden.
JOIN_ALLOWED_COLUMNS: Die Spalten, die Teil eines Zusammenführungsvorgangs sein können.
QUERY: Die Abfrage für die Ansicht.
Beispiel:
Im folgenden Beispiel wird eine Regel für die Analyse der Differential Privacy für eine Ansicht namens ExamView
erstellt. ExamView
verweist auf eine Tabelle mit dem Namen 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.
Informationen zur privacy_policy
-Syntax für CREATE VIEW
finden Sie in der OPTIONS
-Liste in CREATE VIEW
.
Regel für die differenzielle Datenschutzanalyse für eine Ansicht aktualisieren
Sie können die Regel für die differenzielle Datenschutzanalyse für eine Ansicht in einem Data-Clean-Room oder mit der Anweisung ALTER VIEW
ändern:
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 } }' )
Weitere Informationen zu den Werten, die Sie für die Datenschutzrichtlinien in der vorherigen Syntax festlegen können, finden Sie unter Differenzielle Datenschutzanalyseregel für eine Ansicht definieren.
Beispiel:
Im folgenden Beispiel wird eine Regel zur differenziellen Datenschutzanalyse in einer Ansicht namens ExamView
aktualisiert.
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.
Informationen zur privacy_policy
-Syntax für ALTER VIEW
finden Sie in der OPTIONS
-Liste in ALTER VIEW SET OPTIONS
.
Ansicht mit erzwungener differenzieller Datenschutzanalyse abfragen
Sie können eine Ansicht mit einer differenziellen Datenschutzanalyseregel mit der DIFFERENTIAL_PRIVACY
-Klausel abfragen. Die Syntax und zusätzliche Beispiele für die DIFFERENTIAL_PRIVACY
-Klausel finden Sie unter DIFFERENTIAL_PRIVACY
-Klausel.
Beispiel:
Im folgenden Beispiel wird eine Regel für die Analyse mit Differential Privacy für eine Ansicht namens ExamView
abgefragt. Die Daten mit Differential Privacy sollten erfolgreich von ExamView
zurückgegeben werden, da epsilon
, delta
und max_groups_contributed
alle die Bedingungen der Regel für die Differentialanalyse in ExamView
erfüllen.
-- 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 |
*---------+--------------------*/
Abfrage mit einem Epsilon außerhalb des zulässigen Bereichs blockieren
Mit Epsilon können Sie Rauschen hinzufügen oder entfernen. Je höher der Epsilonwert, desto weniger Rauschen wird hinzugefügt. Wenn Sie dafür sorgen möchten, dass eine differenzielle private Abfrage möglichst wenig Rauschen enthält, achten Sie genau auf den Wert für max_epsilon_per_query
in Ihrer Analyseregel für den differenziellen Datenschutz.
Beispiel:
In der folgenden Abfrage wird die Abfrage mit einem Fehler blockiert, da epsilon
in der DIFFERENTIAL_PRIVACY
-Klausel größer als max_epsilon_per_query
in ExamView
ist:
-- 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.
Warten Sie nach dem Erstellen der Ansicht kurz und führen Sie dann die folgende Abfrage aus:
-- 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;
Abfragen blockieren, die ein Epsilon-Budget überschritten haben
Mit Epsilon können Sie Rauschen hinzufügen oder entfernen. Weniger Epsilon erhöht das Rauschen, mehr Epsilon reduziert das Rauschen. Selbst bei hohem Rauschen können mehrere Abfragen bezüglich derselben Daten letztendlich die rauschunterdrückte Version der Daten aufdecken. Sie können ein Epsilon-Budget erstellen, um dies zu verhindern. Wenn Sie ein Epsilon-Budget hinzufügen möchten, sehen Sie sich den Wert für epsilon_budget
in der Regel für die Analyse der Differential Privacy für Ihre Datenansicht an.
Beispiel:
Führen Sie die folgende Abfrage dreimal aus. Beim dritten Mal wird die Abfrage blockiert, da das verwendete Gesamt-Epsilon 30
beträgt, für epsilon_budget
in ExamView
aber nur 25.6
zulässig ist:
-- 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.
Warten Sie nach dem Erstellen der Ansicht kurz und führen Sie dann die folgende Abfrage dreimal aus:
-- 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;
Regel für die Analyse von Listenüberschneidungen
Nur überlappende Zeilen können nach einem Join-Vorgang abgefragt werden, der der Listenüberschneidungsregel entspricht. Sie können diese Regel mithilfe von DDL-Anweisungen oder Data-Clean-Rooms für eine Ansicht erzwingen.
Eine Ansicht, die diese Analyseregel enthält, darf nur die Join-Einschränkungsrichtlinie enthalten.
Analyseregel für Listenüberschneidungen für eine Ansicht definieren
Sie können eine Analyseregel für Listenüberschneidungen für eine Ansicht in einem Data-Clean-Room oder mit der Anweisung CREATE VIEW
definieren:
CREATE OR REPLACE VIEW VIEW_NAME OPTIONS ( privacy_policy= '{ "join_restriction_policy": { "join_condition": "JOIN_CONDITION", "join_allowed_columns": JOIN_ALLOWED_COLUMNS } }' ) AS QUERY;
Definitionen:
join_restriction_policy
: Die Richtlinie für Zusammenführungseinschränkungen für die Regel zur Analyse von Listenüberschneidungen.JOIN_CONDITION: Der Typ der Listenüberschneidung, die für eine Ansicht erzwungen werden soll. Dies kann einer der folgenden Werte sein:
JOIN_ALL
: Alle Spalten injoin_allowed_columns
müssen inner verbunden sein, damit diese Ansicht abgefragt werden kann.JOIN_ANY
: Zum Abfragen dieser Ansicht muss mindestens eine Spalte injoin_allowed_columns
verknüpft werden.
JOIN_ALLOWED_COLUMNS: Die Spalten, die Teil eines Zusammenführungsvorgangs sein können.
QUERY: Die Abfrage für die Ansicht.
Beispiel:
Im folgenden Beispiel wird eine Analyseregel für Listenüberschneidungen für eine Ansicht namens ExamView
erstellt. ExamView
verweist auf eine Tabelle mit dem Namen 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 );
Regel für die Analyse von Listenüberschneidungen für eine Datenansicht aktualisieren
Sie können die Analyseregel für Listenüberschneidungen für eine Ansicht mit einem Data-Clean-Room oder mit der Anweisung ALTER VIEW
ändern:
ALTER VIEW VIEW_NAME SET OPTIONS ( privacy_policy= '{ "join_restriction_policy": { "join_condition": "JOIN_CONDITION", "join_allowed_columns": JOIN_ALLOWED_COLUMNS } }' )
Weitere Informationen zu den Werten, die Sie in der obigen Syntax für die Datenschutzerklärung festlegen können, finden Sie unter Regel für die Analyse von Listenüberschneidungen für eine Ansicht definieren.
Beispiel:
Im folgenden Beispiel wird eine Analyseregel für Listenüberschneidungen in einer Ansicht namens ExamView
aktualisiert.
ALTER VIEW mydataset.ExamView
SET OPTIONS(
privacy_policy= '{"join_restriction_policy": {"join_condition": "JOIN_ALL", "join_allowed_columns": ["test_id", "test_score"]}}'
);
Informationen zur privacy_policy
-Syntax für ALTER VIEW
finden Sie in der OPTIONS
-Liste in ALTER VIEW SET OPTIONS
.
Erzwungene Ansicht einer Analyseregel für Listenüberschneidungen abfragen
Sie können einen Join-Vorgang für eine Ansicht ausführen, die eine Analyseregel für Listenüberschneidungen enthält.
Informationen zur Syntax für den Vorgang JOIN
finden Sie unter Join-Vorgang.
Zusammenführung ohne Überschneidung blockieren
Sie können einen Join-Vorgang blockieren, wenn er nicht mindestens eine Überschneidung mit einer erforderlichen Spalte enthält.
Beispiel:
In der folgenden Abfrage wird eine Ansicht namens ExamView
mit einer Tabelle namens StudentTable
zusammengeführt. Da die Ansicht die Analyseregel für die Überschneidung von Listen JOIN_ANY
enthält, ist mindestens eine überlappende Zeile aus ExamView
und StudentTable
erforderlich. Da es mindestens eine Überschneidung gibt, wird die Abfrage erfolgreich ausgeführt.
-- 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 |
*------------+-----------+---------+-------------*/
Internen Join-Vorgang ohne vollständige Überschneidung blockieren
Sie können einen Join-Vorgang blockieren, wenn er sich nicht mit allen erforderlichen Spalten überschneidet.
Beispiel:
Im folgenden Beispiel wird versucht, einen Join-Vorgang für eine Ansicht namens ExamView
und eine Tabelle namens StudentTable
auszuführen, die Abfrage schlägt jedoch fehl. Der Fehler tritt auf, weil die Analyseregel für die ExamView
-Listenüberschneidung erfordert, dass alle Spalten in der Join-Einschränkungsrichtlinie zusammengeführt werden. Da die Tabelle StudentTable
diese Spalten nicht enthält, überschneiden sich nicht alle Zeilen und es wird ein Fehler ausgegeben.
-- 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);
Richtlinie zur Join-Einschränkung mit einer anderen Richtlinie verwenden
Die Richtlinie für Zusammenführungen kann mit anderen Richtlinien in den Regeln für Aggregationsschwellenwerte und Differential Privacy-Analysen verwendet werden. Wenn Sie jedoch eine Richtlinie zur Zusammenführungsbeschränkung mit einer anderen Richtlinie verwendet haben, können Sie diese andere Richtlinie danach nicht mehr ändern.
Beispiel:
Im folgenden Beispiel wird eine Richtlinie für Join-Einschränkungen in einer Analyseregel für Aggregationsgrenzwerte verwendet:
-- 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 );
Join-Vorgang ohne erforderliche Spalte blockieren
Sie können einen Join-Vorgang blockieren, wenn er mindestens eine erforderliche Spalte nicht enthält. Fügen Sie dazu die folgenden Teile in die Regel für die Überschneidungsanalyse ein:
"join_restriction_policy": { "join_condition": "JOIN_ANY", "join_allowed_columns": ["column_name", ...] }
Beispiel:
In der folgenden Abfrage wird die Abfrage mit einem Fehler blockiert, da die Abfrage keine Join-Vorgänge für die test_score
- oder test_id
-Spalte in ExamView
und StudentTable
enthalten:
-- 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);
Damit die vorherige Abfrage ausgeführt wird, ersetzen Sie in der USING
-Klausel last_name
durch test_score
.
Abfrage ohne Join-Vorgang blockieren
Wenn die Abfrage einen Join-Vorgang haben muss, können Sie sie mit einer der folgenden Analyseregeln für Listenüberschneidungen blockieren, wenn kein Join-Vorgang vorhanden ist:
"join_restriction_policy": { "join_condition": "JOIN_NOT_REQUIRED" }
"join_restriction_policy": { "join_condition": "JOIN_NOT_REQUIRED", "join_allowed_columns": [] }
Beispiel:
In der folgenden Abfrage wird die Abfrage blockiert, da es keinen Join-Vorgang mit ExamView
in der Abfrage gibt:
-- 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;
Abfrage ohne Join-Vorgang und ohne erforderliche Spalte blockieren
Wenn die Abfrage einen Join-Vorgang und der Join-Vorgang mindestens eine erforderliche Spalte haben muss, fügen Sie die folgenden Teile in die Analyseregel für Listenüberschneidungen ein:
"join_restriction_policy": { "join_condition": "JOIN_NOT_REQUIRED", "join_allowed_columns": ["column_name", ...] }
Beispiel:
In der folgenden Abfrage wird die Abfrage blockiert, da der Join-Vorgang keine Spalte im Array ExamView
join_allowed_columns
enthält:
-- 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);
Damit die vorherige Abfrage ausgeführt wird, ersetzen Sie in der USING
-Klausel last_name
durch test_score
.
Alle Zusammenführungsvorgänge blockieren
Sie können alle Zusammenführungsvorgänge blockieren. Fügen Sie dazu nur die folgenden Teile in die Regel für die Analyse von Listenüberschneidungen ein:
"join_restriction_policy": { "join_condition": "JOIN_BLOCKED", }
Beispiel:
In der folgenden Abfrage wird die Abfrage blockiert, da es einen Join-Vorgang mit einer Ansicht namens ExamView
gibt:
-- 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);
Entfernen Sie den Vorgang INNER JOIN
, damit die vorherige Abfrage ausgeführt wird.
Den internen Join-Vorgang ohne alle erforderlichen Spalten blockieren
Sie können einen inneren Join-Vorgang blockieren, wenn er nicht alle erforderlichen Spalten enthält. Fügen Sie dazu folgende Teile in die Analyseregel für die Listenüberschneidung ein:
"join_restriction_policy": { "join_condition": "JOIN_ALL", "join_allowed_columns": ["column_name", ...] }
Beispiel:
In der folgenden Abfrage wird die Abfrage mit einem Fehler blockiert, da die Abfrage test_score
nicht im Join-Vorgang mit der Ansicht ExamView
enthält:
-- 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);
Wenn Sie die vorherige Abfrage ausführen möchten, ersetzen Sie USING (last_name)
durch USING (last_name, test_score)
.
Beispieltabellen
Einige Beispiele in diesem Dokument beziehen sich auf zwei Tabellen mit den Namen ExamTable
und StudentTable
. ExamTable
enthält eine Liste der von den Schülern/Studenten erstellten Testergebnissen und StudentTable
eine Liste der Schüler/Studenten und deren Testergebnisse.
Fügen Sie Ihrem Projekt zuerst die folgenden Beispieltabellen hinzu, um die Beispiele in diesem Dokument zu testen:
-- 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);
Beschränkungen
Für Analyseregeln gelten die folgenden Einschränkungen:
- Wenn Sie einer Ansicht bereits eine Analyseregel hinzugefügt haben, können Sie nicht zwischen Analyseregeln für Aggregationsschwellenwerte und Regeln für differenzielle Datenschutzanalyse wechseln.
Für Analyseregeln mit Aggregationsgrenzwerten gelten die folgenden Einschränkungen:
- Sie können nur unterstützte Aggregationsfunktionen in einer Abfrage für eine Ansicht mit erzwungener Analyseregel für Aggregationsschwellenwerte verwenden.
- Sie können einer materialisierten Ansicht keine Analyseregel für Aggregationsschwellenwerte hinzufügen.
- Wenn Sie in einer Abfrage mit Aggregationsschwellenwert eine Ansicht mit erzwungener Aggregationsschwellenwertanalyse verwenden, müssen beide den gleichen Wert für die Spalte für die Datenschutzeinheit haben.
- Wenn Sie in einer Abfrage mit Aggregationsschwellenwert eine Ansicht mit Analyseregel für Aggregationsschwellenwerte verwenden, muss der Schwellenwert in der Abfrage größer oder gleich dem Schwellenwert in der Ansicht sein.
- Zeitreisen sind in jeder Ansicht mit einer Analyseregel für den Aggregationsschwellenwert deaktiviert.
Für eine Regel für die differenzielle Datenschutzanalyse gelten die folgenden Einschränkungen:
- Wenn ein Datenschutzbudget für eine Ansicht aufgebraucht ist, kann diese Ansicht nicht mehr verwendet werden und Sie müssen eine neue Ansicht erstellen.
Für eine Analyseregel für die Listenüberschneidung gelten die folgenden Einschränkungen:
- Wenn Sie eine Analyseregel für den Aggregationsgrenzwert oder eine Analyseregel für die Differential Privacy mit einer Analyseregel für die Überschneidung von Listen kombinieren und die
privacy_unit_column
nicht alsjoin_allowed_column
in die Analyseregel für die Überschneidung von Listen einfügen, können Sie in bestimmten Situationen möglicherweise keine Spalten zusammenführen.
Preise
- Für das Anhängen einer Analyseregel an eine Ansicht fallen keine zusätzlichen Kosten an.
- Es gelten die standardmäßigen BigQuery-Preise für Analysen.
- Abfragen für eine Ansicht mit einer Analyseregel sind auf Nicht versionsgebundene Angebote oder Enterprise Plus Edition beschränkt.