자습서 Snowflake의 dbt 프로젝트 시작

소개

이 자습서에서는 Snowflake Labs의 `getting-started-with-dbt-on-snowflake 리포지토리`_에서 포크한 GitHub 리포지토리에 연결된 |sf-dbt|용 작업 공간을 만드는 방법을 안내합니다. 그런 다음, 작업 공간을 사용하여 dbt 프로젝트 파일을 업데이트하고 dbt 프로젝트를 테스트 및 실행하여 대상 Snowflake 데이터베이스 및 스키마에서 dbt 프로젝트의 데이터 모델 출력을 구체화합니다. 프로젝트를 배포하여 Snowflake에서 dbt 프로젝트 오브젝트를 생성합니다. 마지막으로, 정의한 일정에 따라 프로젝트를 실행하는 작업을 설정합니다.

전제 조건

  • GitHub

    • 리포지토리를 생성하고 해당 리포지토리에 대한 액세스를 관리할 수 있는 GitHub 계정.

    • 명령줄의 Git. 설치에 대한 자세한 내용은 Git 설정 섹션을 참조하세요.

  • Snowflake

    • :doc:`/user-guide/data-engineering/dbt-projects-on-snowflake-access-control`에 설명된 대로 권한이 있는 Snowflake 계정 및 사용자.

    • 다음 오브젝트를 생성 및 편집할 수 있는 권한 또는 사용자를 대신하여 각 오브젝트를 생성할 수 있는 관리자에 대한 액세스 권한.

      • API 통합

      • GitHub 리포지토리가 비공개인 경우, 시크릿

      • 네트워크 규칙

      • 네트워크 규칙을 참조하는 외부 액세스 통합

      • 사용자 오브젝트

환경 설정하기

이 자습서를 위한 환경을 설정하려면 다음 단계를 완료하세요.

  1. dbt Projects on Snowflake 시작 리포지토리 포크 및 복제

  2. (선택 사항) 작업 공간 작업을 실행하기 위한 웨어하우스 만들기

  3. 통합 및 모델 구체화를 위한 데이터베이스 및 스키마 만들기

  4. Snowflake에서 GitHub에 연결하기 위한 API 통합 만들기

  5. Snowflake에서 dbt 종속성에 대한 외부 액세스 통합 만들기

dbt Projects on Snowflake 시작 리포지토리 포크 및 복제

  1. https://github.com/Snowflake-Labs/getting-started-with-dbt-on-snowflake로 이동하여 Fork 옆의 아래쪽 화살표를 선택한 다음, :ui:`Create a new fork`를 선택합니다.

  2. 포크된 리포지토리의 소유자와 이름, 기타 세부 정보를 지정합니다. 자습서의 뒷부분에서 다음 URL을 사용하여 포크된 리포지토리를 나타냅니다.

    https://github.com/my-github-account/getting-started-with-dbt-on-snowflake.git
    
    Copy

(선택 사항) 작업 공간 작업을 실행하기 위한 웨어하우스 만들기

작업 공간에 할당된 전용 웨어하우스는 해당 작업 공간 내에서 시작된 작업을 기록, 추적, 식별하는 데 도움이 될 수 있습니다. 이 자습서에서는 이름이 TASTY_BYTES_DBT_WH인 웨어하우스를 사용합니다. 또는 계정의 기존 웨어하우스를 사용할 수 있습니다. 웨어하우스 생성에 대한 자세한 내용은 웨어하우스 만들기 섹션을 참조하세요.

원본 데이터에 대해 생성하는 Tasty Bytes 데이터 모델은 상당히 크므로 XL 웨어하우스를 사용하는 것이 좋습니다.

웨어하우스를 생성하려면 다음 SQL 명령을 실행하세요.

CREATE WAREHOUSE tasty_bytes_dbt_wh WAREHOUSE_SIZE = XLARGE;
Copy

통합 및 모델 구체화를 위한 데이터베이스 및 스키마 만들기

이 자습서에서는 이름이 TASTY_BYTES_DBT_DB인 데이터베이스를 사용합니다. 해당 데이터베이스 내에서 INTEGRATIONS라는 스키마를 만들어 Snowflake가 GitHub 통합에 필요한 오브젝트를 저장합니다. 이름이 DEV 및 PROD인 스키마를 생성하여 dbt 프로젝트에서 생성하는 구체화된 오브젝트를 저장합니다.

