SQL-Freiformabfragen

Ein Datenanbietender kann erlauben, dass seine Daten über eine Vorlage oder Freiformabfragen einem Analyseausführenden zugänglich gemacht werden. Wenn ein Datenanbietender Freiformabfragen für ein Datenset aktiviert, können alle Analyseausführenden, die Zugriff auf das Datenangebot haben,SQL-Abfragen in ihrer Umgebung für dieses Datenset ausführen.

Sowohl die Analyseausführende als auch die Datenanbietende müssen sich der Zusammenarbeit angemeldet haben, bevor die Daten verfügbar sind.

Übersicht

Hier sind die Schritte, um Freiformabfragen für Daten in einem Clean Room auszuführen:

Datenanbietende

  1. Registrieren Sie ein Datenangebot, das ein oder mehrere Datensets enthält, für das allowed_analyses: template_and_freeform_sql angegeben ist.

    Wenn Datenanbietende Snowflake-Richtlinien auf Spalten im Datenset anwenden möchten, müssen sie diese Richtlinien vor der Registrierung der Daten erstellen und die Richtlinien mit den Spalten in der Datenangebotsspezifikation verknüpfen.

  2. Verknüpfen Sie das Datenangebot auf die standardmäßige Weise mit der Zusammenarbeit.

Analyseausführende

Nachdem die Zusammenarbeit für ihr Konto installiert ist, rufen Analyseausführende VIEW_DATA_OFFERINGS auf. Wenn in der Spalte freeform_sql_view_name ein Wert vorhanden ist, kann das Datenset direkt für die in dieser Spalte angegebene Ansicht abgefragt werden.

Alle Richtlinien, die in freeform_sql_column_policies aufgeführt sind, werden von der Zusammenarbeit auf die Daten angewendet. Alle Richtlinien, die vom Datenanbietenden direkt auf die Quelldaten angewendet werden, werden zwar durchgesetzt, werden aber in dieser Spalte nicht angezeigt.

Details zum Datenanbietenden und zu den Analyseschritten finden Sie in den folgenden Abschnitten.

Registrieren eines Freiformabfrage-Datensets (Datenanbietende)

Die folgenden Schritte zeigen, wie Sie Freiformabfragen während der Registrierung von Datenangeboten aktivieren:

  1. Geben Sie allowed_analyses: template_and_freeform_sql in der Zusammenarbeitsspezifikation. So kann das Dataset entweder mit einer Vorlage oder einer Freiformabfrage abgefragt werden.

    ...
    datasets:
    - alias: customers_view
      data_object_fqn: PROVIDER_DB.DATA_SCH.CUSTOMERS
      object_class: custom
      allowed_analyses: template_and_freeform_sql
      schema_and_template_policies:
        HASHED_EMAIL:
          category: join_standard
          column_type: hashed_email_b64_encoded
    ...
    

    Nur die unter schema_and_template_policies aufgeführten Spalten sind für die Abfrage über Vorlagen oder Freeformabfragen verfügbar.

  2. Wenn Sie Snowflake-Richtlinien in Freiformabfragen anwenden möchten, ohne sie auf Ihre Quelldaten anzuwenden, führen Sie die folgenden Schritte aus:

    1. Erstellen Sie Ihre Snowflake-Richtlinien auf die standardmäßige Weise. Wenden Sie diese nicht auf Ihre Tabelle an.

      CREATE OR REPLACE AGGREGATION POLICY PROVIDER_DB.DATA_SCH.MIN_GROUP_SIZE_POLICY
        AS () RETURNS AGGREGATION_CONSTRAINT ->
          AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5);
      

      Die Rolle, die die Zusammenarbeit erstellt, muss die USAGE-Berechtigung für die Datenbank, das Schema und das Richtlinienobjekt haben.

      Diese Richtlinien sind dynamisch verknüpft. Alle Änderungen, die Sie an diesen Richtlinien vornehmen, wirken sich sofort auf alle Datensets aus, die diese Richtlinien verwenden, auch wenn das Datenangebot bereits registriert und verknüpft ist.

    2. Weisen Sie Ihre Richtlinien in der Datenangebotsspezifikation im Feld freeform_sql_policies zu. Wichtig: Alle unter freeform_sql_policies verwendeten Spaltennamen müssen den automatisch generierten Spaltennamen verwenden, wenn die Spalte umbenannt wurde. Die Umbenennung wirkt sich nur auf Spalten des Kategorie „join-standard“ aus.

      Diese Richtlinien werden nicht direkt auf die Quelltabelle angewendet, sondern nur auf die von der Zusammenarbeit registrierte Ansicht.

      schema_and_template_policies:
        HASHED_EMAIL:                                  # Source column name.
          category: join_standard
          column_type: hashed_email_b64_encoded        # Column is renamed to the column_type value.
        STATUS:
          category: passthrough
        AGE_BAND:
          category: passthrough
        DAYS_ACTIVE:
          category: passthrough
        INCOME_BRACKET:
          category: passthrough
      freeform_sql_policies:          # Apply agg, join, and masking policies created by the data owner to these columns.
        aggregation_policy:
          name: PROVIDER_DB.DATA_SCH.MIN_GROUP_SIZE_POLICY
          entity_keys:
            - HASHED_EMAIL_B64_ENCODED
        join_policy:
          name: PROVIDER_DB.DATA_SCH.EMAIL_JOIN_POLICY
          columns:
            - HASHED_EMAIL_B64_ENCODED    # This is the renamed column.
        masking_policies:
          - name: PROVIDER_DB.DATA_SCH.MASK_INCOME_POLICY
            columns:
              - INCOME_BRACKET
      
  3. Registrieren Sie das Datenangebot auf die standardmäßige Weise, indem Sie REGISTER_DATA_OFFERING aufrufen.

