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>' ]
필수 매개 변수¶
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 REPLACE
및IF 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';
Snowflake의 Git 리포지토리 스테이지 내의 하위 디렉터리에서 dbt 프로젝트 오브젝트 만들기¶
여러 dbt 프로젝트가 포함된 Git 리포지토리 스테이지에서 이름이 sw_region_dbt_project
인 dbt 프로젝트 오브젝트를 만듭니다. 이 명령은 Snowflake에서 이름이 sales_dbt_git_stage
인 Git 리포지토리 스테이지의 main
분기를 지정합니다. 여기서 dbt_project.yml
은 sales_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';
기존 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';
여러 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';