데이터베이스와 스키마를 생성하려면 다음 SQL 명령을 실행하세요.

CREATE DATABASE tasty_bytes_dbt_db;
CREATE SCHEMA tasty_bytes_dbt_db.integrations;
CREATE SCHEMA tasty_bytes_dbt_db.dev;
CREATE SCHEMA tasty_bytes_dbt_db.prod;
Copy

Snowflake에서 GitHub에 연결하기 위한 API 통합 만들기

Snowflake에는 GitHub와 상호 작용하기 위한 API 통합이 필요합니다.

리포지토리가 비공개인 경우 리포지토리에 대한 GitHub 자격 증명을 저장할 시크릿도 Snowflake에 생성해야 합니다. 그런 다음, API 통합 정의의 시크릿을 ALLOWED_AUTHENTICATION_SECRETS 중 하나로 지정합니다. 또한 이 자습서의 뒷부분에서 dbt 프로젝트의 작업 공간을 만들 때 이 시크릿을 지정합니다.

시크릿을 만들려면 리포지토리에 대한 개인 액세스 토큰이 필요합니다. 토큰 생성에 대한 자세한 내용은 GitHub 설명서의 개인 액세스 토큰 관리 섹션을 참조하세요.

이 자습서에서는 이름이 TB_DBT_GIT_SECRET인 시크릿을 사용합니다. 시크릿 생성에 대한 자세한 내용은 Git을 사용하기 위해 Snowflake 설정하기 섹션을 참조하세요.

GitHub에 대한 시크릿을 생성하려면, 다음 SQL 명령을 실행하세요.

USE tasty_bytes_dbt_db.integrations;
CREATE OR REPLACE SECRET tasty_bytes_dbt_db.integrations.tb_dbt_git_secret
  TYPE = password
  USERNAME = 'your-gh-username'
  PASSWORD = 'YOUR_PERSONAL_ACCESS_TOKEN';
Copy

방금 생성한 비밀을 사용하는 GitHub용 API 통합을 생성하려면 다음 SQL 명령을 실행하세요. :code:`https://github.com/my-github-account`를 포크된 리포지토리의 GitHub 계정의 SSH URL로 바꾸세요.

CREATE OR REPLACE API INTEGRATION tb_dbt_git_api_integration
  API_PROVIDER = git_https_api
  API_ALLOWED_PREFIXES = ('https://github.com/my-github-account')
  -- Comment out the following line if your forked repository is public
  ALLOWED_AUTHENTICATION_SECRETS = (tasty_bytes_dbt_db.integrations.tb_dbt_git_secret)
  ENABLED = TRUE;
Copy

Snowflake에서 dbt 종속성에 대한 외부 액세스 통합 만들기

작업 공간에서 dbt 명령을 실행할 때 dbt는 종속성을 다운로드하기 위해 원격 URLs에 액세스해야 할 수 있습니다. 예를 들어, dbt는 dbt 패키지 허브 또는 GitHub에서 패키지를 다운로드해야 할 수 있습니다.

대부분의 dbt 프로젝트는 packages.yml 파일에 종속성을 지정합니다. 이러한 종속성은 dbt 프로젝트 작업 공간에 설치해야 합니다. 종속성이 있는 배포된 dbt 프로젝트 오브젝트는 업데이트할 수 없습니다.

원격 URLs에서 종속성 파일을 가져오려면, Snowflake에는 네트워크 규칙에 의존하는 외부 액세스 통합이 필요합니다.

Snowflake의 외부 액세스 통합에 대한 자세한 내용은 외부 액세스 통합 생성 및 사용하기 섹션을 참조하세요.

네트워크 규칙 및 외부 액세스 통합을 생성하려면 다음을 SQL 명령을 실행하세요.

-- Create NETWORK RULE for external access integration

CREATE OR REPLACE NETWORK RULE dbt_network_rule
  MODE = EGRESS
  TYPE = HOST_PORT
  -- Minimal URL allowlist that is required for dbt deps
  VALUE_LIST = (
    'hub.getdbt.com',
    'codeload.github.com'
    );

-- Create EXTERNAL ACCESS INTEGRATION for dbt access to external dbt package locations

CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION dbt_ext_access
  ALLOWED_NETWORK_RULES = (dbt_network_rule)
  ENABLED = TRUE;
Copy

Git 리포지토리에 연결된 작업 공간 만들기

이 단계에서는 GitHub 리포지토리에 연결된 |sf-web-interface|에 작업 공간을 만듭니다. 작업 공간에 대한 자세한 내용은 작업 공간 섹션을 참조하세요.

  1. Snowsight 에 로그인합니다.

  2. 왼쪽 탐색 메뉴에서 Projects » `작업 공간`을 선택합니다.

  3. 작업 공간 파일 영역 위 작업 공간 목록의 :ui:`Create Workspace`에서 :ui:`From Git repository`를 선택합니다. (작업 공간 목록에는 기본적으로 :ui:`My Workspace`가 선택되어 있습니다.)

  4. :ui:`Repository URL`에 포크된 GitHub 리포지토리의 SSH URL을 입력합니다(예: https://github.com/my-github-account/getting-started-with-dbt-on-snowflake.git).

  5. Workspace name 에는 이름을 입력합니다. 이 자습서의 뒷부분에서는 *tasty_bytes_dbt*를 사용합니다.

  6. :ui:`API integration`에서 이전에 생성한 API 통합의 이름을 선택합니다(예: TB_DBT_GIT_API_INTEGRATION).

  7. GitHub 리포지토리가 공용인 경우 :ui:`Public repository`를 선택한 다음, :ui:`Create`를 선택합니다.

    참고

    작업 공간은 작업 공간에서 공용 리포지토리로의 변경을 커밋하고 푸시하는 기능을 지원하지 않습니다.

  8. GitHub 리포지토리가 비공개이고 설정 중에 API 통합에 대한 시크릿을 생성한 경우 다음을 수행합니다.

    1. Personal access token 을 선택합니다.

    2. Credentials secret 에서 Select database and schema 를 선택합니다.

    3. 목록에서 데이터베이스를 선택(예: TASTY_BYTES_DBT_DB)한 다음, 목록에서 API 통합을 저장한 스키마를 선택합니다(예: INTEGRATIONS).

    4. :ui:`Select secret`을 선택한 다음, 목록에서 시크릿을 선택합니다(예: tb_dbt_git_secret).

  9. Create 를 선택합니다.

    Snowflake는 사용자가 지정한 GitHub 리포지토리에 연결하고 새 작업 공간을 엽니다. 이름이 :file:`tasty_bytes_dbt_demo`인 작업 공간의 단일 폴더에는 작업할 dbt 프로젝트가 포함됩니다.

dbt 프로젝트 루트에 있는profiles.yml 파일 내용 확인

Snowflake 작업 공간의 각 dbt 프로젝트 폴더에는 프로젝트에 대한 Snowflake의 대상 warehouse, database, schema, role`을 지정하는 :file:`profiles.yml 파일이 포함되어야 합니다. type`은 :code:`snowflake`로 설정해야 합니다. dbt에는 :code:`account 및 :code:`user`가 필요하지만, dbt 프로젝트는 현재 계정 및 사용자 컨텍스트로 Snowflake에서 실행되므로 비어 있거나 임의의 문자열로 남을 수 있습니다.

dbt 명령을 실행하면 작업 공간에서 profiles.yml 파일을 읽습니다. profiles.yml`에 유효한 ``target``이 하나 이상 지정되어 있는 경우 대상은 작업 공간 편집 위의 메뉴 모음에 있는 :ui:`Profile 목록에서 선택할 수 있습니다. dbt 명령을 실행하면 작업 공간에서 선택한 프로필(target)을 사용하여 명령을 실행합니다.

tasty_bytes_dbt_demo/profiles.yml 파일을 연 다음, 내용이 다음 예와 일치하는지 확인합니다. 이전에 다른 데이터베이스 또는 웨어하우스 이름을 지정한 경우 원하는 이름으로 바꾸세요.

tasty_bytes:
target: dev
outputs:
  dev:
    type: snowflake
    account: 'not needed'
    user: 'not needed'
    role: accountadmin
    database: tasty_bytes_dbt_db
    schema: dev
    warehouse: tasty_bytes_dbt_wh
  prod:
    type: snowflake
    account: 'not needed'
    user: 'not needed'
    role: accountadmin
    database: tasty_bytes_dbt_db
    schema: prod
    warehouse: tasty_bytes_dbt_wh
Copy

tasty_bytes_setup.sql에서 SQL 명령을 실행하여 소스 데이터 설정

리포지토리의 dbt 프로젝트는 변환을 위한 소스 데이터로 가상의 Tasty Bytes 푸드 트럭 브랜드의 기본 데이터 모델을 사용합니다. 데이터 모델을 생성하는 SQL 스크립트는 작업 공간에 있습니다.

  1. 작업 공간에서 tasty_bytes_dbt_demo/setup/tasty_bytes_setup.sql 파일로 이동한 다음, 엽니다.

  2. 작업 공간 편집기의 오른쪽 상단에 있는 컨텍스트 선택기에서 앞서 만든 웨어하우스를 선택합니다(예: TASTY_BYTES_DBT_WH).

  3. SQL 파일에는 이 자습서에서 이미 실행한 명령이 포함되어 있습니다. 파일의 시작 부분에서 다음 명령을 찾은 다음, 다시 실행하여 중복 리소스를 생성하지 않도록 주석 처리합니다.

    CREATE OR REPLACE WAREHOUSE ...;
    CREATE OR REPLACE API INTEGRATION ...;
    CREATE OR REPLACE NETWORK RULE ...;
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION ...;
    
    Copy
  4. 파일에서 주석 처리되지 않은 SQL 명령을 실행합니다.

    cmd + Shift + :kbd:`Enter`를 사용하여 주석 처리되지 않은 모든 명령을 실행합니다.

    Output 탭에 다음 메시지가 표시됩니다.

    tb_101 setup is now complete

로깅, 추적, 메트릭 활성화

dbt 프로젝트 오브젝트 및 해당되는 경우 일정에 따라 이를 실행하는 작업에 대한 로깅 및 추적 이벤트를 캡처할 수 있습니다. 자세한 내용은 Snowflake에서 dbt 프로젝트 모니터링 섹션을 참조하십시오.

이 기능을 활성화하려면 dbt 프로젝트 오브젝트와 작업이 배포되는 스키마에 로깅, 추적, 메트릭을 설정해야 합니다.

tasty_bytes_setup.sql 파일의 다음 명령은 TASTY_BYTES_DBT_DB 데이터베이스의 DEV 및 PROD 스키마에 대한 로깅, 추적, 메트릭을 활성화합니다. 이전 단계에서 이를 실행했습니다. 자체 프로젝트에 대한 로깅, 추적, 메트릭을 활성화할 수 있도록 참조용으로 여기에 표시됩니다.

ALTER SCHEMA tasty_bytes_dbt_db.dev SET LOG_LEVEL = 'INFO';
ALTER SCHEMA tasty_bytes_dbt_db.dev SET TRACE_LEVEL = 'ALWAYS';
ALTER SCHEMA tasty_bytes_dbt_db.dev SET METRIC_LEVEL = 'ALL';

ALTER SCHEMA tasty_bytes_dbt_db.prod SET LOG_LEVEL = 'INFO';
ALTER SCHEMA tasty_bytes_dbt_db.prod SET TRACE_LEVEL = 'ALWAYS';
ALTER SCHEMA tasty_bytes_dbt_db.prod SET METRIC_LEVEL = 'ALL';
Copy

프로젝트에 대해 dbt deps 명령 실행

작업 공간을 사용하여 프로젝트에 대한 일반적인 dbt 명령을 실행할 수 있습니다. 사용 가능한 명령 목록은 지원되는 dbt 명령 섹션을 참조하세요. 명령을 실행하려면 작업 공간 편집기 위의 목록에서 dbt Project, Profile, dbt 명령을 선택하세요. 그런 다음, 실행 버튼을 선택합니다. 실행 버튼 옆에 있는 아래쪽 화살표를 사용하여 dbt 명령이 지원하는 추가 인자를 지정합니다.

작업 공간 내에서 dbt 명령을 실행하면 Output 탭에는 Snowflake에서 실행되는 명령(초록색)과 해당 명령의 표준 출력이 표시되므로 명령의 성공 또는 실패를 모니터링할 수 있습니다.

dbt 프로젝트에 대해 실행해야 하는 첫 번째 명령은 deps`입니다. 이는 프로젝트의 :file:`packages.yml 파일에 지정된 프로젝트의 종속성을 업데이트합니다. 종속성을 업데이트하지 않으면 다른 명령은 실패합니다. 자세한 내용은 dbt 종속성 섹션을 참조하십시오.

  1. 작업 공간 편집기 아래에서 Output 탭을 열면 작업 공간에서 dbt 명령을 실행한 후 표준 출력을 볼 수 있습니다.

  2. 작업 공간 편집기 위의 메뉴 모음에서 기본값 Project`(:ui:`tasty_bytes_dbt_demo)가 선택되어 있는지 확인하세요. 어느 Profile`이든 선택할 수 있습니다. 이 프로젝트에는 :file:`profiles.yml 파일에 정의된 프로필 dev``prod``가 있습니다.

  3. Profile 목록을 선택한 다음, **보조 역할 활성화**를 선택하여 이 프로젝트와 이 세션에 대한 보조 역할을 활성화합니다.

    참고

    각 Snowsight 세션 중에 각 프로젝트에 대해 dbt 명령을 실행하려면 처음에 보조 역할을 활성화해야 합니다. Enterprise Edition 계정은 특정 사용자 또는 모든 사용자에 대한 보조 역할을 허용하지 않도록 구성될 수 있습니다. 자세한 내용은 프로젝트당, 세션당 보조 역할이 필요합니다. 섹션을 참조하십시오.

  4. 명령 목록에서 :ui:`Deps`를 선택합니다.

  5. 실행 버튼 옆에 있는 아래쪽 화살표를 선택합니다.

  6. dbt Deps 윈도우에서 :ui:`Run with defaults`를 선택한 상태로 둔 다음, 제공된 공간에 설정하는 동안 만든 :ui:`External Access Integration`의 이름을 입력합니다(예: dbt_ext_access).

  7. 명령을 실행하려면 :ui:`Deps`를 선택합니다.

    Output 탭에는 Snowflake에서 실행되는 SQL 명령이 표시되며, 이는 다음과 유사합니다.

    execute dbt project from workspace "USER$"."PUBLIC"."tasty_bytes_dbt" project_root='tasty_bytes_dbt_demo' args='deps --target dev' external_access_integrations = (dbt_ext_access)
    
    Copy

    명령이 완료되면 다음과 유사한 표준 출력 메시지가 나타납니다.

    14:47:19  Running with dbt=1.8.9
    14:47:19  Updating lock file in file path: /tmp/dbt/package-lock.yml
    14:47:19  Installing dbt-labs/dbt_utils
    14:47:19  Installed from version 1.3.0
    14:47:19  Up to date!
    Uploading /tmp/dbt/package-lock.yml to snow://workspace/USER$ADMIN.PUBLIC."tasty_bytes_dbt"/versions/live/dbt//package-lock.yml
    

    package_lock.yml 파일이 생성되고 작업 공간 파일 목록에 :ui:`A`와 함께 나타납니다. 이는 파일이 다음 예와 유사한 내용으로 dbt 프로젝트의 작업 공간에 추가되었음을 나타냅니다.

    packages:
      - package: dbt-labs/dbt_utils
        version: 1.3.0
    
    Copy

