Snowflake CLI 를 사용하여 dbt Projects on Snowflake 관리하기¶
참고
Snowflake CLI 의 dbt Projects on Snowflake 기능은 버전 3.13.0 이상에서만 사용할 수 있습니다.
Snowflake CLI 를 사용하여 다음 작업으로 dbt 프로젝트를 관리할 수 있습니다.
dbt 프로젝트 오브젝트 배포¶
snow dbt deploy 명령은 로컬 파일을 임시 스테이지에 업로드한 후 새 dbt 프로젝트 오브젝트를 만들거나, 새 버전을 만들어서 업데이트하거나, 완전히 다시 만듭니다. 유효한 dbt 프로젝트에는 다음의 두 파일이 포함되어야 합니다.
dbt_project.yml: 사용할 프로필을 지정하는 표준 dbt 구성 파일입니다.profiles.yml:dbt_project.yml.:file:`profiles.yaml`에서 참조되는 dbt 연결 프로필은 데이터베이스, 역할, 스키마, 유형을 정의해야 합니다.기본적으로, dbt Projects on Snowflake 는 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 프로젝트 오브젝트 나열¶
snow dbt list 명령은 Snowflake에서 사용 가능한 모든 dbt 프로젝트 오브젝트를 나열합니다.
다음 예에서는 snow dbt list 명령을 사용하는 방법을 보여줍니다.
사용 가능한 모든 dbt 프로젝트 오브젝트를 나열합니다.
snow dbt list
이름이
JAFFLE`로 시작하는 dbt 프로젝트 오브젝트를 :codenowrap:`product데이터베이스에 나열합니다.snow dbt list --like JAFFLE% --in database product
dbt 프로젝트 오브젝트 명령 실행¶
snow dbt execute 명령은 Snowflake dbt 프로젝트 오브젝트에서 다음과 같은 `dbt 명령<https://docs.getdbt.com/reference/dbt-commands>`_ 중 하나를 실행합니다.
`compile<https://docs.getdbt.com/reference/commands/compile>`_
`run-operation<https://docs.getdbt.com/reference/commands/run -operation>`_
`snapshot<https://docs.getdbt.com/reference/commands/snapshot>`_
dbt 명령 사용에 대한 자세한 내용은 `dbt 명령 참조<https://docs.getdbt.com/reference/dbt-commands>`_ 섹션을 참조하세요.
다음 예에서는 snow dbt execute 명령을 사용하는 방법을 보여줍니다.
dbt
test명령을 실행합니다.snow dbt execute jaffle_shop test
rundbt 명령을 비동기적으로 실행합니다.snow dbt execute --run-async jaffle_shop run --select @source:snowplow,tag:nightly models/export
dbt 프로젝트 오브젝트 설명¶
snow dbt describe 명령은 Snowflake의 dbt 프로젝트 오브젝트에 대해 설명합니다.
다음 예에서는 Snowflake의 :codenowrap:`my_dbt_project`라는 dbt 프로젝트 오브젝트에 대해 설명합니다.
snow dbt describe my_dbt_project
dbt 프로젝트 오브젝트 삭제¶
snow dbt drop 명령은 Snowflake에서 dbt 프로젝트 오브젝트를 삭제합니다.
다음 예에서는 Snowflake의 :codenowrap:`my_dbt_project`라는 dbt 프로젝트 오브젝트를 삭제합니다.
snow dbt drop my_dbt_project
CI/CD 워크플로에서 snow dbt 명령 사용¶
참고
CI/CD워크플로를 빌드할 때 Github와 Snowflake CLI 같은 git 서버만 필요합니다. Git 리포지토리 오브젝트는 필요하지 않습니다.
Snowflake CLI 를 사용해 dbt 명령을 실행하여 CI/CD 파이프라인을 빌드할 수 있습니다. 이러한 파이프라인은 일반적으로 새 풀 요청과 같은 새 코드를 테스트하거나, 기본 분기에 병합될 때마다 프로덕션 애플리케이션을 업데이트하는 데 사용됩니다.
snow dbt 명령을 사용하여 CI/CD 워크플로를 빌드하려면 다음 단계를 따르세요.
dbt 프로젝트를 준비합니다.
Snowflake CLI GitHub 작업을 설정합니다.
지침에 따라 :doc:`Snowflake CLI에 대한 GitHub 작업을 설정 </developer-guide/snowflake-cli/cicd/integrate-ci-cd>`하고, Snowflake에 대한 :ref:`연결을 확인<label-cli_test_connection>`하세요.
워크플로를 정의합니다.
조직의 요구 사항에 따라 워크플로에서 실행해야 하는 명령을 결정합니다. 다음 예제에서는 :codenowrap:`product_pipeline`이라는 dbt 프로젝트 오브젝트 버전을 새 파일로 업데이트하는 CI 워크플로를 설명하고, 변환 작업을 실행하며, 마지막으로 테스트를 실행합니다.
- name: Execute Snowflake CLI command run: | snow dbt deploy product_pipeline snow dbt execute product_pipeline run snow dbt execute product_pipeline test