dbt Core に接続する
dbtとは何か、dbt Coreのインストール方法、接続方法について説明します。 dbt Cloud と呼ばれる、ホストされたバージョンの dbt も使用できます。 詳細については、「dbt Core に接続」を参照してください。
TBS とは?
dbt(data build tool)は、select文を記述してデータを変換するための開発環境です。 dbt は、これらの select ステートメントをテーブルとビューに変換します。 dbt は、コードを生の SQL にコンパイルし、そのコードを、Azure Databricks で指定されたデータベースに対して実行します。 dbtは、バージョン管理、文書化、モジュール化など、協調的なコーディングパターンやベストプラクティスをサポートします。
dbt は、データの抽出または読み込みには使用できません。 dbt は、"読み込み後の変換" アーキテクチャを使用して、変換ステップのみに焦点を合わせています。 dbt では、データベースにデータのコピーが既に存在すると想定しています。
dbt Core を使用すると、ローカル開発マシン上の任意の IDE で dbt のコードを記述し、コマンド ラインから dbt を実行できます。 dbt Core には、dbt コマンド ライン インターフェイス (CLI) が含まれています。 dbt CLI は無料で使用できるオープンソースです。
dbt Core(および dbt Cloud)はホストされた git リポジトリを使用することができます。 詳細については、dbt の Web サイトで「Creating a dbt project」 (dbt プロジェクトの作成) と「Using an existing project」 (既存のプロジェクトの作成) を参照してください。
インストール要件
dbt Core をインストールする前に、次のものをローカルの開発用コンピューターにインストールする必要があります。
- Python 3.7 以降
- Python 仮想環境を作成するためのユーティリティ (pipenv など)
また、認証には次のいずれかが必要です。
(推奨) アカウントで OAuth アプリケーションとして有効になっている dbt コア。 この機能は、既定では有効になっています。
個人用アクセス トークン
Note
セキュリティのベスト プラクティスとして、自動化ツール、システム、スクリプト、アプリを使用して認証する場合、Databricks では、OAuth トークンを使用することを推奨しています。
個人用アクセス トークンを使用して認証する場合、Databricks では、ワークスペース ユーザーではなく、サービス プリンシパルに属する個人用アクセス トークンを使用することをお勧めします。 サービス プリンシパルのトークンを作成するには、「サービス プリンシパルのトークンを管理する」をご覧ください。
手順 1: dbt Databricks アダプターをインストールする
Python 仮想環境を使用することをお勧めします。そうすると、パッケージ バージョンとコード依存関係が、他の環境内でのパッケージ バージョンとコード依存関係に関係なく、その特定の環境に分離されるためです。 この分離により、予期しないパッケージ バージョンの不一致とコード依存関係の競合が軽減されます。
Databricks では、dbt-databricks パッケージのバージョン 1.8.0 以降をお勧めします。
.. 重要:ローカルの開発用コンピューターで CentOS、MacOS、Ubuntu、Debian、Windows のいずれかのオペレーティング システムを使用している場合は、最初に追加の手順を完了する必要があります。 dbt Labs の Web サイトで「Use pip to install dbt」 (pip を使用して dbt をインストールする) の「Does my operating system have prerequisites」 (オペレーティング システムに前提条件はありますか?) のセクションを参照してください。
手順 2: dbt プロジェクトを作成し、接続設定を指定してテストする
dbtプロジェクト(dbtを使用するために必要な関連ディレクトリとファイルのコレクション)を作成します。 次に、接続 "プロファイル" を構成します。これには、Azure Databricks コンピューティング、SQL ウェアハウス、またはその両方への接続設定が含まれています。 セキュリティを強化するために、dbt プロジェクトとプロファイルは既定で別々の場所に格納されます。
仮想環境がアクティブな状態で、プロジェクトの名前を指定して dbt init コマンドを実行します。 この例では、
my_dbt_demo
という名前のプロジェクトを作成します。dbt init my_dbt_demo
databricks
とspark
のどちらかのデータベースを選択するように求めるメッセージが表示されたら、databricks
に対応する数値を入力します。host
値の入力を求められたら、次の操作を行います。- コンピューティングの場合は、Azure Databricks コンピューティングの [詳細オプション]、[JDBC/ODBC] タブにある [サーバー ホスト名] の値を入力します。
- SQL ウェアハウスの場合は、SQL ウェアハウスの [接続の詳細] タブにある [サーバー ホスト名] の値を入力します。
http_path
値の入力を求められたら、次の操作を行います。- コンピューティングの場合は、Azure Databricks コンピューティングの [詳細オプション]、[JDBC/ODBC] タブにある [HTTP パス] の値を入力します。
- SQL ウェアハウスの場合は、SQL ウェアハウスの [接続の詳細] タブにある [HTTP パス] の値を入力します。
認証の種類を選択するために、
use oauth
(推奨) またはuse access token
に対応する数値を入力します。認証の種類として
use access token
を選択した場合は、Azure Databricks 個人用アクセス トークンの値を入力します。注意
セキュリティのベスト プラクティスとして、自動化ツール、システム、スクリプト、アプリを使用して認証する場合、Databricks では、ワークスペース ユーザーではなくサービス プリンシパルに属する個人用アクセス トークンを使用することを推奨しています。 サービス プリンシパルのトークンを作成するには、「サービス プリンシパルのトークンを管理する」をご覧ください。
desired Unity Catalog option
値の入力を求められたら、use Unity Catalog
またはnot use Unity Catalog
に対応する数値を入力します。Unity カタログの使用を選択した場合は、プロンプトが表示されたときに目的の
catalog
の値を入力します。入力を求められたら、
schema
とthreads
の値を入力します。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 とクライアント シークレットを環境変数として設定します。dbt debug
ディレクトリ上でmy_dbt_demo
コマンドを実行して、接続の詳細を確認します。認証の種類として
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
次の手順
- dbt Core モデルをローカルで作成、実行、テストします。 dbt Core のチュートリアルを参照してください。
- dbt Core プロジェクトを Azure Databricks ジョブ タスクとして実行します。 Azure Databricks ジョブでの dbt 変換の使用に関するぺージを参照してください。