EXECUTE DBT PROJECT

dbt 명령 및 지정된 명령줄 옵션을 사용하여 Snowflake 워크스페이스에서 지정된 dbt 프로젝트 오브젝트 또는 dbt 프로젝트를 실행합니다.

참고 항목:

CREATE DBT PROJECT, ALTER DBT PROJECT, DESCRIBE DBT PROJECT, DROP DBT PROJECT, SHOW DBT PROJECTS

구문

지정된 이름으로 dbt 프로젝트 오브젝트를 실행합니다.

EXECUTE DBT PROJECT [ IF EXISTS ] <name>
  [ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] ] [ ... ]' ]
  [ DBT_VERSION = 'version_number' ]

베리언트 구문

지정된 작업 영역 이름으로 작업 영역에 저장된 dbt 프로젝트를 실행합니다. 작업 영역을 소유한 사용자는 이 명령 베리언트를 실행하는 사용자여야 합니다.

EXECUTE DBT PROJECT [ IF EXISTS ] [ FROM WORKSPACE <name> ]
  [ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] [ ... ] ]' ]
  [ DBT_VERSION = 'version_number' ]
  [ PROJECT_ROOT = '<subdirectory_path>' ]

필수 매개 변수

name

dbt 프로젝트 오브젝트를 실행할 때 실행할 dbt 프로젝트 오브젝트의 이름을 지정합니다.

FROM WORKSPACE 옵션을 사용하여 dbt 프로젝트를 실행할 때 dbt Projects on Snowflake 에 대한 작업 영역 이름을 지정합니다. 작업 영역 이름은 항상 user$ 로 표시되는 사용자 개인 데이터베이스의 public 스키마를 참조하여 지정됩니다.

워크스페이스 이름은 대소문자를 구분하고 특수 문자를 포함할 수 있으므로 워크스페이스 이름을 큰따옴표로 묶는 것이 좋습니다.

다음 예제에서는 작업 영역 이름 참조를 보여줍니다.

user$.public."My dbt Project Workspace"

선택적 매개 변수

ARGS = '[ dbt_command ] [ --dbt_cli_option option_value_1 [ ... ] [ ... ] ]'

Specifies the dbt command and supported command-line options to use when the dbt project object executes. This is a literal string that must conform to the syntax and requirements of dbt CLI commands.

If no value is specified, the dbt project object executes with the dbt command and command-line options specified in the dbt project object definition. If you specify dbt CLI options without specifying a dbt command, the dbt run command executes by default.

기본값: 값 없음

DBT_VERSION = 'version_number'

Specifies a version for the dbt project object.

Default: When you execute a dbt project object, the system uses the default version you specified when creating the dbt project object. If none was specified, the system uses 1.9.4 by default.

자세한 내용은 dbt Projects on Snowflake 에 지원되는 dbt Core 버전 섹션을 참조하십시오.

PROJECT_ROOT = 'subdirectory_path'

dbt 프로젝트 오브젝트 또는 작업 공간 내의 dbt_project.yml 파일에 대한 하위 디렉터리 경로를 지정합니다. 이 매개 변수는 FROM WORKSPACE 옵션을 사용하여 dbt 프로젝트를 실행할 때만 지원됩니다.

If no value is specified, the dbt project object executes with the dbt_project.yml file in the root directory of the dbt project object.

dbt_project.yml 파일이 루트 디렉터리 또는 PROJECT_ROOT 하위 디렉터리에 없는 경우 오류가 발생합니다.

기본값: 값 없음

출력

설명

0|1 Success

TRUE if the dbt project object executed successfully; otherwise, FALSE. If the dbt project object fails to execute, an exception message is returned.

EXCEPTION

Any exception message returned by the dbt project execution. If the dbt project object executes successfully, the string None is returned.

STDOUT

dbt 프로젝트 실행에서 반환된 표준 출력입니다.

OUTPUT_ARCHIVE_URL

