次の方法で共有


dbt Core に接続する

注意

この記事では、Azure Databricks ワークスペース内で Databricks SQL ウェアハウスおよび Azure Databricks クラスターとやり取りするローカル開発マシン用の dbt のバージョンである dbt Core について説明します。 代わりにホストされているバージョンの dbt (dbt Cloud と呼ばれます) を使用するか、Partner Connect を使用してワークスペース内に 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 Core に接続」を参照してください。 dbt Cloud Developer プランでは、無料の開発者シートが 1 つ提供されます。Team と Enterprise の有料プランも利用できます。 詳細については、dbt の Web サイトで dbt の価格を参照してください。

dbt Core と dbt Cloud では、ホストされた git リポジトリ (GitHub、GitLab、BitBucket など) を使用できるため、dbt Core を使用して dbt プロジェクトを作成し、それを dbt Cloud ユーザーに提供することができます。 詳細については、dbt の Web サイトで「Creating a dbt project」 (dbt プロジェクトの作成) と「Using an existing project」 (既存のプロジェクトの作成) を参照してください。

dbt の概要については、次の YouTube ビデオ (26 分) をご覧ください。

必要条件

dbt Core をインストールする前に、次のものをローカルの開発用コンピューターにインストールする必要があります。

また、認証には次のいずれかが必要です。

  • (推奨) アカウントで OAuth アプリケーションとして有効になっている dbt コア。 この機能は、既定では有効になっています。

  • 個人用アクセス トークン

    Note

    セキュリティのベスト プラクティスとして、自動化ツール、システム、スクリプト、アプリを使用して認証する場合、Databricks では、OAuth トークンを使用することを推奨しています。

    個人用アクセス トークンを使用して認証する場合、Databricks では、ワークスペース ユーザーではなく、サービス プリンシパルに属する個人用アクセス トークンを使用することをお勧めします。 サービス プリンシパルのトークンを作成するには、「サービス プリンシパルのトークンを管理する」をご覧ください。

手順 1: 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 という名前のファイルを作成します。 この Pipfile は、pipenv に 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 では、dbt-databricks パッケージのバージョン 1.6.0 以降をお勧めします。 Python Package Index (PyPI) の Web サイトにある dbt-databricks のリリース履歴を参照してください。

  3. pipenv を実行し、使用する Python のバージョンを指定して、このディレクトリに Python 仮想環境を作成します。 このコマンドは、Python バージョン 3.8.6 を指定しています。 別のバージョンを使用する場合は、3.8.6 を、使用するバージョン番号に置き換えます。

    pipenv --python 3.8.6
    
  4. install オプションを指定して pipenv を実行し、dbt Databricks アダプターをインストールします。 これにより、Pipfile に PyPI からパッケージがインストールされます。これには、Databricks アダプター パッケージ dbt-databricks が含まれます。 dbt Databricks アダプター パッケージにより、dbt Core とその他の依存関係が自動的にインストールされます。

    重要

    ローカルの開発用コンピューターで CentOS、MacOS、Ubuntu、Debian、Windows のいずれかのオペレーティング システムを使用している場合は、最初に追加の手順を完了する必要があります。 dbt Labs の Web サイトで「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 および dbt Databricks アダプターが実行されていることを確認するために、--version オプションを指定して dbt を実行します。

    dbt --version
    

    予期しないバージョンの dbt または dbt Databricks アダプターが表示された場合は、pipenv shell を実行して、仮想環境をアクティブ化済みであることを確認します。 それでも予期しないバージョンが表示される場合は、仮想環境をアクティブ化した後で、dbt または dbt Databricks アダプターをもう一度インストールしてみてください。

手順 2: dbt プロジェクトを作成し、接続設定を指定してテストする

この手順では、dbt "プロジェクト" を作成します。これは、dbt を使用するために必要な関連するディレクトリとファイルのコレクションです。 次に、接続 "プロファイル" を構成します。これには、Azure Databricks クラスターSQL ウェアハウス、またはその両方への接続設定が含まれています。 セキュリティを強化するために、dbt プロジェクトとプロファイルは既定で別々の場所に格納されます。

ヒント

既存のクラスターまたは SQL ウェアハウスに接続することも、新しいものを作成することもできます。

  • dbt プロジェクトが複数ある場合や、チームで dbt を使用する場合、または開発のユース ケースでは、既存のクラスターまたは SQL ウェアハウスが効率的です。
  • 新しいクラスターまたは SQL ウェアハウスを使用すると、運用環境のユース ケース用に 1 つの dbt プロジェクトを分離して実行できるだけでなく、自動終了を活用して、その dbt プロジェクトが実行されていないときのコストを節約できます。

Azure Databricks を使用して、新しいクラスターまたは SQL ウェアハウスを作成した後、新しく作成したか既存のクラスターまたは SQL ウェアハウスを dbt プロファイルから参照します。

  1. 仮想環境がアクティブな状態で、プロジェクトの名前を指定して dbt init コマンドを実行します。 この手順では、my_dbt_demo という名前のプロジェクトを作成します。

    dbt init my_dbt_demo
    
  2. databricksspark のどちらかのデータベースを選択するように求めるメッセージが表示されたら、databricks に対応する数値を入力します。

  3. host 値の入力を求められたら、次の操作を行います。

    • クラスターの場合は、Azure Databricks クラスターの [詳細オプション]、[JDBC/ODBC] タブにある [サーバー ホスト名] の値を入力します。
    • SQL ウェアハウスの場合は、SQL ウェアハウスの [接続の詳細] タブにある [サーバー ホスト名] の値を入力します。
  4. http_path 値の入力を求められたら、次の操作を行います。

    • クラスターの場合は、Azure Databricks クラスターの [詳細オプション]、[JDBC/ODBC] タブにある [HTTP パス] の値を入力します。
    • SQL ウェアハウスの場合は、SQL ウェアハウスの [接続の詳細] タブにある [HTTP パス] の値を入力します。
  5. 認証の種類を選択するために、use oauth (推奨) または use access token に対応する数値を入力します。

  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 プロバイダーを使用してサインインするように求められます。

    重要

    始める前に、クラスターまたは 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
    

次の手順

その他の技術情報