카테고리:

시스템 함수 (시스템 정보)

SYSTEM$LOCATE_DBT_ARTIFACTS

지정된 dbt 프로젝트 실행에서 아티팩트의 위치를 반환합니다(예: manifest.json).

이 함수를 DBT_PROJECT_EXECUTION_HISTORY 함수와 함께 사용하여 dbt 아티팩트 및 로그에 프로그래밍 방식으로 액세스합니다.

구문

SYSTEM$LOCATE_DBT_ARTIFACTS ( '<query_id>' )
Copy

인자

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 프로젝트 오브젝트에서만 작동하며 작업 공간에는 사용할 수 없습니다.

  • CREATE DBT PROJECT 또는 ALTER DBT PROJECT … ADD VERSION에서 생성된 쿼리 IDs는 이 시스템 함수에서 지원되지 않습니다.

  • 파일 내용의 직접 쿼리(예: 쿼리의 예)는 지원되지 않습니다.

  • :code:`query_id`가 NULL이거나 dbt 실행이 아닌 경우 오류가 발생합니다.

  • dbt 프로젝트 결과는 최대 14일 동안 사용할 수 있습니다.

  • 파일이 업로드되기 전에 실행 시간이 초과되거나 취소되거나 실패하면 파일을 사용하지 못할 수 있습니다. 이러한 경우 실행은 dbt 기록에 :code:`UNHANDLED ERROR`로 표시됩니다.

  • 로그 파일은 실행이 완료된 후에만 사용할 수 있으므로 진행 중인 실행에 대한 로그를 가져오는 데는 이 함수를 사용할 수 없습니다.

Snowflake가 dbt 프로젝트 실행의 아티팩트를 저장한 스테이지 경로(즉, 해당 실행의 결과 폴더)를 보려면 다음 예와 같이 SYSTEM$LOCATE_DBT_ARTIFACTS 함수를 사용합니다. 그런 다음 해당 경로를 GET`이나 :code:`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);
Copy
============================== 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);
Copy
+-------------------------------------------------------------------------------------------------+
| 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/';
Copy

다음 예제와 같이 새로운 내부 스테이지를 생성하고, 지정된 dbt 프로젝트 실행의 아티팩트에 대한 Snowflake 관리 경로를 찾고, 검색을 위해 해당 아티팩트를 스테이지에 복사할 수도 있습니다.

CREATE OR REPLACE STAGE my_dbt_stage ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
Copy

자세한 내용은 프로그래밍 방식으로 dbt 아티팩트 및 로그에 액세스 섹션을 참조하십시오.