dbt Core에 연결

참고 항목

이 문서에서는 Azure Databricks 작업 영역 내의 Databricks SQL 웨어하우스 및 Azure Databricks 클러스터와 상호 작용하는 로컬 개발 머신용 dbt 버전인 dbt Core에 대해 설명합니다. 호스트된 버전의 dbt(dbt Cloud라고 함)를 대신 사용하거나 파트너 커넥트 사용하여 작업 영역 내에서 SQL 웨어하우스를 신속하게 만든 다음 dbt Cloud에 연결하려면 dbt Cloud에 대한 커넥트 참조하세요.

dbt(데이터 빌드 도구)는 데이터 분석가와 데이터 엔지니어가 select 문을 작성하여 데이터를 변환할 수 있도록 해 주는 개발 환경입니다. dbt는 select 문을 테이블과 뷰로 변환해 줍니다. dbt는 코드를 원시 SQL로 컴파일한 다음 Azure Databricks의 지정된 데이터베이스에서 실행합니다. dbt는 버전 제어, 문서화, 모듈화와 같은 협업 코딩 패턴과 모범 사례를 지원합니다.

dbt는 데이터를 추출하거나 로드하지 않습니다. dbt는 “로드 후 변환” 아키텍처를 사용하여 변환 단계에만 집중합니다. dbt는 데이터베이스에 데이터 복사본이 이미 있다고 가정합니다.

이 문서에서는 dbt Core의 사용법을 설명합니다. dbt Core를 사용하면 로컬 개발 컴퓨터에서 원하는 텍스트 편집기 또는 IDE로 dbt 코드를 작성한 다음 명령줄에서 dbt를 실행할 수 있습니다. dbt Core에는 dbt CLI(명령줄 인터페이스)가 포함되어 있습니다. dbt CLI는 무료이며 오픈 소스입니다.

dbt Cloud라는 호스트된 버전의 dbt도 사용할 수 있습니다. dbt Cloud는 작업 예약, CI/CD, 설명서 제공, 모니터링 및 경고, IDE(통합 개발 환경)에 대한 턴키 지원을 갖추고 있습니다. 자세한 내용은 dbt Cloud에 연결을 참조하세요. dbt Cloud Developer 플랜은 1명의 개발자가 무료로 사용할 수 있으며, 이 외에 팀 및 엔터프라이즈 유료 플랜도 있습니다. 자세한 내용은 dbt 웹 사이트에서 dbt 가격 책정을 참조하세요.

dbt Core 및 dbt Cloud는 호스트된 git 리포지토리(예: GitHub, GitLab 또는 BitBucket)를 사용할 수 있으므로 dbt Core를 사용하여 dbt 프로젝트를 만든 다음 dbt Cloud 사용자가 사용할 수 있도록 할 수 있습니다. 자세한 내용은 dbt 웹 사이트의 Creating a dbt project(dbt 프로젝트 만들기) 및 Using an existing project(기존 프로젝트 사용)를 참조하세요.

dbt에 대한 일반적인 개요는 다음 YouTube 비디오(26분)를 시청하세요.

요구 사항

dbt Core를 설치하려면 먼저 로컬 개발 머신에 다음을 설치해야 합니다.

  • Python 3.7 이상
  • Python 가상 환경을 만들기 위한 유틸리티(예: pipenv)

인증하려면 다음 중 하나가 필요합니다.

  • (권장) 계정에서 OAuth 애플리케이션으로 사용하도록 설정된 dbt Core입니다. 이 옵션은 기본적으로 사용하도록 설정되어 있습니다.

  • 개인용 액세스 토큰

    참고 항목

    자동화된 도구, 시스템, 스크립트 및 앱으로 인증할 때 보안 모범 사례로 Databricks는 OAuth 토큰을 사용하는 것이 좋습니다.

    개인 액세스 토큰 인증을 사용하는 경우 Databricks는 작업 영역 사용자 대신 서비스 주체에 속한 개인용 액세스 토큰을 사용하는 것이 좋습니다. 서비스 주체에 대한 토큰을 만들려면 서비스 주체에 대한 토큰 관리를 참조하세요.

1단계: Python 가상 환경을 만들고 활성화합니다.

