- Kategorien:
Systemfunktionen (Systeminformationen)
SYSTEM$LOCATE_DBT_ARTIFACTS¶
Gibt den Speicherort von Artefakten aus einer bestimmten dbt-Projektausführung zurück (z. B. manifest.json).
Verwenden Sie diese Funktion mit der DBT_PROJECT_EXECUTION_HISTORY-Funktion für den programmgesteuerten Zugriff auf dbt-Artefakte und -Protokolle.
Syntax¶
SYSTEM$LOCATE_DBT_ARTIFACTS ( '<query_id>' )
Argumente¶
query_idDie Abfrage-ID der dbt-Projektausführung, deren Dateien Sie suchen möchten.
Rückgabewerte¶
Die Funktion gibt den Dateipfad für dbt-Projekt-Artefakte aus einer Ausführung zurück (z. B. snow://dbt/DBTEST.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf3f5a-010b-4d87-0000-53493abb7cce/).
Weitere Informationen und Beispiele dazu finden Sie unter Programmgesteuert auf dbt-Artefakte und -Protokolle zugreifen.
Anforderungen an die Zugriffssteuerung¶
Diese Funktion umfasst nur Ausführungen aus Arbeitsbereichen und dbt-Projekten, in denen Sie über die folgenden Berechtigungen verfügen:
OWNERSHIP oder USAGE für Arbeitsbereiche
OWNERSHIP, USAGE oder MONITOR für dbt-Projekte
USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen. Beachten Sie, dass eine Rolle, die eine beliebige Berechtigung für ein Schema erhalten hat, es dieser Rolle erlaubt, das Schema aufzulösen. Zum Beispiel kann eine Rolle, der die CREATE-Berechtigung für ein Schema gewährt wurde, Objekte in diesem Schema erstellen, ohne auch USAGE für dieses Schema gewährt bekommen zu haben.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Nutzungshinweise¶
Diese Systemfunktion funktioniert nur für dbt-Projektobjekte. Sie ist nicht für Arbeitsbereiche verfügbar.
Abfrage-IDs, die von CREATE DBT PROJECT oder ALTER DBT PROJECT … ADD VERSION generiert wurden, werden bei dieser Systemfunktion nicht unterstützt.
Direkte Abfragen von Dateiinhalten (z. B. Abfragebeispiele) werden nicht unterstützt.
Wenn
query_idNULL oder keine dbt-Ausführung ist, erhalten Sie einen Fehler.dbt-Projektergebnisse sind bis zu 14 Tage lang verfügbar.
Dateien sind möglicherweise nicht verfügbar, wenn für eine Ausführung eine Zeitüberschreitung auftritt, die Ausführung abgebrochen wird oder fehlschlägt, bevor sie hochgeladen werden. In solchen Fällen werden die Ausführungen im dbt-Verlauf als
UNHANDLED ERRORangezeigt.Sie können diese Funktion nicht verwenden, um Protokolle für laufende Ausführungen zu erhalten, da die Protokolldatei erst nach Abschluss der Ausführung verfügbar ist.
Beispiele¶
Um den Stagingbereichspfad anzuzeigen, in dem Snowflake die Artefakte der Ausführung des dbt-Projekts gespeichert hat (d. h. den Ordner mit den Ergebnissen dieser Ausführung), verwenden Sie die Funktion SYSTEM$LOCATE_DBT_ARTIFACTS, wie im folgenden Beispiel gezeigt. Sie können diesen Pfad dann mit GET oder COPY FILES oder der Snowflake CLI verwenden, um beispielsweise manifest.json, kompiliertes SQL oder Protokolle herunterzuladen.
--Look up the most recent dbt Project execution
SET latest_query_id = (SELECT query_id
FROM TABLE(INFORMATION_SCHEMA.DBT_PROJECT_EXECUTION_HISTORY())
WHERE OBJECT_NAME = 'MY_DBT_PROJECT'
ORDER BY query_end_time DESC LIMIT 1);
--Get the dbt run logs for the most recent dbt Project execution
SELECT SYSTEM$GET_DBT_LOG($latest_query_id);
============================== 15:14:53.100781 | 46d19186-61b8-4442-8339-53c771083f16 ==============================
[0m15:14:53.100781 [info ] [Dummy-1 ]: Running with dbt=1.9.4
...
[0m15:14:58.198545 [debug] [Dummy-1 ]: Command `cli run` succeeded at 15:14:58.198121 after 5.19 seconds
--Get the location of the dbt Project archive ZIP file (see all files)
SELECT SYSTEM$LOCATE_DBT_ARTIFACTS($latest_query_id);
+-------------------------------------------------------------------------------------------------+
| SYSTEM$LOCATE_DBT_ARTIFACTS($LATEST_QUERY_ID) |
+-------------------------------------------------------------------------------------------------+
| snow://dbt/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01c01096-010c-0ccb-0000-a99506bd199e/ |
+-------------------------------------------------------------------------------------------------+
--List all the files of the retrieved dbt run
ls 'snow://dbt/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf3f5a-010b-4d87-0000-53493abb7cce/';
Sie können auch einen neuen internen Stagingbereich erstellen, den von Snowflake verwalteten Pfad für die Artefakte der angegebenen dbt-Projektausführung suchen und diese Artefakte zum Abrufen in Ihren Stagingbereich kopieren, wie im folgenden Beispiel gezeigt:
CREATE OR REPLACE STAGE my_dbt_stage ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
Weitere Informationen dazu finden Sie unter Programmgesteuert auf dbt-Artefakte und -Protokolle zugreifen.