CREATE DBT PROJECT

dbt 프로젝트 오브젝트 를 만들거나 기존 dbt 프로젝트를 바꿉니다. OR REPLACE 옵션을 사용하여 CREATE DBT PROJECT를 실행하면 버전 식별자가 version$1 으로 재설정되고 모든 버전 이름 별칭이 제거됩니다. 자세한 내용은 dbt 프로젝트 오브젝트 및 파일의 버전 관리 섹션을 참조하십시오.

참고 항목:

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

구문

CREATE [ OR REPLACE ] DBT PROJECT [ IF NOT EXISTS ] <name>
  [ FROM '<source_location>' ]
  [ DEFAULT_ARGS = '<string_literal>' ]
  [ DEFAULT_VERSION = { FIRST | LAST | VERSION$<num> } ]
  [ COMMENT = '<string_literal>' ]
Copy

필수 매개 변수

name

Snowflake 내에서 dbt 프로젝트 오브젝트의 식별자(즉, 이름)를 지정하는 문자열입니다. dbt 프로젝트가 생성되는 스키마에 대해 고유해야 합니다.

또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예: "My object")로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

선택적 매개 변수

FROM 'source_location'

Snowflake에서 dbt 프로젝트 오브젝트에 대한 소스 파일의 위치를 지정하는 문자열입니다. 이는 여러 dbt 프로젝트가 포함된 상위 디렉터리이거나 dbt 프로젝트와 dbt_project.yml 파일이 포함된 특정 하위 디렉터리일 수 있습니다.

지정된 위치에 dbt_project.yml 파일이 포함되지 않은 경우 EXECUTE DBT PROJECT 명령은 PROJECT_ROOT 매개 변수를 사용하여 dbt_project.yml 파일에 대한 하위 디렉터리 경로를 지정해야 합니다.

값을 지정하지 않으면 Snowflake는 빈 dbt 프로젝트를 생성합니다.

dbt 프로젝트 원본 파일은 다음 위치 중 하나에 있을 수 있습니다.

  • Git 리포지토리 스테이지, 예를 들면 다음과 같습니다.

    '@my_db.my_schema.my_git_repository_stage/branches/my_branch/path/to/dbt_project_or_projects_parent'

    Snowflake에서 |sf-dbt|용 워크스페이스에 Git 리포지토리를 연결하는 Git 리포지토리 오브젝트를 생성하는 방법에 대한 자세한 내용은 Git 리포지토리에 연결된 작업 공간 만들기 섹션을 참조하세요. 워크스페이스를 사용하지 않고 Git 리포지토리 오브젝트 및 스테이지를 생성하고 관리하는 방법에 대한 자세한 내용은 Snowflake에서 Git 리포지토리 사용하기CREATE GIT REPOSITORY 섹션을 참조하세요.

  • 기존 dbt 프로젝트 스테이지, 예를 들면 다음과 같습니다.

    'snow://dbt/my_db.my_schema.my_existing_dbt_project_object/versions/last'

    버전 지정자는 필수이며 last (이전 예제에 표시), first 또는 version$<num> 형식의 기존 버전에 대한 지정자일 수 있습니다. 자세한 내용은 dbt 프로젝트 오브젝트 및 파일의 버전 관리 섹션을 참조하십시오.

  • 명명된 내부 스테이지, 예를 들면 다음과 같습니다.

    '@my_db.my_schema.my_internal_named_stage/path/to/dbt_projects_or_projects_parent'

    내부 사용자 스테이지 및 테이블 스테이지는 지원되지 않습니다.

  • Snowflake의 dbt를 위한 워크스페이스, 예를 들면 다음과 같습니다.

    'snow://workspace/user$.public."my_workspace_name"/versions/live/path/to/dbt_projects_or_projects_parent'

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

    버전 지정자는 필수이며 last, first, live 또는 version$<num> 형식의 기존 버전에 대한 지정자일 수 있습니다. 자세한 내용은 dbt 프로젝트 오브젝트 및 파일의 버전 관리 섹션을 참조하십시오.

기본값: 값 없음

DEFAULT_ARGS = 'string_literal'

EXECUTE DBT PROJECT 가 명령을 지정하지 않는 경우 사용할 기본 dbt 명령명령줄 옵션 을 지정하는 문자열입니다.

중요

EXECUTE DBT PROJECT 명령에서 명시적으로 지정하는 인자는 DBT PROJECT 정의에 지정된 모든 DEFAULT_ARGS를 덮어씁니다.

기본값: 값 없음

DEFAULT_VERSION = { FIRST | LAST | VERSION$num }

