EXECUTE TASK¶
Löst manuell eine asynchrone Einzelausführung einer Aufgabe aus (entweder eine eigenständige Aufgabe oder die Stammaufgabe in einem Task-Graphen), unabhängig von dem für die Aufgabe definierten Zeitplan.
Die erfolgreiche Ausführung einer Stammaufgabe löst eine kaskadierende Ausführung der untergeordneten Aufgaben im Task-Graphen aus, sobald deren vorhergehende Aufgabe abgeschlossen ist, so als ob die Stammaufgabe nach ihrem definierten Zeitplan ausgeführt worden wäre.
Außerdem können Sie manuell das erneute Ausführen einer zuvor fehlgeschlagenen Aufgabe auslösen.
- Siehe auch:
CREATE TASK , DESCRIBE TASK , ALTER TASK , DROP TASK , SHOW TASKS
Syntax¶
EXECUTE TASK <name>
[ USING CONFIG = <configuration_string> ]
EXECUTE TASK <name> RETRY LAST
Parameter¶
nameBezeichner für die auszuführende eigenständige Aufgabe bzw. Stammaufgaben. Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß- und Kleinschreibung zu beachten.
USING CONFIG = configuration_stringGibt eine Konfigurationszeichenfolge in gültigem JSON-Format für diese einzelne Ausführung an. Dieser Parameter erstellt eine neue Ausführung mit der dynamisch angegebenen Konfiguration, ändert aber nicht die Aufgabendefinition.
Snowflake führt die dynamische Konfiguration mit der Standardkonfiguration zusammen, d. h. mit dem CONFIG-Parameter, den Sie in der Aufgabendefinition mit CREATE oder ALTER festgelegt haben. Für übereinstimmende Felder verwendet Snowflake die dynamisch angegebenen Werte. Für nicht übereinstimmende Felder verwendet Snowflake die Werte aus der Standardkonfiguration. Ein Beispiel dazu finden Sie unter Verwenden einer dynamischen CONFIG.
Die Zeichenfolge für die Konfiguration hat das gleiche Format wie der CONFIG-Parameter in CREATE TASK oder ALTER TASK:
CONFIG = $${"string1": value1 [, "string2": value2, ...] }$$
Example:
CONFIG = $${"learning_rate": 0.2, "environment": "testing"}$$
RETRY LASTFühren Sie die letzte fehlgeschlagene Aufgabe des Task-Graphen erneut aus, indem Sie
nameneu starten, an der die Aufgaben fehlgeschlagen sind.Um eine Aufgabe erneut auszuführen, müssen die folgenden Bedingungen erfüllt sein:
Die letzte Ausführung des Task-Graphen muss sich im Status FAILED oder CANCELED befinden.
Der Task-Graph darf seit der letzten Ausführung nicht verändert worden sein.
Der Task-Graph muss innerhalb der letzten 14 Tagen ausgeführt oder seine Ausführung muss erneut versucht worden sein.
To view task history, see either the TASK_HISTORY table function or the Tasks page on Snowsight.
Bemerkung
RETRY LAST erstellt eine neue Task-Graph-Ausführung, die mit der Ausführung der letzten fehlgeschlagenen Aufgabe(n) beginnt.
Insbesondere werden alle FAILED- oder CANCELED-Aufgabenausführungen sofort erneut ausgeführt, und die zugehörigen untergeordneten Aufgaben werden geplant, wenn alle ihre Vorgänger erfolgreich ausgeführt wurden.
Außerdem hat die neue Task-Graph-Ausführung, die durch den Wiederholungsversuch erzeugt wird, einen ATTEMPT NUMBER-Wert, der um eins größer ist als bei der vorherigen fehlgeschlagenen Task-Graph-Ausführung, sowie denselben GRAPH_RUN_GROUP_ID-Wert wie die wiederholte oder ursprüngliche Task-Graph-Ausführung.
Nutzungshinweise¶
Die Ausführung einer Aufgabe erfordert entweder die Berechtigung OWNERSHIP oder OPERATE für diese Aufgabe.
Wenn mit dem EXECUTE TASK-Befehl eine Aufgabenausführung ausgelöst wird, überprüft Snowflake, ob die Rolle mit der Berechtigung OWNERSHIP für die Aufgabe auch die Berechtigung USAGE für das der Aufgabe zugewiesene Warehouse sowie die globale Berechtigung EXECUTE TASK hat. Wenn nicht, wird ein Fehler erzeugt.
Aufgaben werden immer mit den Berechtigungen der Rolle des ursprünglichen Eigentümers ausgeführt, selbst wenn eine andere Rolle mit der OPERATE-Berechtigung EXECUTE TASK zum Ausführen der Aufgabe verwendet.
Standardmäßig führt Snowflake Aufgaben unter Verwendung des Systembenutzers aus, der über die Berechtigungen der Rolle des Aufgabeneigentümers verfügt. Um eine Aufgabe als ein bestimmter Benutzer auszuführen, konfigurieren Sie die Aufgabe mit EXECUTE AS USER. Weitere Informationen dazu finden Sie unter Aufgaben mit Benutzerberechtigungen ausführen.
Für die Option USING CONFIG gilt:
Wenn der Task-Graph gerade ausgeführt wird und Sie diesen Befehl ausführen, wartet Snowflake, bis die aktuelle Ausführung abgeschlossen ist, bevor eine neue Ausführung mit der dynamischen Konfiguration gestartet wird.
Wenn Sie diesen Befehl während der Ausführung einer Aufgabe mehrfach ausführen, verwendet Snowflake für die nächste Ausführung die Konfiguration des letzten Befehls. Frühere Konfigurationen werden ersetzt und nicht ausgeführt.
Die dynamische Konfiguration gilt nur für die einzelne Ausführung, die durch diesen Befehl ausgelöst wird. Nachfolgende geplante Ausführungen verwenden den Standard-CONFIG-Parameter aus der Aufgabendefinition.
Mit dem SQL-Befehl kann nur eine eigenständige Aufgabe oder die Stammaufgabe im Task-Graphen ausgeführt werden. Wenn eine untergeordnete Aufgabe eingegeben wird, gibt der Befehl einen Benutzerfehler zurück.
Durch die manuelle Ausführung einer eigenständigen oder Stammaufgabe wird eine Version der Aufgabe erstellt. Die eigenständige Aufgabe bzw. der gesamte Task-Graph schließt seine Ausführung mit dieser Version ab. Weitere Informationen zu Aufgabenversionen finden Sie unter Versionieren von Aufgabenausführungen.
Eine angehaltene Stammaufgabe wird ohne Fortsetzung der Aufgabe ausgeführt. Es besteht keine Notwendigkeit, vor Ausführung dieses SQL-Befehls die Stammaufgabe explizit fortzusetzen. Allerdings setzt EXECUTE TASK nicht automatisch untergeordnete Aufgaben im Task-Graphen fort. Der Befehl überspringt alle untergeordneten Aufgaben, die angehalten sind.
Um alle abhängigen Aufgaben, die in einem Task-Graphen an eine Stammaufgabe gebunden sind, rekursiv fortzusetzen, fragen Sie die Funktion SYSTEM$TASK_DEPENDENTS_ENABLE ab, anstatt jede Aufgabe einzeln zu aktivieren (mit ALTER TASK … RESUME).
Beim Testen neuer oder geänderter Task-Graphen empfiehlt es sich, die Stammaufgabe so einzustellen, dass sie zwar nach dem vorgesehenen Zeitplan der Produktionsumgebung ausgeführt wird, aber im angehaltenen Status belassen wird. Wenn Sie den Task-Graphen erfolgreich getestet haben, setzen Sie die Stammaufgabe fort. Beachten Sie, dass Sie alle zum Testen angehaltenen untergeordneten Aufgaben im Task-Graphen fortsetzen müssen, denn andernfalls werden sie während der Ausführung des Task-Graphen übersprungen.
Wenn keine Instanz der Aufgabe läuft, beginnt sofort eine neue Ausführung.
Wenn eine andere Instanz geplant ist (d. h. wenn die Aufgabe den Status SCHEDULED in der Ausgabe von TASK_HISTORY anzeigt), ersetzt die angeforderte Ausführung die geplante Ausführung. Die angeforderte Ausführung beginnt sofort, wobei der aktuelle Zeitstempel als geplante Zeit verwendet wird.
Wenn sich die Aufgabe oder das Aufgabendiagramm gerade in einer Warteschlange befindet oder ausgeführt wird (d. h. wenn die Aufgabe in der TASK_HISTORY-Ausgabe den Status EXECUTING hat), dann wird die aktuelle Ausführung mit der Aufgabenversion fortgesetzt, die bei der Ausführung des Befehls aktuell war. Eine neue Ausführung wird dann für den Start geplant, und zwar zu einem Zeitpunkt, der vom Aufgabentyp abhängt:
Bei eigenständigen Aufgaben wird eine neue Ausführung geplant, nachdem die aktuelle Ausführung abgeschlossen ist.
Für Aufgabendiagramme:
Wenn ALLOW_OVERLAPPING_EXECUTION = FALSE (Standardeinstellung), wird eine neue Ausführung geplant, die nach Abschluss des aktuellen Aufgabendiagramms beginnt.
Wenn ALLOW_OVERLAPPING_EXECUTION = TRUE ist und die aktuell ausgeführte Aufgabe eine Stammaufgabe ist, wird eine neue Ausführung geplant, die nach Beendigung der Stammaufgabe startet.
Wenn ALLOW_OVERLAPPING_EXECUTION = TRUE und die aktuell ausgeführte Aufgabe eine untergeordnete Aufgabe ist, beginnt sofort eine neue Ausführung.
Wenn der Befehl EXECUTE TASK erneut ausgeführt wird, bevor die nächste geplante Ausführung beginnt, ersetzt die angeforderte Ausführung die geplante Ausführung.
Wenn eine Aufgabe mit einem unerwarteten Fehler fehlschlägt, können Sie eine Benachrichtigung über den Fehler erhalten. Weitere Informationen zum Konfigurieren von Aufgabenfehlerbenachrichtigungen finden Sie unter Aktivieren von Benachrichtigungen für Aufgaben.
Zum Anzeigen der Aufgabeninformationen haben Sie folgende Möglichkeiten:
Wählen Sie in Snowsight im Navigationsmenü Transformation » Tasks aus.
Rufen Sie die Funktion COMPLETE_TASK_GRAPHS auf, und prüfen Sie die Ergebnisse.
Beispiele¶
Die folgenden Beispiele zeigen, wie Sie eine Aufgabenausführung manuell auslösen und wie Sie eine dynamische CONFIG verwenden.
Manually trigger a task run¶
Manuelles Auslösen der Ausführung einer Aufgabe namens mytask:
EXECUTE TASK mytask;
Verwenden einer dynamischen CONFIG¶
Erstellen Sie eine Stammaufgabe namens my_root_task mit einer Standardkonfiguration:
CREATE OR REPLACE TASK my_root_task
WAREHOUSE = regress
SCHEDULE = '10 m'
CONFIG = $${
"environment": "production",
"output_paths": {
"logs": "/prod/logs",
"results": "/prod/results"
}
}$$
AS ...;
Führen Sie nun die Aufgabe aus und geben Sie eine dynamische Konfiguration an:
EXECUTE TASK my_root_task
USING CONFIG=$${
"output_paths": {
"results": "/temp/testing"
}
}$$;
Das folgende Beispiel zeigt die resultierende Konfiguration für diese Ausführung:
{
"environment": "production",
"output_paths": {
"logs": "/prod/logs",
"results": "/temp/testing"
}
}
Die Felder environment und output_paths.logs bleiben gegenüber der Standardkonfiguration unverändert; nur output_paths.results wird mit dem dynamischen Wert aktualisiert.