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> [ ... ] ] [ ... ]' ]
[ PROJECT_ROOT = '<subdirectory_path>' ]
베리언트 구문¶
지정된 작업 영역 이름으로 작업 영역에 저장된 dbt 프로젝트를 실행합니다. 작업 영역을 소유한 사용자는 이 명령 베리언트를 실행하는 사용자여야 합니다.
EXECUTE DBT PROJECT [ IF EXISTS ] [ FROM WORKSPACE <name> ]
[ ARGS = '[ <dbt_command> ] [ --<dbt_cli_option> <option_value_1> [ ... ] [ ... ] ]' ]
[ PROJECT_ROOT = '<subdirectory_path>' ]
필수 매개 변수¶
name
dbt 프로젝트 오브젝트를 실행할 때 실행할 dbt 프로젝트 오브젝트의 이름을 지정합니다.
FROM WORKSPACE 옵션을 사용하여 dbt 프로젝트를 실행할 때 |sf-dbt|에 대한 작업 영역 이름을 지정합니다. 작업 영역 이름은 항상
user$
로 표시되는 사용자 개인 데이터베이스의public
스키마를 참조하여 지정됩니다.워크스페이스 이름은 대소문자를 구분하고 특수 문자를 포함할 수 있으므로 워크스페이스 이름을 큰따옴표로 묶는 것이 좋습니다.
다음 예제에서는 작업 영역 이름 참조를 보여줍니다.
user$.public."My dbt Project Workspace"
선택적 매개 변수¶
ARGS = '[ dbt_command ] [ --dbt_cli_option option_value_1 [ ... ] [ ... ] ]'
dbt 프로젝트가 실행될 때 실행할 dbt 명령 및 지원되는 명령줄 옵션 을 지정합니다. dbt CLI 명령의 구문과 요구 사항을 준수해야 하는 리터럴 문자열입니다.
값을 지정하지 않으면 dbt 프로젝트가 dbt 프로젝트 오브젝트 정의 에 지정된 dbt 명령 및 명령줄 옵션 을 사용하여 실행됩니다. dbt 명령을 지정하지 않고 CLI 옵션을 지정하는 경우 dbt
run
명령이 기본적으로 실행됩니다.중요
EXECUTE DBT PROJECT 명령에서 명시적으로 지정하는 인자는 DBT PROJECT 정의에 지정된 모든 DEFAULT_ARGS를 덮어씁니다.
기본값: 값 없음
PROJECT_ROOT = 'subdirectory_path'
dbt 프로젝트 오브젝트 또는 작업 영역 내의
dbt_project.yml
파일에 대한 하위 디렉터리 경로를 지정합니다.값을 지정하지 않으면 dbt 프로젝트 오브젝트의 루트 디렉터리에 있는
dbt_project.yml
파일을 사용하여 dbt 프로젝트가 실행됩니다.dbt_project.yml
파일이 루트 디렉터리 또는 PROJECT_ROOT 하위 디렉터리에 없는 경우 오류가 발생합니다.기본값: 값 없음
출력¶
열 |
설명 |
---|---|
|
dbt 프로젝트가 성공적으로 실행된 경우 |
|
dbt 프로젝트 실행에서 반환된 모든 예외 메시지입니다. dbt 프로젝트가 성공적으로 실행되면 문자열 |
|
dbt 프로젝트 실행에서 반환된 표준 출력입니다. |
|
dbt 프로젝트 실행의 출력 파일이 포함된 출력 아카이브의 URL입니다. 여기에는 dbt가 |
액세스 제어 요구 사항¶
이 SQL 명령을 실행하는 데 사용되는 역할 에는 다음 권한 중 최소한 하나 이상 이 있어야 합니다.
권한 |
오브젝트 |
---|---|
USAGE |
dbt 프로젝트 |
스키마의 모든 오브젝트에 대해 작업을 수행하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한.
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 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';
dbt 프로젝트 오브젝트 정의에서 기본 실행 및 DEFAULT ARGS를 통해 하위 디렉터리 프로젝트를 지정하는 기본 실행 명령¶
세 개의 dbt 프로젝트에 대한 하위 디렉터리가 포함된 dbt 프로젝트 오브젝트의 경우 project2
하위 디렉터리에 대해 dbt run
명령을 실행합니다. 이 실행 명령이 가정되고, 해당 명령은 DBT PROJECT 정의의 DEFAULT ARGS를 사용하여 지정된 dev
프로필을 대상으로 합니다.
EXECUTE DBT PROJECT my_database.my_schema.my_parent_dbt_project PROJECT_ROOT = 'project2';
프로덕션 작업을 사용하여 dbt 프로젝트 실행 및 테스트¶
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';