dbt 프로젝트 컴파일, DAG 보기, 컴파일된 SQL 보기

dbt에서 프로젝트를 컴파일하면 모델링된 SQL 파일에서 실행 파일 SQL을 생성하고, 작업 공간의 프로젝트에 대한 방향성 비순환 그래프(DAG)의 시각적 표현을 생성합니다. dbt 프로젝트 컴파일에 대한 자세한 내용은 dbt 설명서의 컴파일 섹션을 참조하세요.

작업 공간에서 프로젝트를 컴파일한 후 DAG를 볼 수 있습니다. 또한 models 폴더의 SQL 파일을 열어 모델 SQL 및 컴파일된 SQL을 병렬 탭으로 볼 수 있습니다.

  1. 컴파일할 프로젝트와 대상을 선택합니다.

  2. 명령 목록에서 :ui:`Compile`을 선택한 다음, 실행 버튼을 선택합니다(선택 사항으로, 아래쪽 화살표를 선택하고 컴파일 명령 인자를 지정할 수 있음).

  3. 작업 공간 편집기 아래의 영역에서 DAG 탭을 선택합니다.

    DAG 창을 사용하여 소스 파일에서 Snowflake의 구체화된 데이터 모델 오브젝트로의 dbt 프로젝트 변환을 시각화할 수 있습니다.

    • 창의 아무 곳이나 클릭하고 끌어 뷰를 이동합니다.

    • + 버튼을 사용하여 확대 및 축소합니다.

  4. 편집기에서 오브젝트 소스 파일의 내용을 보려면 오브젝트의 타일을 선택합니다.

  5. 작업 공간 편집기의 분할 창 뷰에서 컴파일된 SQL을 보려면:

    1. DAG에서 dbt SQL 모델 파일의 타일을 선택합니다(예: orders).

      –OR–

      작업 공간 파일 목록에서 dbt 프로젝트의 models 하위 디렉터리에 있는 파일을 선택하여 작업 공간 편집기에서 엽니다.

    2. 분할 창 뷰에서 컴파일된 SQL을 보려면 작업 공간 편집기의 오른쪽 위에 있는 :ui:`View Compiled SQL`을 선택합니다.

