dbt 프로젝트 오브젝트 이해

DBT PROJECT는 Snowflake의 dbt 프로젝트에 대한 버전이 지정된 소스 파일을 포함하는 스키마 수준 오브젝트입니다. dbt 프로젝트 오브젝트를 작업 공간에 연결하거나, 작업 공간과는 독립적으로 오브젝트를 만들고 관리할 수 있습니다.

dbt 프로젝트 오브젝트는 일반적으로 dbt-project.yml 파일이 포함된 dbt 프로젝트 디렉터리를 기반으로 합니다. 이는 작업 공간 내에서 dbt 프로젝트 오브젝트를 :doc:`배포</user-guide/data-engineering/dbt-projects-on-snowflake-deploy>`(생성)할 때 Snowflake가 사용하는 패턴입니다.

dbt 프로젝트 오브젝트는 RBAC(역할 기반 액세스 제어)를 지원합니다. Snowflake의 다른 스키마 수준 오브젝트와 같이 dbt 프로젝트 오브젝트를 CREATE, ALTER 및 DROP할 수 있습니다. Snowflake Warehouse에서 EXECUTE DBT PROJECT 명령을 사용하여 test``run``과 같은 dbt 명령을 실행할 수 있습니다. :doc:`작업</user-guide/tasks-intro>`을 사용하여 이러한 명령의 실행을 예약할 수도 있습니다.

dbt 프로젝트 오브젝트가 업데이트되는 방법

dbt 프로젝트 오브젝트는 작업 공간을 편집할 때 자동으로 업데이트되지 않습니다. 따라서 오브젝트가 코드 변경 사항을 선택하도록 할 때마다 배포(즉, 새 버전을 추가)해야 합니다.

프로덕션 파이프라인을 생성하려면 dbt 프로젝트 오브젝트를 생성하고 :doc:`작업을 사용하여 실행을 예약</user-guide/data-engineering/dbt-projects-on-snowflake-schedule-project-execution>`하는 것이 좋습니다. 각 dbt 프로젝트 오브젝트 버전은 변경할 수 없으므로 누군가가 새 버전을 명시적으로 추가하지 않는 한, 실행 사이에 아무 것도 변경되지 않습니다.

dbt 프로젝트의 파일을 업데이트하려면 작업 공간에 새 버전을 추가해야 합니다. 예를 들면 다음과 같습니다.

ALTER DBT PROJECT testdbt.public.my_dbt_project_object
  ADD VERSION FROM 'snow://workspace/user$.public."all_my_dbt_projects"/versions/last';
Copy

Git에서 dbt 프로젝트를 지원하고 테스트 및 배포를 자동화하려면 다음 예와 같이 --force 옵션을 지정하여 Snow CLI snow dbt deploy 명령을 실행하세요.

snow dbt deploy --source 'snow://workspace/user$.public."all_my_dbt_projects"/versions/last'  --force my_dbt_project;
Copy

:code:`–force`를 사용하면 버전을 추가할 수 있습니다. 이 옵션을 사용하지 않을 경우 이미 생성된 오브젝트에 대해 CREATE DBT PROJECT를 실행하는 것과 같게 되며 실패합니다.

버전 관리에 대한 자세한 내용은 dbt 프로젝트 오브젝트 및 파일의 버전 관리 섹션을 참조하세요.

dbt 프로젝트 오브젝트 및 파일의 버전 관리

Snowflake는 dbt 프로젝트 오브젝트와 해당 프로젝트 파일의 버전을 유지 관리합니다. 이 버전 관리를 사용하여 데이터 개발 및 배포 수명 주기 전체에서 변경 사항을 추적하고 관리할 수 있습니다. Snowflake는 다음 예제와 같이 dbt 프로젝트 스테이지에서 dbt 프로젝트 오브젝트 버전을 식별합니다.

snow://dbt/my_db.my_schema.my_dbt_project_object/versions/version_id

:samp:`{version_id}`는 다음 식별자 중 하나일 수 있습니다.

  • VERSION$<num> - VERSION$<num>``의 형식으로 버전 식별자를 지정합니다. 여기서 ``<num>은 양의 정수(예: VERSION$1)입니다.

    dbt 프로젝트 오브젝트를 생성할 때 버전 번호는 ``1``에서 시작하고 dbt 프로젝트 오브젝트의 새 버전이 나올 때마다 1씩 증분합니다.

    Snowflake는 다음 작업을 수행할 때 버전 식별자를 증분합니다.

    • 작업 공간에서 :ui:`Redeploy dbt project`(ADD VERSION 옵션을 사용하여 ALTER 명령 실행).

    • ALTER DBT PROJECT 명령을 사용하여 프로젝트 업데이트.

    • --force 옵션 없이 Snow CLI snow dbt deploy 명령 실행.

    Snowflake는 버전 식별자를 ``1``로 재설정하고 다음 명령을 실행할 때 모든 버전 별칭을 제거합니다.

    • OR REPLACE 옵션이 있는 SQL의 CREATE DBT PROJECT 명령.

  • LAST - dbt 프로젝트 오브젝트의 최신 버전을 나타냅니다.

  • FIRST - dbt 프로젝트 오브젝트의 가장 오래된 버전을 나타냅니다.

  • version_name_alias - ADD VERSION 옵션과 함께 ALTER DBT PROJECT 명령을 사용하여 dbt 프로젝트 오브젝트의 특정 버전에 대해 생성한 사용자 지정 버전 이름 별칭을 나타냅니다. 버전 이름 별칭은 항상 특정 버전 식별자(예: VERSION$3)에 매핑됩니다.

dbt 프로젝트 스테이지에 저장된 프로젝트 파일은 버전별로 구성되며, 각 버전에는 자체 하위 디렉터리가 있습니다. 예를 들어, 버전 식별자가 ``VERSION$3``인 ``my_dbt_project_object``라는 dbt 프로젝트 오브젝트와 :file:`dbt_project.yml`이라는 dbt 프로젝트 파일은 다음 예와 같이 참조할 수 있습니다.

snow://dbt/my_db.my_schema/my_dbt_project_object/versions/VERSION$3/dbt_project.yml