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 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:
Starten Sie den Reinraum-Erstellungsprozess.
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.
Wählen Sie in Schritt 3 Horizontal » SQL Query aus der Liste der Vorlagen und konfigurieren Sie dann die SQL Abfragevorlage.
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
Verbrauchern SELECT und das Filtern nach einer Nicht-Join-Spalte erlauben
- 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 SpalteHEM
enthalten. Nehmen wir nun an, Sie fügen die SpalteFIRST_NAME
als Spalte für Aggregationsrichtlinien hinzu. Nun muss jede Aggregationsgruppe eine bestimmte Anzahl unterschiedlicher Werte aus den SpaltenHEM
und eine bestimmte Anzahl unterschiedlicher Werte aus der SpalteFIRST_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:
Suchen Sie den Abschnitt Privacy Settings » Aggregation Policies.
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
Abfrageanforderungen für Aggregationsrichtlinien. In diesem Abschnitt können Sie zum Beispiel feststellen, dass die Funktionen MIN und MAX zur Aggregation den Anforderungen der Abfrage nicht genügen und daher nicht verwendet werden können.
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:
Im Abschnitt Query Configurations finden Sie die Kachel Tables.
Verwenden Sie die Dropdown-Liste, um eine Tabelle auszuwählen.
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:
Im Abschnitt Query Configurations finden Sie die Kachel Tables.
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;
SELECT gender, regions FROM TABLE sample_db.demo.customer;
- 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;
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
- 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;
- DATE_TRUNC
Erlaubte
SELECT COUNT(*), DATE_TRUNC('week', date_joined) AS week FROM consumer_sample_database.audience_overlap.customers GROUP BY week;
- 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;