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 in join_allowed_columns müssen inner verbunden sein, damit diese Ansicht abgefragt werden kann.

      • JOIN_ANY: Zum Abfragen dieser Ansicht muss mindestens eine Spalte in join_allowed_columns verknüpft werden.

      • JOIN_BLOCKED: Diese Ansicht kann nicht mit einer Spalte verbunden werden. Legen Sie in diesem Fall join_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 in join_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 bis 1e+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 zwischen 0.001 und 1e+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 und 1.

    • 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 zwischen 1e-15 und 1000.

    • 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 in join_allowed_columns müssen inner verbunden sein, damit diese Ansicht abgefragt werden kann.

      • JOIN_ANY: Zum Abfragen dieser Ansicht muss mindestens eine Spalte in join_allowed_columns verknüpft werden.

      • JOIN_BLOCKED: Diese Ansicht kann nicht mit einer Spalte verbunden werden. Legen Sie in diesem Fall join_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 in join_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 in join_allowed_columns müssen inner verbunden sein, damit diese Ansicht abgefragt werden kann.

      • JOIN_ANY: Zum Abfragen dieser Ansicht muss mindestens eine Spalte in join_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 als join_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