Verwenden der SQL-Abfragevorlage in der Web-App

Wenn Sie eine SQL-Abfragevorlage in einen Reinraum einbinden, können Verbraucher SQL-Abfragen in freier Form schreiben, um Daten im Reinraum abzufragen. Wenn Sie die SQL-Abfragevorlage verwenden, müssen Verbraucherabfragen bestimmte Anforderungen erfüllen, um erfolgreich Ergebnisse zu liefern. Diese Anforderungen werden dadurch bestimmt, wie der Datenanbieter seine Tabellen mit Datenschutzrichtlinien schützt.

Vorlagenrichtlinien

Die folgenden Richtlinien werden von der SQL-Abfragevorlage angewendet, um zu steuern, wie der Verbraucher die Daten abfragen kann:

Richtlinie

Beschreibung

Projektionsrichtlinie

Steuert, ob eine Abfrage eine Spalte projizieren kann, d. h. die Spalte in eine SELECT-Anweisung aufnehmen kann. In einem Reinraum können Verbraucher eine Spalte nicht mit einer Projektionsrichtlinie projizieren.

Aggregationsrichtlinie

Sorgt dafür, dass eine Abfrage Daten aggregiert, um Ergebnisse zurückgeben zu können. Jede Tabelle, auf die mit einer SQL Abfragevorlage zugegriffen wird, hat eine Aggregationsrichtlinie.

Eine Aggregationsrichtlinie schützt die Privatsphäre der Entitäten, indem sie verlangt, dass jede Aggregationsgruppe eine Mindestanzahl von Entitäten enthält. Eine Entität wird durch einen eindeutigen Wert in einer Spalte identifiziert. Zum Beispiel könnten alle Zeilen mit dem Wert joe@company.com in der Spalte email zur selben Entität gehören.

In Reinräumen kann die Aggregationsrichtlinie mehrere Entitäten in der Tabelle schützen. Die Richtlinie könnte zum Beispiel verlangen, dass eine Aggregationsgruppe mindestens 5 Haushalte und 10 Benutzer enthält, wobei Haushalte und Benutzer beide Entitäten sind.

Wichtig

Verknüpfungsrichtlinien, die dem Reinraum in Schritt 2 des Erstellungsprozesses hinzugefügt werden, steuern keine Verknüpfungen, wenn Sie die SQL-Abfragevorlage verwenden. Vielmehr wendet der Reinraum auf jede Spalte, die als Verknüpfungsspalte ausgewählt wurde, eine Projektions- und Aggregationsrichtlinie an. Eine SQL-Abfrage kann mit jeder Spalte verknüpft werden, nicht nur mit den Spalten, die über die Join Columns-Dropdown-Liste ausgewählt wurden.

SQL-Abfragevorlage zu einem Reinraum hinzufügen

Der allgemeine Prozess der Konfiguration eines Reinraums, damit Verbraucher die SQL-Abfragevorlage zur Ausführung von Analysen verwenden können, umfasst Folgendes:

  1. Starten Sie den Reinraum-Erstellungsprozess.

  2. In Schritt 2 verwenden Sie die Dropdown-Liste Join Columns, um Spalten auszuwählen, die Sie mit Aggregations- und Projektionsrichtlinien schützen möchten. Ihre Auswahl hat keinen Einfluss darauf, welche Spalten als Schlüssel für die Verknüpfung verwendet werden können.

  3. Wählen Sie in Schritt 3 Horizontal » SQL Query aus der Liste der Vorlagen und konfigurieren Sie dann die SQL Abfragevorlage.

  4. Geben Sie den Reinraum für einen Teilnehmer frei.

SQL Abfragevorlage konfigurieren

Nachdem Sie die SQL-Abfragevorlage zum Reinraum hinzugefügt haben, können Sie sie mit den folgenden Aktionen konfigurieren:

Verbrauchern die Verwendung einer Verknüpfungsspalten in einer SELECT-Anweisung erlauben

Verwenden Sie die Dropdown-Liste Aggregation Policy Columns, um den Namen der Spalte auszuwählen, die mit Join Policy beschriftet ist.

Verbrauchern SELECT und das Filtern nach einer Nicht-Join-Spalte erlauben

Verwenden Sie die Dropdown-Liste Fully Permitted Columns, um den Namen der Spalte auszuwählen.

Zusätzliche Entitäten definieren

