SYSTEM$DBT_GET_LAST_FAILED_RUN_TARGET

SYSTEM$DBT_GET_LAST_FAILED_RUN_TARGET (최근 실패한 dbt 실행 대상)

이전 7일 이내의 dbt 프로젝트 객체의 가장 최근 실패한 실행에서 나온 dbt 아티팩트(artifact)의 위치를 반환해요. 이 아티팩트를 다른 dbt 프로젝트 실행으로 가져와 --state와 함께 사용할 수 있어요.

출처: Snowflake SQL Reference - SYSTEM$DBT_GET_LAST_FAILED_RUN_TARGET

본문

참고: 이 페이지에 설명된 일부 기능은 변경 가능한(mutable) live 버전을 사용하는 dbt 프로젝트 객체를 요구해요. live-version 객체를 얻으려면 2026_06 동작 변경 번들을 선택하거나, Snowflake 계정 담당자에게 별도의 단일 live 버전 기능을 활성화하도록 요청하세요. 그런 다음 객체를 생성 또는 교체하거나, 기존 버전 객체를 SYSTEM$MIGRATE_DBT_PROJECT로 마이그레이션하세요. 자세한 내용은 Snowflake의 dbt 프로젝트: dbt 프로젝트 객체가 단일 변경 가능한 live 버전으로 마이그레이션됨을 참고하세요.

구문

SYSTEM$DBT_GET_LAST_FAILED_RUN_TARGET (
 '<object_name>'
 [ , '<commands>' [ , '<target_path>' ] ]
)

인자

object_name

dbt 아티팩트를 검색하려는 dbt 프로젝트 객체의 완전히 한정된 이름을 지정하는 문자열이에요.

commands

선택 사항. 실행 기록을 검색할 때 포함할 dbt 명령의 쉼표로 구분된 목록이에요. 기본 목록은 compile, build, run, docs generate예요.

복합 명령의 경우 명령과 그 하위 명령을 지정하세요(예: docs generate 또는 source freshness). source freshness 결과를 검색하려면 source freshness를 명시적으로 전달하세요. 예시는 source freshness 결과 검색을 참고하세요.

target_path

선택 사항. 일치시킬 대상 경로예요. 지정하면 함수는 그 대상 경로를 사용한 실행만 고려해요.

반환 값

객체의 가장 최근 실패한 자격 있는 실행이 만든 dbt 아티팩트의 위치를 반환해요. 그 위치를 EXECUTE DBT PROJECT의 IMPORTS 매개변수 또는 Snowflake CLI --import 옵션과 함께 사용하세요.

조회 기간(lookback window) 안에 채워진 대상 디렉터리가 있는 자격 있는 실패 실행이 없으면 NULL을 반환해요.

위치는 있을 때 manifest.json, run_results.json, sources.json 같은 독립적인 대상 아티팩트를 포함해요. 이 함수는 누락된 파일을 생성하지 않으며 dbt_artifacts.zip을 반환하지 않아요. 위치를 AS 'state'로 가져오면 Snowflake는 대상 아티팩트를 ./imports/state에 마운트해요. 알려진 쿼리의 전체 아카이브는 SYSTEM$LOCATE_DBT_ARCHIVE를 사용하세요.

접근 제어 요구 사항

이 함수를 호출하는 역할은 dbt 프로젝트 객체에 대한 MONITOR 권한이 있어야 해요.

스키마의 객체에서 연산하려면 상위 데이터베이스에 대한 권한이 하나 이상, 상위 스키마에 대한 권한이 하나 이상 필요해요.

지정된 권한 집합으로 사용자 정의 역할을 만드는 방법은 사용자 정의 역할 만들기(Creating custom roles)를 참고하세요.

보안 가능 객체에 대한 SQL 작업을 수행하기 위한 역할·권한 부여에 대한 일반 정보는 접근 제어 개요(Overview of Access Control)를 참고하세요.

사용 시 참고 사항

  • dbt 프로젝트 객체는 이전 7일 이내에 채워진 대상 디렉터리가 있는 실패한 실행이 있어야 해요.

  • 배포 시 자동 컴파일은 이 함수를 위한 dbt 아티팩트를 만들지 않아요. 배포 후 자격 있는 실행을 완료하세요.

  • --import 또는 IMPORTS는 반환된 dbt 아티팩트를 실행에 사용할 수 있게 해요. 또한 dbt를 --state로 마운트된 디렉터리에 가리켜야 해요.

  • 특정 쿼리 ID에 대한 dbt 아티팩트를 검색하려면 대신 SYSTEM$LOCATE_DBT_ARTIFACTS 또는 SYSTEM$LOCATE_DBT_ARCHIVE를 사용하세요.

예시

가장 최근 실패한 run 또는 build 실행에서 나온 dbt 아티팩트의 위치를 반환해요.

SELECT SYSTEM$DBT_GET_LAST_FAILED_RUN_TARGET(
 'prod_database.dbt_projects.production_project',
 'run,build'
);

반환된 dbt 아티팩트를 state로 가져와서(그러면 ./imports/state에 마운트됨) 오류가 난 리소스와 그 하위 종속 항목을 명시적으로 다시 실행해요.

EXECUTE DBT PROJECT prod_database.dbt_projects.production_project
 ARGS = 'run --state ./imports/state --select result:error+'
 IMPORTS = (
 SYSTEM$DBT_GET_LAST_FAILED_RUN_TARGET(
 'prod_database.dbt_projects.production_project',
 'run,build'
 ) AS 'state'
 );

--target-path my_target을 사용한 가장 최근 실패한 실행에서 나온 dbt 아티팩트를 가져와요. 대상 경로를 지정할 때 기본 명령 필터를 유지하려면 두 번째 인자로 기본 명령 목록을 전달하세요.

EXECUTE DBT PROJECT prod_database.dbt_projects.production_project
 ARGS = 'run --state ./imports/state --select result:error+'
 IMPORTS = (
 SYSTEM$DBT_GET_LAST_FAILED_RUN_TARGET(
 'prod_database.dbt_projects.production_project',
 'compile,build,run,docs generate',
 'my_target'
 ) AS 'state'
 );

더 알아보기