SYSTEM$GET_DBT_LOG
SYSTEM$GET_DBT_LOG
SYSTEM$GET_DBT_LOG() 함수는 Snowflake의 dbt 프로젝트(Projects)에 대해 지정된 실행(run)의 로그를 반환해요.
이 함수를 DBT_PROJECT_EXECUTION_HISTORY 함수와 함께 사용하면 dbt 아티팩트와 로그에 프로그래밍 방식으로 접근할 수 있어요.
본문
문법
SYSTEM$GET_DBT_LOG ( '<query_id>' [ , <max_num_lines> ] )
반환
이 함수는 dbt.log 파일의 끝에서부터 최대 max_num_lines 줄을 반환해요(기본 1,000줄). 전체 로그를 보려면 아카이브 ZIP 파일을 다운로드하세요.
자세한 내용과 예제는 dbt 아티팩트와 로그에 프로그래밍 방식으로 접근하기를 참고하세요.
접근 제어 요구 사항
이 함수는 다음 권한 중 하나가 있을 때 dbt 프로젝트 객체에서만 사용할 수 있고, Workspaces에서는 사용할 수 없어요.
- dbt 프로젝트 객체에 대한 OWNERSHIP, USAGE 또는 MONITOR
이 권한에 대한 자세한 내용은 dbt 프로젝트 객체 권한을 참고하세요.
스키마의 객체에 대해 작업하려면 상위 데이터베이스에 대한 권한이 하나 이상, 상위 스키마에 대한 권한이 하나 이상 필요해요.
지정된 권한 집합으로 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기를 참고하세요.
보안 가능한 객체에 대해 SQL 작업을 수행하는 역할과 권한 부여에 대한 일반적인 정보는 접근 제어 개요를 참고하세요.
사용 메모
- 이 시스템 함수는 dbt 프로젝트 객체에서만 작동하며 Workspaces에서는 사용할 수 없어요.
- CREATE DBT PROJECT 또는 ALTER DBT PROJECT … DEPLOY에서 생성된 쿼리 ID는 이 시스템 함수에서 지원되지 않아요.
- 파일 내용 직접 조회(예: Query 예제)는 지원되지 않아요.
query_id가 NULL이거나 dbt 실행이 아니면 오류가 발생해요.- dbt 프로젝트 결과는 최대 14일 동안 사용할 수 있어요.
- 실행이 파일 업로드 전에 타임아웃되거나, 취소되거나, 실패하면 로그를 사용할 수 없을 수 있어요. 그런 경우 실행은 dbt 기록에서
UNHANDLED ERROR로 나타나며, 이 항목에는 로그가 포함되지 않을 수 있어요. - 로그 파일은 실행이 완료된 후에만 사용할 수 있으므로 실행 중인 실행의 로그를 가져오는 데 이 함수를 사용할 수 없어요.
예제
다음 예제는 DBT_PROJECT_EXECUTION_HISTORY를 사용해 가장 최근 dbt 프로젝트 객체 실행을 찾은 다음 SYSTEM$GET_DBT_LOG를 사용해 그 실행의 로그를 가져와, 실행 중 무슨 일이 있었는지 확인할 수 있게 해요.
팁
가능하면 DATABASE, SCHEMA, OBJECT_NAME 같은 함수 인자를 사용해 결과를 필터링하세요. 이러한 필터는 RESULT_LIMIT(기본 100행) 전에 적용되므로, WHERE 절로 잠재적으로 잘린 결과 집합을 필터링하는 대신 가장 관련성 높은 결과를 얻을 수 있어요.
--Look up the most recent dbt project object execution
SET latest_query_id = (SELECT query_id
FROM TABLE(SNOWFLAKE.INFORMATION_SCHEMA.DBT_PROJECT_EXECUTION_HISTORY(
DATABASE => 'ANALYTICS_DB',
SCHEMA => 'DBT_PROD',
OBJECT_NAME => 'FINANCE_ANALYTICS'
))
ORDER BY query_end_time DESC LIMIT 1);
--Get the dbt run logs for the most recent dbt project object 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
기본 1,000줄보다 많이 가져오려면 최대 줄 수를 지정하는 두 번째 인자를 전달해요.
SELECT SYSTEM$GET_DBT_LOG($latest_query_id, 1000000);
자세한 내용은 dbt 아티팩트와 로그에 프로그래밍 방식으로 접근하기를 참고하세요.