Jede Spalte mit einer Verknüpfungsrichtlinie identifiziert eine Entität, die durch die Aggregationsrichtlinie der Tabelle geschützt ist. Das bedeutet, dass jede Aggregationsgruppe eine Mindestanzahl unterschiedlicher Werte aus jeder Join-Spalte enthalten muss.

Sie können zusätzliche Spalten als identifizierende Entitäten festlegen, sodass jede Aggregationsgruppe eine Mindestanzahl unterschiedlicher Werte aus diesen Spalten enthalten muss. Nehmen wir zum Beispiel an, dass HEM eine Verknüpfungsrichtlinie ist. Die Standardkonfiguration der Aggregationsrichtlinie zwingt Abfragen dazu, Daten in Gruppen zusammenzufassen, die eine bestimmte Anzahl unterschiedlicher Werte aus der Spalte HEM enthalten. Nehmen wir nun an, Sie fügen die Spalte FIRST_NAME als Spalte für Aggregationsrichtlinien hinzu. Nun muss jede Aggregationsgruppe eine bestimmte Anzahl unterschiedlicher Werte aus den Spalten HEM und eine bestimmte Anzahl unterschiedlicher Werte aus der Spalte FIRST_NAME enthalten.

Um eine Spalte hinzuzufügen, die eine Entität identifiziert, wählen Sie der Dropdown-Liste Aggregation Policy Columns den Namen der Spalte aus.

Bemerkung

Beachten Sie, dass die Angabe, dass eine Spalte eine Entität identifiziert, es dem Verbraucher auch ermöglicht, nach dieser Spalte zu filtern und sie zu projizieren.

Mindestanzahl der Entitäten ändern

Wenn eine Spalte eine Entität identifiziert, muss jede Aggregationsgruppe eine bestimmte Anzahl unterschiedlicher Werte der Spalte enthalten. So passen Sie die Anzahl unterschiedlicher Werte einer Entität an:

  1. Suchen Sie den Abschnitt Privacy Settings » Aggregation Policies.

  2. Finden Sie die Spalte, und erhöhen oder verringern Sie dann ihren Threshold. Je höher der Schwellenwert, desto mehr unterschiedliche Werte müssen in jeder Aggregationsgruppe zurückgegeben werden, was einen stärkeren Datenschutz für die Entität bietet.

Ausführen einer Analyse mit einer SQL-Abfragevorlage

Verwenden Sie die Informationen in diesem Abschnitt, um eine erfolgreiche Abfrage in der SQL-Abfragevorlage zu schreiben.

Welche Spalten kann ich verknüpfen?

Sie können eine Verknüpfung über eine beliebige Spalte vornehmen.

Aggregationsanforderungen

Jede Tabelle in einem Reinraum, die die SQL-Abfragevorlage verwendet, hat eine Aggregationsrichtlinie. Folglich müssen alle Abfragen, die mit der Vorlage SQL-Abfragenvorlage ausgeführt werden, aggregierte Ergebnisse liefern.

Eine Anleitung, wie Sie eine erfolgreiche Abfrage für Daten schreiben, die durch eine Aggregationsrichtlinie geschützt sind, finden Sie unter

Welche Spalten kann ich projizieren?

Bei Abfragen, die mit der SQL-Abfragevorlage ausgeführt werden, gibt es Einschränkungen hinsichtlich der Spalten, die projiziert (in einer SELECT-Anweisung verwendet) werden können.

Um festzustellen, ob Ihre Abfrage eine Spalte projizieren kann:

  1. Im Abschnitt Query Configurations finden Sie die Kachel Tables.

  2. Verwenden Sie die Dropdown-Liste, um eine Tabelle auszuwählen.

  3. Suchen Sie nach Spalten, die mit einer Projektionsrichtlinie gekennzeichnet sind. Sie können alle aufgeführten Spalten projizieren, mit Ausnahme derjenigen, für die eine Projektionsrichtlinie gilt.

Nach welchen Spalten kann ich filtern?

So bestimmen Sie, nach welchen Spalten Ihre Abfrage filtern kann:

  1. Im Abschnitt Query Configurations finden Sie die Kachel Tables.

  2. Verwenden Sie die Dropdown-Liste, um eine Tabelle auszuwählen und die Spalten zu überprüfen. Sie können nach allen aufgeführten Spalten filtern.

Ergebnisse anzeigen