dbt dev 프로젝트를 실행하고 구체화된 Snowflake 오브젝트를 확인합니다.

dbt run 명령을 실행하면 프로젝트의 profiles.yml 파일에 지정된 Snowflake 웨어하우스 및 역할을 사용하여 대상 데이터베이스 및 스키마에 대해 컴파일된 SQL이 실행됩니다. 이 단계에서는 dbt 데모 프로젝트의 Dev 대상의 출력을 구체화합니다. 그런 다음, SQL을 실행하여 오브젝트 생성을 확인할 수 있는 작업 공간에 이름이 :file:`dbt_sandbox.sql`인 SQL 워크시트를 생성합니다.

중요

작업 공간 내에서 프로젝트에 대한 dbt Run 또는 Build 명령을 선택하면 프로젝트의 profiles.yml 파일에 정의된 role``과 Snowflake 사용자의 모든 보조 역할을 모두 사용하여 대상 출력을 구체화합니다. 지정된 사용자와 역할 모두 ``warehouse``를 사용하고, 프로젝트의 :file:`profiles.yml` 파일에 지정된 ``database``schema``에 대한 작업을 수행하고, dbt 모델이 지정하는 다른 Snowflake 오브젝트에 대한 작업을 수행하는 데 필요한 권한이 있어야 합니다.

  1. Profile 목록에서 **Dev**를 선택합니다.

  2. 명령 목록에서 :ui:`Run`을 선택한 다음, 실행 버튼을 선택합니다.

    출력 창에는 실행의 완료 상태가 표시됩니다.

  3. tasty_bytes_dbt_demo 프로젝트에서 examples 폴더로 이동하고, 폴더 이름 옆에 있는 :ui:`+`를 선택한 다음, :ui:`SQL File`을 선택합니다.

  4. *dbt_sandbox.sql*을 입력한 다음, :kbd:`Enter`를 누릅니다.

  5. :file:`dbt_sandbox.sql`의 작업 공간 탭에서 다음 쿼리를 실행합니다.

    SHOW TABLES IN DATABASE tasty_bytes_dbt_db;
    
    Copy

    Status and Results 창에서 테이블 CUSTOMER_LOYALTY_METRICS, ORDERS, SALES_METRICS_BY_LOCATION이 표시되어야 합니다.

  6. dbt 프로젝트 실행으로 생성된 뷰를 보려면 다음 명령을 실행하세요.

    SHOW VIEWS IN DATABASE tasty_bytes_dbt_db;
    
    Copy

