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>' ]
Copy

베리언트 구문

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

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

필수 매개 변수

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 하위 디렉터리에 없는 경우 오류가 발생합니다.

기본값: 값 없음

출력

설명

0|1 Success

dbt 프로젝트가 성공적으로 실행된 경우 TRUE 이고, 그렇지 않으면 FALSE 입니다. dbt 프로젝트 실행에 실패하면 예외 메시지가 반환됩니다.

EXCEPTION

dbt 프로젝트 실행에서 반환된 모든 예외 메시지입니다. dbt 프로젝트가 성공적으로 실행되면 문자열 None 이 반환됩니다.

STDOUT

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

OUTPUT_ARCHIVE_URL

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

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

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';
Copy

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

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';
Copy

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';
Copy

프로덕션 작업을 사용하여 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';
Copy