dbt 프로젝트 실행의 출력 파일이 포함된 출력 아카이브의 URL입니다. 여기에는 dbt가 /target 디렉터리에 쓰는 로그 파일과 아티팩트가 포함됩니다. 자세한 내용은 dbt 설명서의 dbt 아티팩트 정보 를 참조하세요. 이 링크를 직접 선택하면 오류가 발생합니다. 그러나 이 URL을 사용하여 dbt 프로젝트 파일과 출력을 검색할 수 있습니다. 자세한 내용은 프로그래밍 방식으로 dbt 아티팩트 및 로그에 액세스 섹션을 참조하십시오.

액세스 제어 요구 사항

이 SQL 명령을 실행하는 데 사용되는 역할 에는 다음 권한최소한 하나 이상 이 있어야 합니다.

권한

오브젝트

USAGE

dbt 프로젝트

스키마의 오브젝트에 대한 작업을 수행하려면 상위 데이터베이스에 대한 하나 이상의 권한과 상위 스키마에 대한 하나 이상의 권한이 필요합니다.

지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.

보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.

참고

EXECUTE DBT PROJECT에 지정된 dbt 명령은 프로젝트 profiles.yml`파일의 ``outputs` 블록에 지정된 role 의 권한으로 실행됩니다. 작업은 EXECUTE DBT PROJECT를 호출하는 Snowflake 사용자에게 부여된 권한으로만 추가로 제한됩니다. 지정된 사용자와 역할 모두 warehouse 를 사용하고, 프로젝트의 profiles.yml 파일에 지정된 database``schema``에 대한 작업을 수행하고, dbt 모델이 지정하는 다른 Snowflake 오브젝트에 대한 작업을 수행하는 데 필요한 권한이 있어야 합니다.

대상 및 모델이 지정된 기본 실행 명령

dbt 프로젝트 오브젝트의 루트 디렉터리에 있는 dbt_project.yml 파일의 dev 프로필을 대상으로 지정하고 DAG에서 3개의 모델을 선택하여 dbt run 을 실행합니다. run 명령은 명시적으로 지정되지 않으며 기본적으로 실행됩니다.

EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
  ARGS = '--select simple_customers combined_bookings prepped_data --target dev';

대상 및 모델이 지정된 명시적 테스트 명령

dbt 프로젝트 오브젝트의 루트 디렉터리에 있는 dbt_project.yml 파일의 prod 프로필을 대상으로 지정하고 DAG에서 3개의 모델을 선택하여 dbt test 명령을 실행합니다.

EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
  ARGS = '--select simple_customers combined_bookings prepped_data --target prod';

다운스트림 모델이 지정된 명시적 실행 명령

dbt_project.yml 파일의 dev 프로필을 대상으로 하고 + 표기법을 사용하여 simple_customers 모델의 모든 모델 다운스트림을 선택하여 dbt run 명령을 실행합니다.

EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project
  ARGS = 'run --select simple_customers+ --target dev';

Execute and test dbt project objects using production tasks

6시간 간격으로 dbt run 명령을 실행하는 프로덕션 dbt 대상에 대한 작업을 생성합니다. 그런 다음, 각 dbt run 작업이 완료된 후에 dbt test 명령을 실행하는 작업을 만듭니다. 각 작업에 대한 EXECUTE DBT PROJECT 명령은 dbt 프로젝트 오브젝트의 루트 디렉터리에 있는 dbt_project.yml 파일의 prod 프로필을 대상으로 합니다.

CREATE OR ALTER TASK my_database.my_schema.run_dbt_project
  WAREHOUSE = my_warehouse
  SCHEDULE = '6 hours'
AS
  EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='run --target prod';


CREATE OR ALTER TASK change_this.public.test_dbt_project
        WAREHOUSE = my_warehouse
        AFTER run_dbt_project
AS
  EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='test --target prod';

테스트 또는 임시 요구 사항을 위해 실행 시 프로젝트의 고정된 버전 재정의

my_dbt_project is pinned to 1.9.4. This execution overrides the dbt project object’s default 1.9.4 version:

EXECUTE DBT PROJECT finance_analytics
  DBT_VERSION = '1.10.15'