작업 공간에서 리포지토리로 파일 업데이트 푸시

이제 작업 공간을 업데이트하고 프로젝트를 dbt 프로젝트 오브젝트로 컴파일, 테스트, 실행, 배포했으므로 작업 공간에서 변경한 내용을 비공개 GitHub 리포지토리에 푸시할 수 있습니다. 이 단계는 공용 리포지토리에는 지원되지 않습니다.

  1. 작업 공간이 열린 상태에서 :ui:`Changes`를 선택합니다.

    Git 리포지토리와 동기화한 이후에 변경된 파일만 표시하도록 작업 공간 파일 목록이 필터링됩니다.

    • :ui:`A`는 Git 리포지토리가 아닌 작업 공간에 추가된 파일을 나타냅니다.

    • :ui:`M`은 수정된 파일을 나타냅니다.

    • :ui:`D`는 삭제된 파일을 나타냅니다.

  2. 파일을 선택하여 마지막 풀(이 경우, 작업 공간이 생성된 시점) 이후 GitHub와의 차이점을 확인합니다.

  3. 작업 공간 파일 목록 위의 메뉴 모음에서 이 자습서의 분기 선택기가 :ui:`main`으로 설정되어 있는지 확인합니다.

  4. Push 버튼을 선택한 다음, 제공된 상자에 커밋 메시지를 입력합니다(예: Snowflake의 dbt에서 초기 변경 사항으로 프로젝트 업데이트).

  5. Push 을 선택합니다.

    리포지토리로 푸시하는 데 몇 분 정도 걸릴 수 있습니다.

