SYSTEM$DBT_GET_LAST_SUCCESSFUL_RUN_TARGET

SYSTEM$DBT_GET_LAST_SUCCESSFUL_RUN_TARGET

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

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

출처: Snowflake SYSTEM$DBT_GET_LAST_SUCCESSFUL_RUN_TARGET 함수 문서

본문

구문 (Syntax)

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

인자 (Arguments)

  • object_name — dbt 아티팩트를 가져올 dbt 프로젝트 객체의 정규화된 이름을 지정하는 문자열이에요.
  • commands — 선택 사항. 실행 기록을 검색할 때 포함할 dbt 명령의 쉼표로 구분된 목록이에요. 기본 목록은 compile, build, run, docs generate예요. 복합 명령의 경우 docs generate나 source freshness처럼 명령과 하위 명령을 지정해요. 소스 freshness 결과를 가져오려면 source freshness를 명시적으로 전달해요. 예제는 소스 freshness 결과 가져오기를 참고하세요.
  • target_path — 선택 사항. 일치시킬 대상 경로예요. 지정하면 이 함수는 해당 대상 경로를 사용한 실행만 고려해요.

반환 값 (Returns)

객체의 가장 최근에 성공한 적격 실행이 만든 dbt 아티팩트의 위치를 반환해요. EXECUTE DBT PROJECT의 IMPORTS 매개 변수나 Snowflake CLI --import 옵션과 함께 이 위치를 사용해요.

조회 창 내에서 대상 디렉터리가 채워진 적격 실행이 없으면 NULL을 반환해요.

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

접근 제어 요구 사항 (Access Control Requirements)

이 함수를 호출하는 데 사용하는 역할은 dbt 프로젝트 객체에 대한 MONITOR 권한이 있어야 해요. 스키마의 객체에서 작업하려면 상위 데이터베이스에 대한 권한이 하나 이상, 상위 스키마에 대한 권한이 하나 이상 필요해요. 지정된 권한 집합을 가진 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기를 참고하세요. 보호 객체에 대한 SQL 작업으로 역할과 권한 부여에 대한 일반 정보는 액세스 제어 개요를 참고하세요.

사용 참고 (Usage Notes)

  • dbt 프로젝트 객체는 지난 7일 이내에 성공적인 실행을 완료해야 해요.
  • 배포 시 자동 컴파일은 이 함수에 대한 dbt 아티팩트를 만들지 않아요. 배포 후 적격 실행을 완료하세요.
  • 이 함수는 dbt 프로젝트 객체별로 재사용 가능한 dbt 아티팩트를 찾으며 Slim CI에 일반적으로 사용되는 시스템 함수예요. SYSTEM$LOCATE_DBT_ARTIFACTS와 SYSTEM$LOCATE_DBT_ARCHIVE는 특정 쿼리 ID에 대한 아티팩트나 아카이브를 대신 찾아요.
  • --import 또는 IMPORTS는 반환된 dbt 아티팩트를 실행에서 사용할 수 있게 해요. 또한 --state로 마운트된 디렉터리를 dbt에 가리켜야 해요.

예제 (Examples)

프로덕션 dbt 프로젝트 객체의 가장 최근 성공적인 실행에서 dbt 아티팩트의 위치를 반환해요:

SELECT SYSTEM$DBT_GET_LAST_SUCCESSFUL_RUN_TARGET(
  'prod_database.dbt_projects.production_project'
);

반환된 dbt 아티팩트를 state로 가져와 ./imports/state에 마운트하고 Slim CI 실행에 사용해요:

EXECUTE DBT PROJECT ci_database.dbt_projects.pr_test_project
  ARGS = 'run --state ./imports/state --defer --select state:modified+'
  IMPORTS = (
    SYSTEM$DBT_GET_LAST_SUCCESSFUL_RUN_TARGET(
      'prod_database.dbt_projects.production_project'
    ) AS 'state'
  );

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

EXECUTE DBT PROJECT ci_database.dbt_projects.pr_test_project
  ARGS = 'run --state ./imports/state --defer --select state:modified+'
  IMPORTS = (
    SYSTEM$DBT_GET_LAST_SUCCESSFUL_RUN_TARGET(
      'prod_database.dbt_projects.production_project',
      'compile,build,run,docs generate',
      'my_target'
    ) AS 'state'
  );

더 알아보기