Ausführen von Freiformabfragen (Analyseausführende)

Wenn ein Analyseausführender VIEW_DATA_OFFERINGS aufruft, wenn ein Wert in der Spalte``freeform_sql_view_name`` angezeigt wird, kann die SQL-Freiformansicht direkt abgefragt werden, ohne eine Vorlage zu verwenden. Alle Snowflake-Richtlinien, die auf die Quelltabelle angewendet oder im Abschnitt freeform_sql_policies des Datenangebots definiert sind, werden in den Abfragen erzwungen.

CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_DATA_OFFERINGS($collaboration_name);

Spalte

Wert

TEMPLATE_VIEW_NAME

data_provider.provider_customers_V1.customers

TEMPLATE_JOIN_COLUMNS

hashed_email_b64_encoded

ANALYSIS_ALLOWED_COLUMNS

STATUS, AGE_BAND, DAYS_ACTIVE, INCOME_BRACKET

ACTIVATION_ALLOWED_COLUMNS

FREEFORM_SQL_VIEW_NAME

SFDCR_FREEFORM_SQL_DEMO.FREEFORM_SQL.DATA_PROVIDER_PROVIDER_CUSTOMERS_V1_CUSTOMERS

FREEFORM_SQL_COLUMN_POLICIES

{
  "aggregation_policy": {"entity_keys": ["HASHED_EMAIL_B64_ENCODED"]},
  "masking_policy": {"columns": ["INCOME_BRACKET"]},
  "join_policy": {"columns": ["HASHED_EMAIL_B64_ENCODED"]},
  "no_policy": {"columns": ["DAYS_ACTIVE", "AGE_BAND", "STATUS"]}
}

SHARED_BY

data_provider

SHARED_WITH

["data_consumer"]

DATA_OFFERING_ID

provider_customers_V1

Sie müssen den Wert von freeform_sql_view_name verwenden, :emph:` nicht` den Wert von template_view_name.

SELECT status, COUNT(*) AS customer_count
  FROM SFDCR_FREEFORM_SQL_DEMO.FREEFORM_SQL.DATA_PROVIDER_PROVIDER_CUSTOMERS_V1_CUSTOMERS AS t
  GROUP BY status
  ORDER BY customer_count DESC;

Beispiel: Zusammenarbeit zwischen zwei Parteien

Das folgende Beispiel zeigt eine Zusammenarbeit mit zwei Parteien, wobei eine Partei (der „Anbietende“) die Person mit Eigentumsrechten an der Zusammenarbeit und ein Datenanbietender für den Verbrauchenden ist. Die andere Partei (der „Verbrauchende“) ist ein Analyseausführender, der die Vorlage ausführen und die vom Anbietenden bereitgestellten Daten verwenden, aber auch SQL-Freiformabfragen für die Daten ausführen kann, die den in der Spezifikation des Datenanbieternden definierten Richtlinien unterliegen.

Um dieses Beispiel auszuführen, müssen Sie über zwei separate Konten mit installierten Snowflake Data Clean Rooms verfügen.

Sie können die Dateien entweder herunterladen und in Ihr Snowflake-Konto hochladen oder den Beispielcode kopieren und in die Arbeitsblätter von zwei separaten Konten einfügen, indem Sie die Snowsight verwenden.

Laden Sie die SQL-Quelldateien herunter, und laden Sie diese dann in zwei separate Konten hoch, für die Snowflake Data Clean Rooms installiert sind: