dbt 프로젝트 오브젝트 배포¶
|sf-dbt|에서 dbt 프로젝트 오브젝트 배포는 dbt 프로젝트 코드를 Snowflake에 복사하여 오브젝트를 생성하거나 새 버전으로 업데이트하는 작업을 의미합니다. 이 작업은 |sf-web-interface|, CREATE DBT PROJECT 명령이나 ALTER DBT PROJECT SQL 명령 또는 Snowflake CLI의 snow dbt deploy 명령으로 수행합니다.
|sf-web-interface|를 사용하여 dbt 프로젝트 오브젝트 배포¶
|sf-web-interface|에 dbt 프로젝트 오브젝트 배포는 작업 공간에서 dbt 코드를 가져와 신규 또는 기존 dbt 프로젝트를 업데이트합니다.
|sf-web-interface|에 dbt 프로젝트 오브젝트를 배포하려면 dbt deps 명령 실행 후 다음 단계를 완료합니다.
Snowsight 에 로그인합니다.
탐색 메뉴에서 Projects » Workspaces 를 선택합니다.
Workspaces 메뉴에서 dbt 프로젝트가 포함된 작업 공간을 선택합니다.
dbt 파일이 제자리에 있는지 확인합니다.
해당 항목이 작동하는지 확인하려면 다음과 같이
dbt compile,dbt run또는 dbt build 명령을 실행합니다.작업 공간의 오른쪽 상단에서 :ui:`Connect`를 선택한 후 다음 중 하나를 선택합니다.
Deploy dbt project 팝업 창에서 다음을 선택합니다.
Select location 아래에서 데이터베이스와 스키마를 선택합니다.
Select or Create dbt projecr 에서 Create dbt project 를 선택합니다.
이름과 설명을 입력합니다.
선택적으로, 기본 대상을 입력하여 컴파일 및 후속 실행에 사용할 프로필(예: prod)을 선택합니다. dbt 프로젝트 실행의 대상은 여전히
ARGS`에서 :code:–target`으로 재정의할 수 있습니다.선택적으로, :ui:`Run dbt deps`를 선택한 다음, 배포 중에 :code:`dbt deps`를 자동으로 실행하기 위한 외부 액세스 통합을 선택합니다.
Deploy 를 선택합니다.
Output 탭에는 다음 예와 유사한 Snowflake에서 실행되는 명령이 표시됩니다.
CREATE DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project FROM 'snow://workspace/mydb.my_dbt_projects_schema.sales_model/versions/version$2' EXTERNAL_ACCESS_INTEGRATIONS = ();
my_dbt_project successfully created.이제 생성한 dbt 프로젝트 오브젝트의 이름이 Connect 메뉴에 다음 옵션과 함께 표시됩니다.
Redeploy dbt project: ALTER를 사용하여 dbt 프로젝트 오브젝트를 프로젝트의 현재 작업 공간 버전으로 업데이트합니다. 이렇게 하면 dbt 프로젝트 오브젝트의 버전이 1씩 증분합니다. 자세한 내용은 dbt 프로젝트 오브젝트 및 파일의 버전 관리 섹션을 참조하십시오.
Disconnect: dbt 프로젝트 오브젝트에서 작업 공간의 연결을 해제하지만, dbt 프로젝트 오브젝트를 삭제하지는 않습니다.
Edit project: dbt 프로젝트 오브젝트에 대한 설명, 기본 대상 및 외부 액세스 통합을 업데이트합니다.
View project: 오브젝트 탐색기에서 dbt 프로젝트 오브젝트를 열어 dbt 프로젝트 오브젝트에 대한 CREATE DBT PROJECT 명령과 프로젝트에 대한 실행 기록을 볼 수 있습니다.
Create schedule: 일정에 따라 dbt 프로젝트 오브젝트를 실행하는 작업을 생성할 수 있는 옵션을 제공합니다. 자세한 내용은 dbt 프로젝트 실행을 예약하는 작업 만들기 섹션을 참조하십시오.
View schedules: 오브젝트 탐색기에서 작업 세부 정보를 보는 옵션과 함께 dbt 프로젝트 오브젝트를 실행하는 일정(작업) 목록을 엽니다.
선택적으로 워크시트의 SHOW DBT PROJECTS 명령을 실행하여 dbt 프로젝트가 있는지 확인합니다. 예:
SHOW DBT PROJECTS IN DATABASE mydb;
SQL 명령을 사용하여 dbt 프로젝트 오브젝트 배포하기¶
CREATE DBT PROJECT 및 ALTER DBT PROJECT 명령은 문의 FROM 절에 지정된 파일을 복사하여 dbt 프로젝트 오브젝트에 각각 새 버전을 생성하고 추가합니다.
CREATE DBT PROJECT 명령은 아래에 표시된 것처럼 단일 초기 버전(예: VERSION$1)으로 새 오브젝트를 생성합니다.
CREATE DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
DEFAULT_TARGET = 'prod'
EXTERNAL_ACCESS_INTEGRATIONS = my_dbt_ext_access
COMMENT = 'Generates sales data models.';
ALTER DBT PROJECT 명령은 증분된 고유 버전 번호(예: VERSION$2, VERSION$3 등)로 기존 오브젝트 내에서 새 버전을 생성합니다.
-- 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 mydb.my_dbt_projects_schema.my_dbt_project
ADD VERSION
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_project';
|sf-cli|를 사용하여 dbt 프로젝트 오브젝트 배포¶
snow dbt deploy 명령은 로컬 파일을 임시 스테이지에 업로드한 후 새 dbt 프로젝트 오브젝트를 만들거나, 새 버전을 만들어서 업데이트하거나, 완전히 다시 만듭니다. 유효한 dbt 프로젝트에는 다음의 두 파일이 포함되어야 합니다.
dbt_project.yml: 사용할 프로필을 지정하는 표준 dbt 구성 파일입니다.profiles.yml:dbt_project.yml.:file:`profiles.yaml`에서 참조되는 dbt 연결 프로필은 데이터베이스, 역할, 스키마, 유형을 정의해야 합니다.기본적으로, |sf-dbt|는 dbt 환경 또는 프로필에서 지정된 대상 스키마(
target.schema)를 사용합니다. dbt Core 동작과 달리, dbt 프로젝트를 성공적으로 컴파일하거나 실행하려면profiles.yml파일에 지정된 대상 스키마가 dbt 프로젝트를 만들기 전에 있어야 합니다.
<profile_name>: target: dev outputs: dev: database: <database_name> role: <role_name> schema: <schema_name> type: snowflake
다음 예에서는 snow dbt deploy 명령을 사용하는 방법을 보여줍니다.
:codenowrap:`jaffle_shop`이라는 dbt 프로젝트 오브젝트를 배포합니다.
snow dbt deploy jaffle_shop
지정된 디렉터리에서 :codenowrap:`jaffle_shop`이라는 프로젝트를 배포하고, dbt 프로젝트 오브젝트가 이미 있는지 여부에 따라 새 버전을 만들거나 추가합니다.
snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --force
사용자 지정 프로필 디렉터리를 사용하고 :doc:`외부 액세스 통합</developer-guide/external-network-access/creating-using-external-network-access>`을 활성화하여 지정된 디렉터리에서 :codenowrap:`jaffle_shop`이라는 프로젝트를 배포합니다.
snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --default-target dev --external-access-integration dbthub-integration --external-access-integration github-integration --force
소스 파일 위치¶
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 프로젝트 오브젝트 및 파일의 버전 관리 섹션을 참조하십시오.