DBT 프로젝트 수정하기

DBT 프로젝트 수정하기 (ALTER DBT PROJECT)

이 페이지에 설명된 일부 기능은 변경 가능한 live 버전을 사용하는 dbt 프로젝트 객체가 필요해요. live 버전 객체를 얻으려면 2026_06 동작 변경 번들에 옵트인하거나 Snowflake 계정 담당자에게 별도의 단일 live 버전 기능을 활성화하도록 요청하세요. 그런 다음 객체를 생성 또는 교체하거나, 기존 버전 객체를 SYSTEM$MIGRATE_DBT_PROJECT로 마이그레이션하세요. 자세한 내용은 dbt Projects on Snowflake: dbt project objects migrate to a single mutable live version을 참조하세요.

기존 dbt project object의 속성을 수정해요.

참고 항목:

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

출처: 문서

본문

구문

ALTER DBT PROJECT [ IF EXISTS ]  RENAME TO 

ALTER DBT PROJECT  DEPLOY FROM ''

ALTER DBT PROJECT [ IF EXISTS ]  SET
  [ DBT_VERSION = '' ]
  [ DEFAULT_TARGET = '' ]
  [ DEFAULT_ENVIRONMENT = '' ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = (  [, ... ] ) ]
  [ AUTO_COMPILE = { TRUE | FALSE } ]
  [ DEFAULT_WRITEBACK = { TRUE | FALSE } ]
  [ COMMENT = '' ]

ALTER DBT PROJECT [ IF EXISTS ]  UNSET
  [ DBT_VERSION ]
  [ DEFAULT_TARGET ]
  [ DEFAULT_ENVIRONMENT ]
  [ EXTERNAL_ACCESS_INTEGRATIONS ]
  [ AUTO_COMPILE ]
  [ DEFAULT_WRITEBACK ]
  [ COMMENT ]

매개변수

name

변경할 dbt 프로젝트 객체의 식별자를 지정해요.

식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 해요. 큰따옴표로 묶인 식별자는 대소문자를 구분해요.

자세한 내용은 식별자 요구 사항을 참조해요.

RENAME TO new_name

dbt 프로젝트 객체의 이름을 new_name으로 변경해요. 새 식별자는 스키마 내에서 고유해야 해요.

식별자에 대한 자세한 내용은 식별자 요구 사항을 참조해요.

객체의 이름을 선택적으로 변경하면서 다른 데이터베이스 및/또는 스키마로 이동할 수 있어요. 이렇게 하려면 각각 db_name.schema_name.object_name 또는 schema_name.object_name 형식으로 새 데이터베이스 및/또는 스키마 이름을 포함하는 정규화된 new_name 값을 지정해요.

  • 대상 데이터베이스 및/또는 스키마는 이미 존재해야 해요. 또한 새 위치에 같은 이름의 객체가 이미 있으면 안 돼요. 그렇지 않으면 문이 오류를 반환해요.
  • 객체 소유자(즉, 객체에 대한 OWNERSHIP 권한이 있는 역할)가 대상 스키마도 소유하지 않는 한, 관리형 액세스 스키마로 객체를 이동하는 것은 금지돼요.

객체 이름을 변경하면 해당 객체를 참조하는 다른 객체도 새 이름으로 업데이트해야 해요.

DEPLOY FROM 'source_location'

소스 파일을 dbt 프로젝트 객체의 변경 가능한 live 버전에 배포해요. 배포는 기존 대상 아티팩트를 포함하여 라이브 버전의 내용을 단일 작업으로 교체해요.

소스 위치는 루트에 단일 dbt_project.yml 파일이 포함된 디렉터리를 가리켜야 해요. 소스 파일은 다음 위치 중 하나에 있을 수 있어요:

  • 내부 명명된 스테이지, 예를 들어:

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

    내부 사용자 스테이지와 테이블 스테이지는 지원되지 않아요.

  • dbt 워크스페이스, 예를 들어:

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

    워크스페이스 URI는 versions/live를 사용하며, 이는 워크스페이스의 활성 작업 상태를 나타내요. 워크스페이스 이름은 대소문자를 구분하고 특수 문자를 포함할 수 있으므로 큰따옴표로 묶는 것을 권장해요.

  • 기존 dbt 프로젝트 스테이지, 예를 들어:

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

    버전 지정자는 필수이며 live예요.

  • Git 저장소 스테이지, 예를 들어:

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

    Git 저장소 객체 및 스테이지 생성과 관리에 대한 자세한 내용은 Snowflake에서 Git 저장소 사용CREATE GIT REPOSITORY를 참조해요.

SET ...

dbt 프로젝트 객체에 대해 하나 이상의 지정된 속성 또는 매개변수를 설정해요:

DBT_VERSION = 'version_number'

dbt 프로젝트 객체의 버전을 지정해요.

값을 지정하지 않으면 시스템은 DEFAULT_DBT_VERSION 계정 매개변수에 설정된 버전을 기본값으로 사용해요. 자세한 내용은 을(를) 참조해요.

AUTO_COMPILE = { TRUE | FALSE }

Snowflake가 각 배포 후 dbt 프로젝트를 컴파일할지 여부를 지정해요:

  • TRUE: 배포 중에 dbt compile을 실행해요. 외부 액세스 통합이 구성된 경우 Snowflake는 먼저 dbt deps를 실행한 다음 dbt compile을 실행해요. 컴파일 아티팩트를 라이브 버전에 저장해요.
  • FALSE: 두 명령을 모두 건너뛰어요. 나중에 EXECUTE DBT PROJECT로 두 명령 중 하나를 실행할 수 있어요.

DEFAULT_WRITEBACK = { TRUE | FALSE }

후속 실행에서 생성된 대상 및 로그 파일을 기본적으로 라이브 버전에 다시 쓸지 여부를 지정해요. 개별 실행에 대해 EXECUTE DBT PROJECTWRITEBACK 매개변수로 이 값을 재정의할 수 있어요.

이 설정과 관계없이 Snowflake는 각 실행에 대해 쿼리별 결과 아티팩트와 아카이브를 별도로 저장해요.

DEFAULT_TARGET = default_target

dbt 프로젝트 객체의 컴파일 및 후속 실행에 사용되는 프로필(예: prod)을 지정해요. 이 매개변수는 ARGS = '--target '와 함께 EXECUTE DBT PROJECT 명령을 사용하여 재정의할 수 있어요.

DEFAULT_ENVIRONMENT = 'environment_name'

dbt 프로젝트 객체의 컴파일 및 후속 실행에 사용되는 기본 환경을 설정하거나 변경해요. 값은 프로젝트의 env.yml 파일에 정의된 환경을 식별해요. 이 속성이 설정되지 않으면 Snowflake는 env.ymldefault_environment:를 사용해요. EXECUTE DBT PROJECT 명령의 ENVIRONMENT 인수로 실행별로 재정의할 수 있어요. 기본적으로 환경 없이 실행하려면 예약된 이름 NO_ENV를 사용해요.

자세한 내용은 Snowflake에서 dbt 프로젝트에 SQL 환경 변수 및 프라이빗 Git 패키지 사용을 참조해요.

EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )

dbt 패키지 허브 또는 GitHub에서 원격 종속성을 가져올 수 있는 권한을 부여하는 데 사용되는 외부 액세스 통합을 지정해요. 객체에 선언하면 배포 중에 dbt deps가 자동으로 실행돼요. 자세한 내용은 Snowflake에서 dbt 프로젝트의 종속성 이해를 참조해요.

COMMENT = 'string_literal'

dbt 프로젝트 객체에 주석을 추가하거나 기존 주석을 덮어써요.

UNSET ...

dbt 프로젝트 객체에 대해 하나 이상의 지정된 속성 또는 매개변수를 NULL 또는 값 없음으로 설정 해제해요.


  • DBT_VERSION
  • DEFAULT_TARGET
  • DEFAULT_ENVIRONMENT
  • EXTERNAL_ACCESS_INTEGRATIONS
  • AUTO_COMPILE
  • DEFAULT_WRITEBACK
  • COMMENT

단일 ALTER 문으로 여러 속성이나 매개변수를 설정 해제하려면 각 속성이나 매개변수를 쉼표로 구분하세요.

속성이나 매개변수를 설정 해제할 때는 속성이나 매개변수 이름만 지정하세요 (위 구문에서 값을 지정해야 한다고 표시되지 않은 경우). 값을 지정하면 오류가 반환됩니다.

액세스 제어 요구 사항

이 SQL 명령을 실행하는 데 사용되는 역할은 최소한 다음 권한 중 하나를 보유해야 합니다.

권한 객체 참고
OWNERSHIP dbt project %ac-ownership%

스키마의 객체를 운영하려면 상위 데이터베이스에 대한 권한이 하나 이상, 상위 스키마에 대한 권한이 하나 이상 필요합니다.

사용 참고 사항

  • ALTER DBT PROJECT는 명명된 데이터베이스/스키마에 배포된 dbt project 객체에서 작동합니다. 워크스페이스에서는 작동하지 않습니다. SQL compilation error: DBT PROJECT 'USER$...' does not exist or not authorized 오류가 발생하면 두 가지 일반적인 원인이 있습니다: 워크스페이스 경로를 대상으로 하고 있거나, 활성 역할에 객체에 대한 OWNERSHIP 권한이 없는 경우입니다. ALTER 명령을 다시 시도하기 전에 SHOW DBT PROJECTS를 사용하여 올바른 정규화된 이름(예: mydb.my_schema.my_project)을 확인하고 역할에 필요한 권한이 있는지 확인하세요.

  • DEPLOY FROM ''를 사용하여 dbt project 객체를 업데이트하세요. 배포는 단일 작업으로 라이브 프로젝트 콘텐츠를 대체합니다.

  • 메타데이터 관련:

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

예제

dbt 버전 설정

다음 예제는 dbt project 객체에 새 dbt 버전을 설정합니다:

ALTER DBT PROJECT finance_analytics SET dbt_version = '1.11.11';

라이브 버전 업데이트 배포

다음 예제는 Snowflake의 Git 저장소 객체를 업데이트하여 Git 저장소에서 최신 코드를 가져온 다음 dbt project 객체의 라이브 콘텐츠를 업데이트합니다:

-- Update the Git repository object to fetch the latest code

ALTER GIT REPOSITORY sales_db.integrations_schema.sales_dbt_git_stage FETCH;

-- Deploy the updated Git repository object to the live version

ALTER DBT PROJECT sales_db.dbt_projects_schema.sales_model
  DEPLOY FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_project';

기본 대상 및 새 외부 액세스 통합 설정

다음 예제는 기존 dbt project 객체를 다음과 같이 변경하여 업데이트합니다:

  • Snowflake가 --target 인수를 지정하지 않고 EXECUTE DBT PROJECT를 실행할 때 사용하는 기본 대상을 설정합니다. 예를 들어 DEFAULT_TARGET = 'prod'이면 EXECUTE DBT PROJECT sales_db.dbt_projects_schema.sales_model ARGS = 'run'; 같은 명령은 ARGS = '--target '로 재정의하지 않는 한 자동으로 --target prod를 사용하여 실행됩니다.

  • dbt project 객체가 사용할 외부 액세스 통합을 할당합니다.

    단일 통합 또는 목록을 제공할 수 있습니다: 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');

시스템 기본 버전으로 되돌리기

다음 예제는 dbt project 객체를 시스템 기본 버전(현재 1.9.4)으로 되돌립니다. 계정 관리자는 DEFAULT_DBT_VERSION 계정 매개변수를 사용하여 계정의 향후 모든 dbt project 객체에 대한 기본값을 변경할 수 있습니다.

자세한 내용은 를 참조하세요.

ALTER DBT PROJECT finance_analytics UNSET DBT_VERSION;
Statement executed successfully.

더 알아보기 (Learn more)