Um Ihre Abfrage in der Web-App auszuführen, wählen Sie Run und geben Sie dann optional einen Namen und einen Zeitplan für die Ausführung Ihrer Abfrage ein. Prüfen Sie den Abfragestatus in der Liste Analyses and Queries, um zu sehen, wann die Abfrage beendet ist. Wählen Sie eine abgeschlossene Abfrage aus, um die Ergebnisse anzuzeigen. Bei erfolgreichen Abfragen wird eine Tabelle mit den Ergebnissen angezeigt. Wenn die Ergebnistabelle bestimmte Anforderungen erfüllt, die im Folgenden beschrieben werden, können die Ergebnisse auch in einem Diagramm angezeigt werden. Snowflake bietet mehrere Diagrammtypen, darunter Balken-, Linien- und Kreisdiagramme. Wählen Sie das Ausgabeformat, indem Sie die entsprechende Schaltfläche im Abschnitt Ergebnisse auswählen.

Anforderungen grafisch darstellen

Damit Snowflake ein Diagramm erstellen kann:

  • Die Ergebnistabelle muss mindestens eine Spalte mit Messwerten (numerisch) und eine Spalte mit Dimensionen (Kategorie) enthalten

  • Der Measure-Spaltename muss das folgende Präfix oder Suffix haben (Groß-/Kleinschreibung wird nicht berücksichtigt):

    • Präfixe für Spaltennamen:

      • COUNT

      • SUM

      • AVG

      • MIN

      • MAX

      • OUTPUT

      • OVERLAP

    • Suffix des Spaltennamens:

      • _OVERLAP

Snowflake erstellt ein Diagramm, das die erste in Frage kommende Measure-Spalten und die erste Dimensionsspalte in einer Ergebnistabelle verwendet.

Einschränkungen

  • Eine ORDER BY-Klausel hat keinen Einfluss darauf, wie die Ergebnisse der Analyse angezeigt werden.

Beispielabfragen

In diesem Abschnitt erfahren Sie, was eine Abfrage enthalten kann und was nicht, wenn Sie eine Analyse mit der SQL-Abfragevorlage durchführen.

Abfragen ohne eine Aggregationsfunktion

Unter bestimmten Umständen können Sie Rückgabewerte ohne Verwendung einer Aggregationsfunktion zurückgeben.

Erlaubte

Nicht erlaubt

SELECT gender, regions
  FROM TABLE sample_db.demo.customer
  GROUP BY gender, region;
Copy
SELECT gender, regions
  FROM TABLE sample_db.demo.customer;
Copy
Allgemeine Tabellenausdrücke (Common Table Expressions, (CTEs))

Erlaubte

Nicht erlaubt

WITH audience AS
  (SELECT COUNT(DISTINCT t1.hashed_email),
    t1.status
    FROM provider_db.overlap.customers t1
    JOIN consumer_db.overlap.customers t2
      ON t1.hashed_email = t2.hashed_email
    GROUP BY t1.status);

SELECT * FROM audience;
Copy
WITH audience AS
  (SELECT t1.hashed_email,
    t1.status
    FROM provider_db.overlap.customers quoted t1
    JOIN consumer_db.overlap.customers t2
      ON t1.hashed_email = t2.hashed_email
    GROUP BY t1.status)

SELECT * FROM audience
Copy
CREATE, ALTER, TRUNCATE

Eine Abfrage kann nicht CREATE, ALTER oder TRUNCATE verwenden.

Abfrage mit Verknüpfungen

Erlaubte

SELECT p.education_level,
  c.status,
  AVG(p.days_active),
  COUNT(DISTINCT p.age_band)
  FROM  sample_database_preprod.demo.customers c
  INNER JOIN
  sample_database_preprod.demo.customers p
    ON  c.hashed_email = p.hashed_email
  GROUP BY ALL;
Copy
DATE_TRUNC

Erlaubte

SELECT COUNT(*),
  DATE_TRUNC('week', date_joined) AS week
  FROM consumer_sample_database.audience_overlap.customers
  GROUP BY week;
Copy
Bezeichner in Anführungszeichen

Erlaubte

SELECT COUNT(DISTINCT t1.”hashed_email”)
  FROM provider_sample_database.audience_overlap."customers quoted" t1
  INNER JOIN
  consumer_sample_database.audience_overlap.customers t2
    ON t1."hashed_email" = t2.hashed_email;
Copy