이 단계에서는 Python 가상 환경을 만드는 데 사용합니다pipenv. Python 가상 환경은 다른 환경의 패키지 버전 및 코드 종속성과 관계없이 해당 환경으로 패키지 버전 및 코드 종속성을 격리하므로 Python 가상 환경을 사용할 것을 권장합니다. 이렇게 하면 예기치 않은 패키지 버전 불일치 및 코드 종속성 충돌을 줄이는 데 도움이 됩니다.

  1. 터미널에서, 필요한 경우 먼저 빈 디렉터리로 전환하여 해당 디렉터리를 만듭니다. 이 절차에서는 사용자 홈 디렉터리의 루트에 dbt_demo라는 빈 디렉터리를 만듭니다.

    Unix, linux, macos

    mkdir ~/dbt_demo
    cd ~/dbt_demo
    

    Windows

    mkdir %USERPROFILE%\dbt_demo
    cd %USERPROFILE%\dbt_demo
    
  2. 이 빈 디렉터리에서 다음 콘텐츠를 포함하는 Pipfile 파일을 만듭니다. 이 Pipfilepipenv에 Python 버전 3.8.6을 사용하도록 지시합니다. 다른 버전을 사용하는 경우 3.8.6을 원하는 버전 번호로 바꿉니다.

    [[source]]
    url = "https://pypi.org/simple"
    verify_ssl = true
    name = "pypi"
    
    [packages]
    dbt-databricks = "*"
    
    [requires]
    python_version = "3.8.6"
    

    참고 항목

    위에서 dbt-databricks = "*"pipenvdbt-databricks 패키지의 최신 버전을 사용하도록 지시합니다. 프로덕션 시나리오에서는 *을 사용하려는 패키지의 버전으로 바꿔야 합니다. Databricks는 1.6.0 이상의 dbt-databricks 패키지를 권장합니다. PyPI(Python 패키지 인덱스) 웹 사이트의 dbt-databricks Release history(dbt-databricks 릴리스 기록)를 참조하세요.

  3. pipenv를 실행하고 사용할 Python 버전을 지정하여 이 디렉터리에 Python 가상 환경을 만듭니다. 이 명령은 Python 버전 3.8.6을 지정합니다. 다른 버전을 사용하는 경우 3.8.6을 원하는 버전 번호로 바꿉니다.

    pipenv --python 3.8.6
    
  4. pipenvinstall 옵션과 함께 실행하여 dbt Databricks 어댑터를 설치합니다. 그러면 Pipfile에 PyPI의 dbt Databricks 어댑터 패키지 dbt-databricks를 포함하는 패키지가 설치됩니다. dbt Databricks 어댑터 패키지는 dbt Core 및 기타 종속성을 자동으로 설치합니다.

    Important

    로컬 개발 머신에서 CentOS, MacOS, Ubuntu, Debian, Windows 운영 체제 중 하나를 사용하는 경우 먼저 추가 단계를 완료해야 합니다. dbt Labs 웹 사이트의 Use pip to install dbt(pip를 사용하여 dbt 설치)의 “Does my operating system have prerequisites”(내 운영 체제에 사전 요구 사항이 있나요) 섹션을 참조하세요.

    pipenv install
    
  5. pipenv shell을 실행하여 가상 환경을 활성화합니다. 터미널에서 프롬프트 앞에 (dbt_demo)가 표시되면 활성화가 된 것입니다. 가상 환경이 지정된 버전의 Python을 사용하기 시작하고 이 새 환경 내의 모든 패키지 버전 및 코드 종속성을 격리합니다.

    pipenv shell
    

    참고 항목

    가상 환경을 비활성화하려면 exit을 실행합니다. 그러면 프롬프트 앞의 (dbt_demo)가 사라집니다. 이 가상 환경이 비활성화된 상태에서 python --version 또는 pip list를 실행하면 다른 버전의 Python, 사용 가능한 패키지 또는 패키지 버전의 다른 목록 또는 둘 다를 볼 수 있습니다.

  6. python--version 옵션과 함께 실행하여 가상 환경이 올바른 버전의 Python을 실행하고 있는지 확인합니다.

    python --version
    

    예기치 않은 버전의 Python이 표시된다면 pipenv shell을 실행하여 가상 환경을 활성화했는지 확인합니다.

  7. dbt--version 옵션과 함께 실행하여 가상 환경이 올바른 버전의 dbt 및 dbt Databricks 어댑터를 실행하고 있는지 확인합니다.

    dbt --version
    

    예기치 않은 버전의 dbt 또는 dbt Databricks 어댑터가 표시된다면 pipenv shell을 실행하여 가상 환경을 활성화했는지 확인합니다. 그래도 예기치 않은 버전이 표시된다면 가상 환경을 활성화한 후에 dbt 또는 dbt Databricks 어댑터를 다시 설치합니다.

2단계: dbt 프로젝트 만들기, 연결 설정 지정 및 테스트

이 단계에서는 dbt 를 사용하는 데 필요한 관련 디렉터리 및 파일의 컬렉션인 dbt 프로젝트를 만듭니다. 그런 다음, Azure Databricks 클러스터, SQL 웨어하우스 또는 둘 다에 대한 연결 설정을 포함하는 연결 프로필을 구성합니다. 보안을 강화하기 위해, dbt 프로젝트 및 프로필은 기본적으로 서로 다른 위치에 저장됩니다.

