Verwenden der Entwickler-APIs zum sequenziellen Ausführen von Vorlagen¶
Für komplexe Analysen kann es erforderlich sein, dass mehrere Vorlagen in einer bestimmten Reihenfolge ausgeführt werden, wobei manchmal die Ausgabe einer Vorlage als Eingabe für eine andere verwendet wird. Ein Anbieter kann eine Vorlagenkette erstellen, um eine Sequenz von Vorlagen zu definieren, die in einer bestimmten Reihenfolge ausgeführt werden sollen. Bei der Definition dieser Vorlagenkette kann der Anbieter angeben, ob die Ergebnisse einer bestimmten Vorlage für nachfolgende Vorlagen in der Kette verfügbar sein sollen.
Ein Reinraumbenutzer führt eine Vorlagenkette aus, um eine Analyse durchzuführen, bei der die Vorlagen in der Kette in ihrer vordefinierten Reihenfolge ausgeführt werden.
Über Zwischenergebnisse¶
Wenn ein Anbieter möchte, dass die Ergebnisse einer Vorlage auch den nachfolgenden Vorlagen in der Vorlagenkette zur Verfügung stehen, kann er einen Cache für die Ergebnisse der Vorlage erstellen. Jede Vorlage mit einem Cache hat auch eine Verfallszeit für diesen Cache.
Wenn ein Anbieter angibt, dass eine Vorlage über einen Cache verfügt, werden bei der ersten Ausführung der Vorlagenkette durch einen Benutzer die Ergebnisse dieser Vorlage in einer Tabelle im Reinraum gespeichert. Diese zugrunde liegende Tabelle ist nur für den Reinraum selbst zugänglich. Wenn ein Benutzer die Vorlagenkette das nächste Mal ausführt, prüft Snowflake Data Clean Rooms, ob der Cache abgelaufen ist, bevor die Vorlage ausgeführt wird. Die Vorlage mit den im Cache gespeicherten Ergebnissen wird erst dann wieder ausgeführt, wenn der Cache abgelaufen ist.
Nachfolgende Vorlagen in der Vorlagenkette können den Cache als Eingabe verwenden, indem Sie den entsprechenden Jinja-Parameter in die Vorlage aufnehmen.
Vorlagenkette definieren¶
Ein Anbieter verwendet den Befehl provider.add_template_chain
, um eine Vorlagenkette zu erstellen. Die Vorlagen, die der Anbieter der neuen Vorlagenkette hinzufügen möchte, müssen bereits vorhanden sein, bevor er die Vorlagenkette erstellt.
Der Befehl provider.add_template_chain
akzeptiert die folgenden Argumente:
Name eines Reinraums (string).
Name der Vorlagenkette (string)
Vorlagen in der Vorlagenette (Array von JSON-Objekten).
Ein Beispiel für die Verwendung des Befehls provider.add_template_chain
zur Erstellung einer Vorlagenkette finden Sie unter Beispiel.
Hinzufügen von Vorlagen zur Vorlagenkette¶
Der Anbieter definiert, welche Vorlagen Teil einer Vorlagenkette sind, indem er ein Array von JSON-Objekten an provider.add_template_chain
übergibt, wobei jedes JSON-Objekt eine Vorlage darstellt. Die Reihenfolge der JSON-Objekte bestimmt die Reihenfolge, in der die Vorlagen ausgeführt werden.
Das JSON-Objekt für eine Vorlage kann die folgenden Felder enthalten:
template_name
(string)Gibt die Vorlage an, die der Vorlagenkette hinzugefügt wird. Die Vorlage muss bereits vorhanden sein.
Dieses Feld ist erforderlich.
cache_results
(boolean)Legt fest, ob die Ergebnisse der Vorlage zwischengespeichert werden, sodass andere Vorlagen in der Vorlagenkette darauf zugreifen können. Um Ergebnisse zwischenzuspeichern, geben Sie TRUE an.
Dieses Feld ist erforderlich. Falls TRUE, sind auch die Felder
output_table_name
undcache_expiration_hours
erforderlich.output_table_name
(string)Wenn Sie
cache_results = TRUE
wählen, geben Sie den Namen der Snowflake-Tabelle an, in der die Vorlagenergebnisse gespeichert werden.Dieses Feld ist erforderlich, wenn
cache_results = TRUE
.jinja_output_table_param
(string)Wenn
cache_results = TRUE
verwendet wird, gibt es den Namen des Jinja-Parameters an, den andere Vorlagen enthalten müssen, um die inoutput_table_name
gespeicherten Ergebnisse zu akzeptieren.Dieses Feld ist optional.
cache_expiration_hours
(Ganzzahl)Wenn Sie
cache_results = TRUE
wählen, geben Sie die Anzahl der Stunden an, bevor die Ergebnisse im Cache gelöscht werden. Wenn der Cache abläuft, wird bei der nächsten Ausführung der Vorlagenkette der Cache mit den Ergebnissen der Vorlage aktualisiert.Dieses Feld ist erforderlich, wenn
cache_results = TRUE
.
Beispiel¶
In diesem Beispiel möchte der Anbieter:
Erstellen Sie eine Vorlagenkette
insights_chain
im Reinraumcollab_clean_room
.Definieren Sie die Vorlagenkette so, dass die Vorlage
crosswalk
vor der Vorlagetransaction_insights
ausgeführt wird.Speichern Sie die Ergebnisse der Vorlage
crosswalk
, damit sie als Eingabe für die Vorlagetransaction_insights
verwendet werden können.
CALL samooha_by_snowflake_local_db.provider.add_template_chain(
'collab_clean_room',
'insights_chain',
[
{
'template_name': 'crosswalk',
'cache_results': True,
'output_table_name': 'crosswalk',
'jinja_output_table_param': 'crosswalk_table_name',
'cache_expiration_hours': 2190
},
{
'template_name': 'transaction_insights',
'cache_results': False
}
]
);
Weitere Informationen zu den einzelnen JSON-Objekten finden Sie unter Hinzufügen von Vorlagen zur Vorlagenkette.
Eine Vorlagenkette ausführen¶
Ein Reinraumbenutzer führt den Befehl consumer.run_analysis
aus, um eine Vorlagenkette auszuführen. Dies ist derselbe Befehl, der auch für die Ausführung einer einzelnen Vorlage verwendet wird. Bei der Ausführung der Vorlagenkette werden die einzelnen Vorlagen in der Kette in ihrer vordefinierten Reihenfolge ausgeführt, um das Endergebnis zu erhalten.
Der Befehl consumer.run_analysis
akzeptiert Argumente, die er an die Jinja-Vorlagen in der Vorlagenkette weitergibt. Sie können feststellen, welche Argumente von den Vorlagen in der Kette erwartet werden, indem Sie den Befehl consumer.get_arguments_from_template_chain
ausführen.
Die an consumer.run_analysis
übergebenen Argumente können für eine bestimmte Vorlage in der Kette spezifisch sein oder für jede Vorlage in der Kette gelten.
- Universelle Argumente
Wenn Sie ein Argument an jede Vorlage in der Vorlagenkette übergeben möchten, ist die Syntax dieselbe wie bei der Verwendung von
consumer.run_analysis
zur Ausführung einer einzelnen Vorlage. Der folgende Befehl übergibt zum Beispiel den Wert des Argumentswhere_clause
an alle Vorlagen in der Vorlagenkette:CALL samooha_by_snowflake_local_db.consumer.run_analysis( 'collab_clean_room', 'insights_chain', ['MY_CONSUMER_DB.C_SCHEMA.CONVERSIONS'], ['PROVIDER_DB.P_SCHEMA.EXPOSURES'], object_construct( 'where_clause', 'p.EMAIL=c.EMAIL' ) );
- Vorlagenspezifische Argumente
Wenn Sie ein Argument an eine bestimmte Vorlage übergeben möchten, fügen Sie ein weiteres
object_construct
als untergeordnetes Element der obersten Ebeneobject_construct
mit dem Namen der Vorlage als Feldnamen hinzu. Der folgende Befehl übergibt beispielsweise den Wert des Argumentsdimensions
nur an die Vorlagecrosswalk_template
:CALL samooha_by_snowflake_local_db.consumer.run_analysis( 'collab_clean_room', 'insights_chain', ['MY_CONSUMER_DB.C_SCHEMA.CONVERSIONS'], ['PROVIDER_DB.P_SCHEMA.EXPOSURES'], object_construct( 'where_clause', 'p.EMAIL=c.EMAIL', 'crosswalk_template', object_construct( 'dimensions', ['p.CAMPAIGN'] ) ) );
Befehle der Vorlagenkette¶
Sie können die folgenden Befehle verwenden, um mit Vorlagenketten zu arbeiten:
Befehl |
Beschreibung |
---|---|
|
Erzeugt eine neue Vorlagenkette. |
|
Liefert alle Vorlagenketten, die dem Reinraum hinzugefügt wurden. |
|
Gibt die Definition einer Vorlagenkette zurück. |
|
Löscht eine Vorlagenkette aus dem Reinraum. |
|
Löscht alle Vorlagenketten aus dem Reinraum fallen. |
|
Gibt die erwarteten Argumente für alle Vorlagen in der Vorlagenkette zurück. |
Weitere Informationen zu diesen Befehlen finden Sie im Folgenden: