Datenzugriff mithilfe von Analyseregeln einschränken
Dieses Dokument enthält allgemeine Informationen zu Analyseregeln in GoogleSQL for BigQuery.
Was ist eine Analyseregel?
Mit einer Analyseregel werden Richtlinien für die Freigabe von Daten erzwungen. 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, müssen alle Nutzer, die diese Ansicht abfragen, die Analyseregel für die Ansicht einhalten. 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:
Analyseregel für Aggregationsschwellenwerte: Erzwingt die Mindestanzahl verschiedener Entitäten, die in einem Datensatz vorhanden sein müssen. 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 Aggregationsschwellenwerte und die Richtlinie für Einschränkungen bei Zusammenführungen.
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 mithilfe von DDL-Anweisungen oder Data-Clean-Rooms für eine Ansicht erzwingen. Diese Regel unterstützt die Richtlinie zum differenziellen Datenschutz und die Richtlinie zu Einschränkungen bei Zusammenführungen.
Regel für die Analyse von 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 Aggregationsschwellenwerte erzwingt die Mindestanzahl verschiedener Entitäten, die zu einer Ausgabezeile einer Abfrage beitragen müssen, damit die Ausgabezeile in das Abfrageergebnis aufgenommen wird.
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 Datenansicht, die diese Analyseregel enthält, muss die Richtlinie für Aggregationsgrenzwerte und optional die Richtlinie für Join-Einschränkungen 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 CREATE VIEW
-Anweisung 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 Analyseregeln unterstützte Aggregationsfunktionen verwenden, um die Daten in dieser Spalte zu aggregieren.
join_restriction_policy
(optional): Die optionale Einschränkungsrichtlinie für Zusammenführungen für die Analyseregel für Aggregationsschwellenwerte.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 join verknüpft 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 verknüpft werden. Legen Sie in diesem Fall nichtjoin_allowed_columns
fest.JOIN_NOT_REQUIRED
: Für die Abfrage dieser Ansicht ist keine Verbindung 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 namens 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 Datenansicht aktualisieren
Sie können die Analyseregel für den Aggregationsschwellenwert für eine Datenansicht in einem Data-Clean-Room oder mit der ALTER VIEW
-Anweisung ä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 Analyseregel für Aggregationsschwellenwerte für die Ansicht 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
.
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 Aggregationsgrenzwert kann optional auch die Richtlinie für die Zusammenführungseinschränkung enthalten. Informationen zur Verwendung der Richtlinie für Zusammenführungseinschränkungen mit einer Analyseregel finden Sie unter Richtlinie für Zusammenführungseinschränkungen in Analyseregeln.
Weitere Beispiele für die AGGREGATION_THRESHOLD
-Klausel finden Sie unter AGGREGATION_THRESHOLD
-Klausel.
Regel für die Analyse der Differential Privacy
Die Analyseregel für Differential Privacy erzwingt ein Datenschutzbudget, das die Daten einschränkt, die einem Abonnenten zur Verfügung gestellt werden, wenn die Daten mit Differential Privacy geschützt sind. Ein Privacy-Budget hindert Abonnenten daran, weitergegebene Daten abzufragen, 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 Richtlinie zu differenzieller Privatheit enthalten und kann optional die Richtlinie zu Einschränkungen bei Zusammenführungen enthalten.
Analyseregel für die Differential Privacy für eine Datenansicht definieren
Sie können eine Analyseregel für den differenziellen Datenschutz für eine Ansicht in einem Data-Clean-Room oder mit der CREATE VIEW
-Anweisung 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 angibt, 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 wird, und verhindert, dass das Gesamt-Epsilon durch eine einzelne Abfrage erreicht wird. Dieser Wert ist eine JSON-Zahl zwischen
0.001
und1e+15
.EPSILON_BUDGET: Das Epsilon-Budget, das das Gesamtepsilon darstellt, das für alle abfragespezifischen Datenschutzmaßnahmen in der Datenansicht verwendet werden kann. Dieser Wert muss größer als
MAX_EPSILON_PER_QUERY
sein und muss eine JSON-Zahl zwischen0.001
und1e+15
sein.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 das Gesamtdelta darstellt, das für alle abfragespezifischen Datenschutzeinstellungen in der Datenansicht verwendet werden kann. Dieser Wert muss größer als
DELTA_PER_QUERY
sein und eine JSON-Zahl zwischen1e-15
und1000
sein.MAX_GROUPS_CONTRIBUTED (optional): Hiermit wird die Anzahl der Gruppen begrenzt, 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 Regel für die Zusammenführungseinschränkung für die Regel zur Analyse der Differential Privacy.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 join verknüpft 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 verknüpft werden. Legen Sie in diesem Fall nichtjoin_allowed_columns
fest.JOIN_NOT_REQUIRED
: Für die Abfrage dieser Ansicht ist keine Verbindung 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 namens 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 Analyse der differenziellen Privatsphäre für eine Datenansicht aktualisieren
Sie können die Analyseregel für den differenziellen Datenschutz für eine Ansicht in einem Data-Clean-Room oder mit der ALTER VIEW
-Anweisung ä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 obigen Syntax festlegen können, finden Sie unter Regel für die Analyse der Differential Privacy für eine Datenansicht definieren.
Beispiel:
Im folgenden Beispiel wird eine Analyseregel für Differential Privacy 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 Analyseregel für Differential Privacy abfragen
Sie können eine Ansicht mit einer Regel für die Analyse der Differential Privacy 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 der 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 differentielle Analyse 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 die differenzielle Privatsphäre.
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. Je kleiner der Wert für „Epsilon“, desto stärker ist das Rauschen. Je höher der Wert, desto geringer ist 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 Datenansicht kurz und führen Sie dann dreimal die folgende Abfrage 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
Nach einem Zusammenführen können nur überlappende Zeilen abgefragt werden, was der Überschneidungsregel für Listen entspricht. Sie können diese Regel mithilfe von DDL-Anweisungen oder Data-Clean-Rooms für eine Ansicht erzwingen.
Eine Datenansicht, die diese Analyseregel enthält, darf nur die Richtlinie für Einschränkungen bei Zusammenführungen enthalten.
Analyseregel für Listenüberschneidungen für eine Datenansicht definieren
Sie können eine Analyseregel für Listenüberschneidungen für eine Datenansicht in einem Data-Clean-Room oder mit der CREATE VIEW
-Anweisung 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: Die Art 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 join verknüpft 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 namens 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 die Listenüberschneidung für eine Datenansicht mit einem Data-Clean-Room oder mit der ALTER VIEW
-Anweisung ä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
.
Ansicht abfragen, die durch Analyseregel für Listenüberschneidungen erzwungen wird
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 JOIN
-Vorgang 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 |
*------------+-----------+---------+-------------*/
Inner 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 für die Analyseregel für die Überschneidung von Listen vom Typ ExamView
ein Join für alle Spalten erforderlich ist, die in der Richtlinie für Join-Einschränkungen vorhanden sind. 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);
Richtlinien für die Zusammenführung mit anderen Richtlinien verwenden
Die Richtlinie für Einschränkungen bei Zusammenführungen kann mit anderen Richtlinien in den Regeln für Aggregationsschwellenwerte und die Analyse der Differential Privacy verwendet werden. Wenn Sie jedoch eine Richtlinie zur Einschränkung von Zusammenführungen 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 );
Zusammenführen 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 Zusammenführungsvorgang blockieren
Wenn die Abfrage einen Join-Vorgang haben muss, können Sie sie mithilfe 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 sie keinen Join-Vorgang mit 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_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 ein Join-Vorgang mit einer Ansicht namens ExamView
vorhanden ist:
-- 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.
Inner 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 die folgenden Teile in die Regel für die Analyse von Überschneidungen 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);
Ersetzen Sie USING (last_name)
durch USING (last_name, test_score)
, damit die vorherige Abfrage ausgeführt wird.
Beispieltabellen
Einige Beispiele in diesem Dokument beziehen sich auf zwei Tabellen mit den Namen ExamTable
und StudentTable
. ExamTable
enthält eine Liste der von Schülern/Studenten erzielten Testergebnisse und StudentTable
eine Liste der Schüler/Studenten und ihrer Testergebnisse.
Wenn Sie die Beispiele in diesem Dokument testen möchten, fügen Sie Ihrem Projekt zuerst die folgenden Beispieltabellen hinzu:
-- 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 Datenansicht bereits eine Analyseregel hinzugefügt haben, können Sie nicht zwischen Analyseregeln für Aggregationsgrenzwerte und Analyseregeln für den Differential Privacy-Ansatz 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 Aggregationsgrenzwert eine Ansicht mit erzwungener Analyseregel für den Aggregationsgrenzwert verwenden, müssen beide denselben Wert für die Spalte der 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 Aggregationsschwellenwerte deaktiviert.
Für eine Regel zur Analyse der Differential Privacy gelten die folgenden Einschränkungen:
- Wenn das Datenschutzbudget für eine Datenansicht aufgebraucht ist, kann sie nicht mehr verwendet werden und Sie müssen eine neue Datenansicht erstellen.
Für Analyseregeln für Listenüberschneidungen 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.