EXECUTE DBT PROJECT 에서 사용할 dbt 프로젝트 오브젝트의 기본 버전을 지정합니다. 자세한 내용은 dbt 프로젝트 오브젝트 및 파일의 버전 관리 섹션을 참조하십시오. 값이 지정되지 않은 경우, EXECUTE DBT PROJECT는 LAST 를 사용합니다. 자세한 내용은 dbt 프로젝트 오브젝트 및 파일의 버전 관리 섹션을 참조하십시오.

기본값: 값 없음

COMMENT = 'string_literal'

dbt 프로젝트 오브젝트에 대한 설명을 지정합니다.

기본값: 값 없음

액세스 제어 요구 사항

이 작업을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.

권한

오브젝트

CREATE DBT PROJECT

스키마

스키마의 모든 오브젝트에 대해 작업을 수행하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한.

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

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

사용법 노트

  • OR REPLACEIF NOT EXISTS 절은 상호 배타적입니다. 두 문자를 같은 문에 함께 사용할 수 없습니다.

  • CREATE OR REPLACE <오브젝트> 문은 원자성입니다. 즉, 오브젝트가 바뀔 때 단일 트랜잭션으로 이전 오브젝트가 삭제되고 새 오브젝트가 생성됩니다.

  • 메타데이터 관련:

    주의

    고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.

Snowflake의 Git 리포지토리 스테이지에서 dbt 프로젝트 오브젝트 만들기

Git 리포지토리 스테이지의 dbt 프로젝트 파일에서 이름이 sales_dbt_model 인 dbt 프로젝트 오브젝트를 만듭니다. 이 명령은 Snowflake에서 이름이 sales_dbt_git_stage 인 Git 리포지토리 스테이지의 main 분기를 지정합니다. 여기서 dbt_project.yml 은 리포지토리 루트에 저장됩니다.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
  COMMENT = 'generates sales data models';
Copy

Snowflake의 Git 리포지토리 스테이지 내의 하위 디렉터리에서 dbt 프로젝트 오브젝트 만들기

여러 dbt 프로젝트가 포함된 Git 리포지토리 스테이지에서 이름이 sw_region_dbt_project 인 dbt 프로젝트 오브젝트를 만듭니다. 이 명령은 Snowflake에서 이름이 sales_dbt_git_stage 인 Git 리포지토리 스테이지의 main 분기를 지정합니다. 여기서 dbt_project.ymlsales_dbt_projects_parent 디렉터리의 sw_region_dbt_project 하위 디렉터리에 저장됩니다.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sw_region_sales_model
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_projects_parent/sw_region_dbt_project'
  COMMENT = 'generates data models for sw sales region';
Copy

기존 dbt 프로젝트 오브젝트의 특정 버전에서 dbt 프로젝트 오브젝트 만들기

sales_dbt_projects dbt 오브젝트 스테이지의 version$2 에서 이름이 sales_nw_dbt_model_combined_bookings 인 새 dbt 프로젝트 오브젝트를 만듭니다. DEFAULT_ARGS 매개 변수는 --select 명령줄 옵션을 지정하므로 태그 nw_region 이 있는 모델만 EXECUTE DBT PROJECT를 사용하여 실행됩니다.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model_nw_region
  FROM 'snow://dbt/sales_db.dbt_projects_schema.sales_model/versions/version$2'
  DEFAULT_ARGS = '--select "tag:nw_region"'
  COMMENT = 'generates data models for the NW sales region';
Copy

여러 dbt 프로젝트가 포함된 워크스페이스에서 dbt 프로젝트 오브젝트 만들기

|sf-dbt|용 워크스페이스의 라이브 버전에서 이름이 sales_model_from_workspace 인 새 dbt 프로젝트 오브젝트를 만듭니다. 이는 여러 dbt 프로젝트 하위 디렉터리가 포함된 상위 워크스페이스에서 dbt 프로젝트 오브젝트를 만드는 데 특히 유용합니다. 워크스페이스 이름은 대소문자를 구분하고 특수 문자를 포함할 수 있으므로 워크스페이스 이름을 큰따옴표로 묶는 것이 좋습니다.

-- Create a dbt project object from a workspace named "My dbt Project Workspace" in the user's personal database.

CREATE DBT PROJECT sales_db.dbt_projects_schema.sales_model_from_workspace
  FROM 'snow://workspace/user$.public."My dbt Project Workspace"/versions/live'

-- Execute the dbt project, specifying a subdirectory path for a dbt project within the workspace

EXECUTE DBT PROJECT sales_db.dbt_projects_schema.sales_model_from_workspace
  PROJECT_ROOT = 'project2'
  ARGS = 'run --target prod';
Copy