작업 공간에서 dbt 프로젝트 오브젝트 배포

작업 공간에서 dbt 프로젝트를 배포하면 dbt 프로젝트 오브젝트가 생성됩니다. 오브젝트를 사용하여 작업 공간 외부에서 Snowflake의 dbt 프로젝트를 예약, 실행, 모니터링할 수 있습니다.

작업 공간에서 Snowflake 데이터베이스 및 스키마로 dbt 프로젝트 오브젝트를 배포할 때, 이전에 생성한 오브젝트를 생성하거나 덮어쓸 수 있습니다.

  1. 작업 공간 편집기의 오른쪽에서 Connect » :ui:`Deploy dbt project`를 선택합니다.

  2. :ui:`Select database and schema`를 선택한 다음, TASTY_BYTES_DBT_DB 데이터베이스 및 DEV 스키마를 선택합니다.

  3. Select or Create dbt Object 에서 Create dbt Object 를 선택합니다.

  4. :ui:`Enter Name`에서 *TASTY_BYTES_DBT_PROJECT*를 입력한 다음, :ui:`Deploy`를 선택합니다.

    Output 탭에는 다음 예와 유사한 Snowflake에서 실행되는 명령이 표시됩니다.

    create or replace DBT PROJECT "TASTY_BYTES_DBT_DB"."DEV"."TASTY_BYTES_DBT_PROJECT" from snow://workspace/USER$MYUSER.PUBLIC."tasty_bytes_dbt_demo"/versions/live/dbt
    
    tasty_bytes_dbt_project successfully created.
    
    Copy

    이제 연결 메뉴에 생성한 dbt 프로젝트 오브젝트의 이름이 다음 옵션과 함께 표시됩니다.

    • Redeploy dbt project - ALTER를 사용하여 dbt 프로젝트 오브젝트를 프로젝트의 현재 작업 공간 버전으로 업데이트합니다. 이렇게 하면 dbt 프로젝트 오브젝트의 버전이 1씩 증분합니다. 자세한 내용은 dbt 프로젝트 오브젝트 및 파일의 버전 관리 섹션을 참조하십시오.

    • Disconnect - dbt 프로젝트 오브젝트에서 작업 공간의 연결을 끊지만, dbt 프로젝트 오브젝트를 삭제하지는 않습니다.

    • View project - 오브젝트 탐색기에서 dbt 프로젝트 오브젝트를 열어 dbt 프로젝트 오브젝트에 대한 CREATE DBT PROJECT 명령과 프로젝트에 대한 실행 기록을 볼 수 있습니다.

    • Create schedule - 일정에 따라 dbt 프로젝트 오브젝트를 실행하는 작업을 생성할 수 있는 옵션을 제공합니다. 자세한 내용은 dbt 프로젝트 실행을 예약하는 작업 만들기 섹션을 참조하십시오.

    • View schedules - 오브젝트 탐색기에서 작업 세부 정보를 보는 옵션과 함께 dbt 프로젝트 오브젝트를 실행하는 일정(작업) 목록을 엽니다.

  5. 프로젝트 생성을 확인하려면 다음 작업 중 하나 또는 둘 다를 수행합니다.

    • dbt 프로젝트의 메뉴에서 :ui:`View project`를 선택하여 오브젝트 탐색기에서 dbt 프로젝트 오브젝트를 엽니다.

      –OR–

    • 이전에 만든 dbt_sandbox.sql 파일 워크시트에서 다음 명령을 실행합니다.

      SHOW DBT PROJECTS LIKE 'tasty%';
      
      Copy

