Verwenden interner Tabellen für mehrstufige Workflows

Übersicht

Viele Clean-Room-Anwendungsfälle beinhalten die Ausführung einer einzelnen SQL-Abfrage über eine oder mehrere Tabellen in einem Clean Room und die Anzeige der Ergebnisse in der Antwort. Es gibt jedoch Anwendungsfälle, in denen Sie möglicherweise eine interne Tabelle erstellen müssen, die in nachfolgenden Vorlagen verwendet werden kann, um einen mehrstufigen Arbeitsablauf zu unterstützen. Zum Beispiel ein Machine Learning-Ablauf, bei dem das Modell einmal für ein Datenset trainiert wird und dann mehrmals für unterschiedliche Eingabedaten ausgeführt wird, entweder einzeln oder in Batches.

Erstellen interner Tabellen

Sie können interne Tabellen innerhalb eines Clean Rooms erstellen, um Zwischenergebnisse zu speichern oder als persistenten Speicher für die nachgelagerte Nutzung (z. B. um Trainingsdaten zu speichern, die für mehrere Ausführungen verwendet werden). Weitere Informationen dazu finden Sie unter Eigenschaften und Hinweise zu internen Tabellen:

  • Sie können interne Tabellen erstellen, indem Sie eine Clean-Room-Vorlage verwenden, die CREATE TABLE ausführt, oder indem Sie ein UDF/UDTF ausführen, das Python zur Erstellung einer Tabelle nutzt.

  • Interne Tabellen können im cleanroom-Schema erstellt werden, das standardmäßig verfügbar ist. Wenn ein benutzerdefiniertes Schema bevorzugt wird, muss das Schema zuerst erstellt werden, bevor die Tabelle erstellt wird.

  • Standardmäßig sind interne Tabellen nur für genehmigte Vorlagen im Clean Room zugänglich. Wenn der Zugriff außerhalb von Vorlagen gewährt werden muss, dann benötigt die CLEANROOM_PUBLIC_ROLE-Anwendungsrolle des Clean Rooms entsprechende Berechtigungen. So kann beispielsweise folgende Berechtigung erteilt werden: GRANT SELECT ON TABLE CLEANROOM.MY_TABLE TO APPLICATION ROLE CLEANROOM_PUBLIC_ROLE;

  • Wenn Sie ordnungsgemäßen Zugriff haben, können Sie die internen Tabellen in Ihrer Zusammenarbeit auflisten. Interne Tabellen finden Sie unter:samp:SFDCR_{collaboration_name}.cleanroom. Sie können aufgelistet werden, indem Sie den folgenden SQL-Code ausführen:

    SHOW TABLES IN SCHEMA SFDCR_collaboration_name.CLEANROOM;.

  • Interne Tabellen werden gelöscht, wenn die Zusammenarbeit entfernt wird. Wenn jedoch eine interne Tabelle so konzipiert ist, dass sie eine kürzere Lebensdauer hat als die Zusammenarbeit, sollten Sie in Erwägung ziehen, die Tabelle zu löschen, wenn sie nicht mehr benötigt wird.

Hier sind einige Beispiele für die Erstellung einer internen Tabelle:

Eine JinjaSQL-Vorlage kann eine interne Tabelle erstellen, was bei einigen Typen der Aktivierung geschieht.

Diese Beispielvorlage erstellt die Tabelle und gibt den Tabellennamen zurück, sodass der Name als Parameter an andere Vorlagen übergeben werden kann.

CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.REGISTER_TEMPLATE(
  $$
  api_version: 2.0.0
  spec_type: template
  name: my_test_template
  version: V1
  type: sql_analysis
  description: Simple join example. Saves to table analysis_results
  template:
    BEGIN
    CREATE OR REPLACE TABLE cleanroom.analysis_results AS
      SELECT count(*) AS ITEM_COUNT, p1.status, p1.age_band
      FROM IDENTIFIER({{ source_table[0] }}) AS p1
      JOIN IDENTIFIER({{ source_table[1] }}) AS p2
      ON IDENTIFIER({{ join_col_1 | join_policy }}) = IDENTIFIER({{ join_col_2 | join_policy }})
      GROUP BY p1.status, p1.age_band;
    RETURN 'analysis_results';
    END;
  $$
  );