기존 클러스터 또는 SQL 웨어하우스에 연결하거나 새 클러스터 또는 SQL 웨어하우스를 만들 수 있습니다.

  • 기존 클러스터 또는 SQL 웨어하우스는 여러 dbt 프로젝트, 팀에서 dbt를 사용하는 경우 또는 개발 사용 사례에 효율적일 수 있습니다.
  • 새 클러스터 또는 SQL 웨어하우스를 사용하면 프로덕션 사용 사례를 위해 단일 dbt 프로젝트를 격리 상태로 실행할 수 있고, 자동 종료를 활용하여 dbt 프로젝트가 실행되지 않을 때 비용을 절감할 수 있습니다.

Azure Databricks를 사용하여 새 클러스터 또는 SQL 웨어하우스를 만든 다음, dbt 프로필에서 새로 만든/기존 클러스터 또는 SQL 웨어하우스를 참조합니다.

  1. 가상 환경이 활성화된 상태에서 dbt init 명령을 프로젝트의 이름과 함께 실행합니다. 이 절차에서는 my_dbt_demo라는 프로젝트를 만듭니다.

    dbt init my_dbt_demo
    
  2. 데이터베이스를 spark 선택하라는 databricks 메시지가 표시되면 해당 번호를 입력합니다databricks.

  3. 값을 묻는 메시지가 표시 host 되면 다음을 수행합니다.

    • 클러스터의 경우, Azure Databricks 클러스터에 대해 고급 옵션, JDBC/ODBC 탭의 서버 호스트 이름 값을 입력합니다.
    • SQL 웨어하우스의 경우, SQL 웨어하우스에 대해 연결 세부 정보 탭의 서버 호스트 이름 값을 입력합니다.
  4. 값을 묻는 메시지가 표시 http_path 되면 다음을 수행합니다.

    • 클러스터의 경우, Azure Databricks 클러스터에 대해 고급 옵션, JDBC/ODBC 탭의 HTTP 경로 값을 입력합니다.
    • SQL 웨어하우스의 경우, SQL 웨어하우스에 대해 연결 세부 정보 탭의 HTTP 경로 값을 입력합니다.
  5. 인증 유형을 선택하려면 (권장) 또는 use access token에 해당하는 번호를 입력합니다 use oauth .

  6. 인증 유형을 선택한 use access token 경우 Azure Databricks 개인용 액세스 토큰의 값을 입력합니다.

    참고 항목

    보안 모범 사례로, 자동화된 도구, 시스템, 스크립트 및 앱을 사용하여 인증하는 경우 Databricks는 작업 영역 사용자 대신 서비스 주체에 속한 개인용 액세스 토큰을 사용하는 것이 좋습니다. 서비스 주체에 대한 토큰을 만들려면 서비스 주체에 대한 토큰 관리를 참조하세요.

  7. desired Unity Catalog option 값에 대한 메시지가 표시되면 use Unity Catalog 또는 not use Unity Catalog에 해당하는 숫자를 입력합니다.

  8. Unity 카탈로그를 사용하는 경우에는 메시지가 표시되면 catalog에 원하는 값을 입력합니다.

  9. schemathreads를 입력하라는 메시지가 표시되면 원하는 값을 입력합니다.

  10. dbt가 profiles.yml 파일에 항목을 씁니다. 이 파일의 위치는 dbt init 명령의 출력에 나열됩니다. 나중에 dbt debug --config-dir 명령을 실행하여 이 위치를 나열할 수도 있습니다. 이제 이 파일을 열어 내용을 검사하고 확인할 수 있습니다.

    인증 유형을 선택한 use oauth 경우 M2M(컴퓨터-컴퓨터) 또는 U2M(사용자-컴퓨터) 인증 프로필을 추가합니다 profiles.yml.

    예제는 Microsoft Entra ID를 사용하여 dbt Core에서 Azure Databricks 로그온 구성을 참조하세요.

    Databricks는 비밀을 profiles.yml 직접 지정하지 않는 것이 좋습니다. 대신 클라이언트 ID 및 클라이언트 비밀을 환경 변수로 설정합니다.

  11. 디렉터리로 my_dbt_demo 트래버스하고 명령을 실행하여 연결 세부 정보가 올바른지 확인합니다 dbt debug .

    인증 유형을 선택한 use oauth 경우 ID 공급자로 로그인하라는 메시지가 표시됩니다.

    Important

    시작하기 전에 클러스터 또는 SQL 웨어하우스가 실행 중인지 확인합니다.

    다음과 비슷한 결과가 나타나야 합니다.

    cd my_dbt_demo
    dbt debug
    
    ...
    Configuration:
      profiles.yml file [OK found and valid]
      dbt_project.yml file [OK found and valid]
    
    Required dependencies:
      - git [OK found]
    
    Connection:
      ...
      Connection test: OK connection ok
    

다음 단계

  • dbt Core 모델을 로컬로 만들고 실행하고 테스트합니다. dbt Core 자습서를 참조하세요.
  • dbt Core 프로젝트를 Azure Databricks 작업 작업으로 실행합니다. Azure Databricks 작업에서 dbt 변환 사용을 참조 하세요.

추가 리소스