dbt 프로젝트 실행을 예약하는 작업 만들기

이제 dbt 프로젝트 오브젝트를 배포했으므로, 작업 공간 또는 SQL을 사용하여 dbt 프로젝트 오브젝트에서 dbt 명령을 실행하는 작업을 설정할 수 있습니다.

다음 단계에서는 매시 정각 1분에 dbt 프로젝트를 실행하도록 일정을 설정합니다. 이 작업은 dbt 프로젝트에서 customer_loyalty_metrics 모델을 실행하는 --select 옵션과 함께 dbt run 명령을 실행합니다.

  1. 작업 공간 편집기의 오른쪽 상단에 있는 dbt 프로젝트 메뉴에서 :ui:`Create schedule`을 선택합니다.

  2. Schedule a dbt run 대화 상자에서 다음을 수행합니다.

    • :ui:`Schedule name`에 작업의 이름을 입력합니다(예: run_prepped_data_dbt).

    • :ui:`Frequency`에서는 :ui:`Hourly`를 선택한 타임존의 :ui:`01`로 둡니다.

    • dbt properties 아래에서:

      • Operation 에서 run 을 선택합니다.

      • Profile 에서 dev 을 선택합니다.

      • Additional flags`에는 `–select customer_loyalty_metrics``를 입력합니다.

  3. Create 를 선택합니다.

    Snowflake는 이러한 매개 변수를 사용하는 EXECUTE DBT PROJECT 명령을 실행하는 작업을 생성합니다. 작업 및 작업 옵션에 대한 자세한 내용은 작업 소개CREATE TASK 섹션을 참조하세요.

  4. dbt 프로젝트 메뉴에서 :ui:`View schedules`를 선택한 다음, 목록에서 일정을 선택합니다.

    오브젝트 탐색기가 데이터베이스에 열리고, 작업에 대한 Task Details 창이 열립니다. Task Definition`은 다음과 유사한 :doc:/sql-reference/sql/create-task` 명령을 보여줍니다.

    CREATE OR REPLACE TASK tasty_bytes_dbt_db.dev.run_prepped_data_dbt
            WAREHOUSE=tasty_bytes_dbt_wh
            SCHEDULE ='USING CRON 1 * * * * America/Los_Angeles'
          AS
      EXECUTE DBT PROJECT tasty_bytes_dbt_project ARGS='run --select customer_loyalty_metrics --target dev';
    
    Copy

정리

이 자습서 이후에 정리하기 위해 생성한 데이터베이스, 작업 공간, 웨어하우스를 삭제할 수 있습니다.

dbt_sandbox.sql 워크시트에서 다음 SQL 명령을 실행하여 생성한 웨어하우스, TASTY_BYTES_DBT_DB 및 TB_101 데이터베이스, 데이터베이스에서 생성된 모든 스키마 및 오브젝트를 제거합니다.

DROP WAREHOUSE IF EXISTS tasty_bytes_dbt_wh;
DROP DATABASE IF EXISTS tasty_bytes_dbt_db;
DROP DATABASE IF EXISTS tb_101;
Copy

tasty_bytes_dbt_demo 작업 공간을 삭제하려면:

  • 작업 공간 탐색기 상단의 작업 공간 메뉴 옆에 있는 세로 줄임표 메뉴 |vertical-ellipsis|에서 :ui:`Delete`를 선택한 다음, 메시지가 표시되면 삭제를 확인합니다.