ALTER DBT PROJECT¶
기존 dbt 프로젝트 오브젝트 의 속성을 수정합니다.
- 참고 항목:
CREATE DBT PROJECT, EXECUTE DBT PROJECT, DESCRIBE DBT PROJECT, DROP DBT PROJECT, SHOW DBT PROJECTS
구문¶
ALTER DBT PROJECT [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER DBT PROJECT <name> ADD VERSION [ <version_name_alias> ]
FROM '<source_location>'
ALTER DBT PROJECT [ IF EXISTS ] <name> SET
[ DEFAULT_TARGET = <default_target> ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [, ... ] ) ]
[ COMMENT = '<string_literal>' ]
ALTER DBT PROJECT [ IF EXISTS ] <name> UNSET
[ DEFAULT_TARGET = <default_target> ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [, ... ] ) ]
[ COMMENT ]
매개 변수¶
name변경할 dbt 프로젝트 오브젝트의 식별자를 지정합니다.
식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.
자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
RENAME TO new_namedbt 프로젝트 오브젝트의 이름을
new_name으로 변경합니다. 새 식별자는 스키마에 대해 고유한 식별자여야 합니다.식별자에 대한 자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
선택적으로 오브젝트의 이름을 바꾸는 동안 오브젝트를 다른 데이터베이스 및/또는 스키마로 이동할 수 있습니다. 그러려면 각각
db_name.schema_name.object_name또는schema_name.object_name형식으로 새 데이터베이스 및/또는 스키마 이름을 포함하는 정규화된new_name값을 지정하십시오.참고
대상 데이터베이스 및/또는 스키마가 이미 있어야 합니다. 또한, 새 위치에 이름이 같은 오브젝트가 있으면 안 됩니다. 그렇지 않으면 문이 오류를 반환합니다.
오브젝트 소유자(즉, 오브젝트에 대한 OWNERSHIP 권한이 있는 역할) 역시 대상 스키마를 소유하지 않는 한 오브젝트를 관리되는 액세스 스키마로 이동하는 것은 금지됩니다.
오브젝트의 이름이 바뀌면 그 오브젝트를 참조하는 다른 오브젝트도 새 이름으로 업데이트해야 합니다.
ADD VERSION [ version_name_alias ]현재 버전 식별자를 1씩 증분하여 새 버전을 만듭니다(예:
version$2`~:code:`version$3).version name alias는 선택 사항이며 새로 생성된 버전 식별자에 해당하는 사용자 지정 식별자입니다.version name alias는 식별자 요구 사항 을 따라야 합니다.FROM 'source_location'버전이 생성될 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 프로젝트 오브젝트 및 파일의 버전 관리 섹션을 참조하십시오.
SET ...dbt 프로젝트 오브젝트에 대해 하나 이상의 지정된 속성 또는 매개 변수를 설정합니다.
DEFAULT_TARGET = default_targetdbt 프로젝트 오브젝트의 컴파일 및 후속 실행에 사용되는 프로필을 지정합니다(예:
prod). 이 매개 변수는 EXECUTE DBT PROJECT 명령을 :code:`ARGS = –target`과 사용하여 재정의할 수 있습니다.EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )dbt 패키지 허브 또는 Github에서 원격 종속성을 가져올 수 있는 권한을 부여하는 데 사용되는 외부 액세스 통합을 지정합니다. 오브젝트에 선언된 경우,
dbt deps`는 배포 중에 자동으로 실행됩니다. 자세한 내용은 :doc:/user-guide/data-engineering/dbt-projects-on-snowflake-dependencies` 섹션을 참조하세요.COMMENT = 'string_literal'dbt 프로젝트 오브젝트에 대한 설명을 추가하거나 기존 설명을 덮어씁니다.
UNSET ...dbt 프로젝트 오브젝트에 대해 하나 이상의 지정된 속성 또는 매개 변수를 NULL 또는 값 없음으로 설정 해제합니다.
DEFAULT_TARGETEXTERNAL_ACCESS_INTEGRATIONSCOMMENT
단일 ALTER 문으로 여러 속성 또는 매개 변수의 설정을 해제하려면 각 속성 또는 매개 변수를 쉼표로 구분합니다.
속성이나 매개 변수를 설정 취소할 때는 속성이나 매개 변수 이름만 지정하십시오(위의 구문에서 값을 지정해야 한다고 명시된 경우는 제외). 값을 지정하면 오류가 반환됩니다.
액세스 제어 요구 사항¶
이 SQL 명령을 실행하는 데 사용되는 역할 에는 다음 권한 중 최소한 하나 이상 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
|---|---|---|
OWNERSHIP |
dbt 프로젝트 |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
스키마의 오브젝트에 대한 작업을 수행하려면 상위 데이터베이스에 대한 하나 이상의 권한과 상위 스키마에 대한 하나 이상의 권한이 필요합니다.
사용법 노트¶
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
예¶
새 버전 추가¶
다음 예제에서는 Snowflake에서 Git 리포지토리 오브젝트를 업데이트하여 Git 리포지토리에서 최신 코드를 가져온 다음, 새 버전을 추가하여 dbt 프로젝트 오브젝트의 내용을 업데이트합니다.
-- Update the Git repository object to fetch the latest code
ALTER GIT REPOSITORY sales_db.integrations_schema.sales_dbt_git_stage FETCH;
-- Add a new version to the dbt project object based on the updated Git repository object
ALTER DBT PROJECT sales_db.dbt_projects_schema.sales_model
ADD VERSION
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_project';
기본 대상 및 새 외부 액세스 통합 설정¶
다음 예제에서는 기존 dbt 프로젝트 오브젝트를 다음 변경 사항으로 업데이트합니다.
--target인자를 지정하지 않고 EXECUTE DBT PROJECT를 실행할 때 Snowflake에서 사용하는 기본 대상을 설정합니다. 예를 들어,DEFAULT_TARGET = 'prod'`인 경우 :code:`EXECUTE DBT PROJECT sales_db.dbt_projects_schema.sales_model RUN;`과 같은 명령은 :code:`ARGS = --target`으로 재정의되지 않는 한 :code:`prod대상을 사용하여 자동으로 실행됩니다.사용할 dbt 프로젝트에 대한 외부 액세스 통합을 할당합니다.
단일 통합 또는 목록 제공 가능:
EXTERNAL_ACCESS_INTEGRATIONS = ('integration1', 'integration2').
ALTER DBT PROJECT sales_db.dbt_projects_schema.sales_model SET
DEFAULT_TARGET = 'prod',
EXTERNAL_ACCESS_INTEGRATIONS = ('my_external_access_integration');