- Catégories :
Fonctions système (Informations système)
SYSTEM$LOCATE_DBT_ARTIFACTS¶
Renvoie l’emplacement des artefacts d’une exécution de projet dbt spécifiée (par exemple, manifest.json).
Utilisez cette fonction avec la fonction DBT_PROJECT_EXECUTION_HISTORY pour accéder aux artefacts et aux journaux dbt par programmation.
Syntaxe¶
SYSTEM$LOCATE_DBT_ARTIFACTS ( '<query_id>' )
Arguments¶
query_idL’ID de requête de l’exécution du projet dbt dont vous souhaitez localiser les fichiers.
Renvoie¶
La fonction renvoie le chemin d’accès au fichier pour les artefacts de projet dbt d’une exécution (par exemple, snow://dbt/DBTEST.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf3f5a-010b-4d87-0000-53493abb7cce/).
Pour plus d’informations et d’exemples, voir Accéder aux artefacts et aux journaux dbt de manière programmatique.
Exigences en matière de contrôle d’accès¶
Cette fonction comprend uniquement les exécutions à partir d’espaces de travail et de projets dbt pour lesquels vous disposez des privilèges suivants :
OWNERSHIP ou USAGE pour les espaces de travail
OWNERSHIP, USAGE ou MONITOR pour les projets dbt
Le privilège USAGE relatif à la base de données et au schéma parents est exigé pour effectuer des opérations sur tout objet d’un schéma. Notez qu’un rôle doté d’un privilège quelconque sur un schéma permet à ce rôle de résoudre le schéma. Par exemple, un rôle doté du privilège CREATE sur un schéma peut créer des objets sur ce schéma sans également avoir le privilège USAGE attribué sur ce schéma.
Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.
Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.
Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.
Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.
Notes sur l’utilisation¶
Cette fonction système fonctionne uniquement sur les objets de projet dbt ; elle n’est pas disponible pour les espaces de travail.
Les IDs de requête générés depuis CREATE DBT PROJECT ou ALTER DBT PROJECT … ADD VERSION ne sont pas pris en charge pour cette fonction système.
L’interrogation directe du contenu de fichiers (par exemple, Exemples de requête) n’est pas prise en charge.
Si
query_idest NULL ou n’est pas une exécution dbt, vous obtiendrez une erreur.Les résultats du projet dbt sont disponibles pour un maximum de 14 jours.
Les fichiers peuvent être indisponibles si une exécution expire, est annulée ou échoue avant leur téléchargement. Dans ce cas, les exécutions apparaissent en tant que
UNHANDLED ERRORdans l’historique dbt.Vous ne pouvez pas utiliser cette fonction pour obtenir des journaux sur les exécutions en cours, car le fichier des journaux n’est disponible qu’une fois l’exécution terminée.
Exemples¶
Pour afficher le chemin de la zone de préparation où Snowflake a stocké les artefacts de l’exécution du projet dbt (c’est-à-dire le dossier de résultats pour cette exécution), utilisez la fonction SYSTEM$LOCATE_DBT_ARTIFACTS, comme illustré dans l’exemple suivant. Vous pouvez ensuite utiliser ce chemin avec GET ou COPY FILES ou la CLI Snowflake pour télécharger des éléments comme manifest.json, SQL compilé ou des journaux.
--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/';
Vous pouvez également créer une nouvelle zone de préparation interne, localiser le chemin géré par Snowflake pour les artefacts de l’exécution du projet dbt spécifié, et copier ces artefacts dans votre zone de préparation pour les récupérer, comme indiqué dans l’exemple suivant :
CREATE OR REPLACE STAGE my_dbt_stage ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
Pour plus d’informations, voir Accéder aux artefacts et aux journaux dbt de manière programmatique.