- カテゴリ:
システム関数 (システム情報)
SYSTEM$LOCATE_DBT_ARTIFACTS¶
指定されたdbtプロジェクトの実行からアーティファクトの場所を返します(例: manifest.json)。
この関数を DBT_PROJECT_EXECUTION_HISTORY 関数と組み合わせて使用し、プログラムでdbtのアーティファクトとログにアクセスします。
構文¶
SYSTEM$LOCATE_DBT_ARTIFACTS ( '<query_id>' )
引数¶
query_idファイルを検索するdbtプロジェクト実行のクエリ ID。
戻り値¶
実行からのdbtプロジェクトアーティファクトのファイルパスを返します(例: snow://dbt/DBTEST.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf3f5a-010b-4d87-0000-53493abb7cce/)
詳細と例については、プログラムでdbtのアーティファクトとログにアクセスする をご参照ください。
アクセス制御の要件¶
この関数には、以下の権限があるワークスペースおよびdbtプロジェクトからの実行のみが含まれます。
ワークスペースに対する OWNERSHIP または USAGE 権限
dbtプロジェクトに対する OWNERSHIP、USAGE または MONITOR 権限
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対するUSAGE*も*付与されている必要はありません。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
このシステム関数はdbtプロジェクトオブジェクトでのみ動作します。ワークスペースでは利用できません。
CREATEDBTPROJECT または ALTERDBTPROJECT ... ADDVERSION で生成されたクエリ IDs はこのシステム関数ではサポートされていません。
ファイルコンテンツの直接クエリ(例: クエリの例)はサポートされていません。
query_idが NULL またはdbt実行中でない場合は、エラーが発生します。dbtプロジェクトの結果は、最大14日間利用可能です。
実行がタイムアウトしたり、キャンセルされたり、アップロード前に失敗した場合は、ファイルを使用できない可能性があります。このような場合、実行はdbt履歴に
UNHANDLED ERRORのように表示されます。ログファイルは実行が完了した後にのみ利用可能になるため、この関数を使用して進行中の実行のログを取得することはできません。
例¶
Snowflakeがdbtプロジェクトの実行のアーティファクト(つまり、その実行の結果フォルダ)を格納したステージのパスを表示するには、次の例に示すように、SYSTEM$LOCATE_DBT_ARTIFACTS 関数を使用します。その後、そのパスを GET または COPY FILES またはSnowflake CLI などで使用して、manifest.json、コンパイル済み SQL、ログなどをダウンロードできます。
--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/';
次の例に示すように、新しい内部ステージを作成し、指定されたdbtプロジェクト実行のアーティファクトのSnowflake管理パスを見つけ、それらのアーティファクトをステージにコピーして取得することもできます。
CREATE OR REPLACE STAGE my_dbt_stage ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
詳細については、 プログラムでdbtのアーティファクトとログにアクセスする をご参照ください。