Databricksアセットバンドルを使用したLakeflow宣言型パイプラインの開発
Databricks アセットバンドル (単に バンドル とも呼ばれます) を使用すると、LakeFlow宣言型パイプラインなどの Databricks リソースをプログラムで検証、デプロイ、実行できます。 「Databricks アセットバンドルとは」を参照してください。
この記事では、パイプラインをプログラムで管理するためのバンドルを作成する方法について説明します。Lakeflow 宣言型パイプラインを参照してください。バンドルは、 Databricks Asset BundlesのPythonデフォルト バンドル テンプレートを使用して作成されます。このテンプレートは、ノートブックと、それを実行するパイプラインおよびジョブの定義とペアで構成されます。 次に、デプロイされたパイプラインを Databricks ワークスペースで検証、デプロイ、実行します。
Databricks ユーザー インターフェイスまたは API を使用して作成された既存のパイプラインをバンドルに移動する場合は、バンドルの構成ファイルで定義する必要があります。Databricks では、まず次の手順を使用してバンドルを作成し、次にバンドルが機能するかどうかを検証することをお勧めします。その後、追加の定義、ノートブック、およびその他のソースをバンドルに追加できます。UI を使用して既存のパイプライン定義を取得するを参照してください。
必要条件
- Databricks CLI バージョン 0.218.0 以降。 インストールされている Databricks CLI のバージョンを確認するには、コマンド 
databricks -vを実行します。 Databricks CLI をインストールするには、「 Databricks CLI のインストールまたは更新」を参照してください。 - リモートワークスペースでは、ワークスペースファイルが有効になっている必要があります。 「ワークスペースファイルとは」を参照してください。
 
(オプション)Python モジュールをインストールして、ローカル パイプライン開発をサポートします
Databricksには、IDE でコードを記述するときに構文チェック、オートコンプリート、およびデータ型チェックを提供することで、Lakeflow宣言型パイプライン コードのローカル開発を支援するPythonモジュールが用意されています。
ローカル開発用の Python モジュールは PyPi で利用できます。モジュールをインストールするには、「Python Lakeflow宣言型パイプラインの スタブ 」を参照してください。
プロジェクト テンプレートを使用したバンドルの作成
DatabricksのPythonデフォルト バンドル テンプレートを使用してバンドルを作成します。このテンプレートは、 ETL パイプライン ( Lakeflow 宣言型パイプラインを使用) を定義するノートブックで構成され、元のデータセットからデータをフィルター処理します。 バンドルテンプレートの詳細については、「Databricksアセットバンドルプロジェクトテンプレート」を参照してください。
バンドルを最初から作成する場合は、「 バンドルを手動で作成する」を参照してください。
ステップ 1: 認証を設定する
この手順では、開発用マシン上の Databricks CLI と Databricks ワークスペースの間の認証を設定します。 この記事では、OAuth ユーザーマシン (U2M) 認証と、認証に DEFAULT という名前の対応する Databricks 構成プロファイルを使用することを前提としています。
U2M 認証は、これらの手順をリアルタイムで試すのに適しています。完全に自動化されたワークフローの場合、Databricks では、代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。サービスプリンシパルアクセスをOAuthでDatabricksに許可するのM2M認証の設定手順を参照してください。
- 
Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行して、OAuth トークン管理をローカルで開始します。
次のコマンドで、
<workspace-url>を Databricks ワークスペース インスタンスの URL に置き換えます (例:https://1234567890123456.7.gcp.databricks.com.Bashdatabricks auth login --host <workspace-url> - 
Databricks CLI では、入力した情報を Databricks 構成プロファイルとして保存するように求められます。
Enterキーを押して提案されたプロファイル名を受け入れるか、新規または既存のプロファイルの名前を入力します。同じ名前の既存のプロファイルは、入力した情報で上書きされます。 プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。既存のプロファイルの一覧を取得するには、別のターミナルまたはコマンド プロンプトで、 Databricks CLI を使用してコマンド
databricks auth profilesを実行します。 特定のプロファイルの既存の設定を表示するには、databricks auth env --profile <profile-name>コマンドを実行します。 - 
Webブラウザで、画面の指示に従ってDatabricksワークスペースにログインします。
 - 
プロファイルの現在の OAuth トークン値とトークンの今後の有効期限のタイムスタンプを表示するには、次のいずれかのコマンドを実行します。
databricks auth token --host <workspace-url>databricks auth token -p <profile-name>databricks auth token --host <workspace-url> -p <profile-name>
同じ
--host値を持つプロファイルが複数ある場合、Databricks CLIが正しいOAuthトークン情報を見つけられるように--hostと-pオプションを一緒に指定する必要がある場合があります。 
ステップ 2: バンドルを作成する
デフォルトの Python バンドルプロジェクトテンプレートを使用してバンドルを初期化します。
default-python テンプレートでは、 uv がインストールされている必要があります。 uv のインストールを参照してください。
- 
ターミナルまたはコマンド プロンプトを使用して、テンプレートの生成バンドルを格納するローカル開発マシン上のディレクトリに切り替えます。
 - 
Databricks CLI を使用して、
bundle initコマンドを実行します。Bashdatabricks bundle init - 
Template to useの場合は、Enterを押してデフォルト値のdefault-pythonのままにします。 - 
[
Unique name for this project] では、デフォルト値のmy_projectをそのまま使用するか、別の値を入力してEnterキーを押します。 これにより、このバンドルのルートディレクトリの名前が決まります。 このルートディレクトリは、現在の作業ディレクトリ内に作成されます。 - 
Include a stub (sample) notebookの場合は、[no] を選択し、Enterキーを押します。これは、このオプションに関連付けられているサンプル ノートブックにはLakeflow 宣言型パイプライン コードが含まれていないため、この時点でサンプル ノートブックを追加しないようにDatabricks CLI に指示します。 - 
Include a stub (sample) Delta Live Tables pipelineの場合は、Enterを押してデフォルト値のyesのままにします。これにより、 Databricks CLI は、Lakeflow宣言型パイプライン コードを含むサンプル ノートブックを追加するように 指示されます。 - 
Include a stub (sample) Python packageの場合は、[no] を選択し、Enterキーを押します。これにより、 Databricks CLI は、サンプル Python wheel パッケージファイルや関連するビルド手順をバンドルに追加しないように指示されます。 - 
Use serverlessの場合は、[yes] を選択し、Enterキーを押します。これにより、バンドルをサーバレス コンピュートで実行するように Databricks CLI に指示します。 
ステップ 3: バンドルを探索する
テンプレートによって生成されたファイルを表示するには、新しく作成したバンドルのルートディレクトリに切り替えます。 特に関心のあるファイルには、次のものがあります。
databricks.yml: このファイルは、バンドルのプログラム名を指定し、パイプライン定義への参照を含め、ターゲット ワークスペースに関する設定を指定します。resources/<project-name>_job.ymlとresources/<project-name>_pipeline.yml:これらのファイルは、パイプライン更新タスクを含むジョブとパイプラインの設定を定義します。src/dlt_pipeline.ipynb: このファイルは、実行するとパイプラインを実行するノートブックです。
パイプラインをカスタマイズする場合、パイプライン宣言内のマッピングは、リファレンスのPOST /api/2.0/pipelines REST APIで定義されているパイプライン作成操作のリクエストペイロードに対応し、YAML 形式で表されます。
ステップ 4: プロジェクトのバンドル設定ファイルを検証する
この手順では、バンドル構成が有効かどうかを確認します。
- 
ルート ディレクトリから、Databricks CLI を使用して、次のように
bundle validateコマンドを実行します。Bashdatabricks bundle validate - 
バンドル構成のサマリーが返された場合、検証は成功しています。 エラーが返された場合は、エラーを修正し、この手順を繰り返します。
 
このステップの後にバンドルに変更を加えた場合は、この手順を繰り返して、バンドルの設定がまだ有効かどうかを確認してください。
手順 5: ローカル プロジェクトをリモート ワークスペースにデプロイする
この手順では、ローカル ノートブックをリモート Databricks ワークスペースにデプロイし、ワークスペース内にパイプラインを作成します。
- 
バンドル ルートから、Databricks CLI を使用して、次のように
bundle deployコマンドを実行します。Bashdatabricks bundle deploy -t dev - 
ローカルノートブックがデプロイされたかどうかを確認する: Databricks ワークスペースのサイドバーで、[ ワークスペース ]をクリックします。
 - 
src フォルダ> dev > files >
<project-name>> users ><your-username>> .bundle をクリックします。ノートブックはこのフォルダにある必要があります。 - 
パイプラインが作成されたかどうかを確認します。
- Databricks ワークスペースのサイドバーで、 ジョブとパイプライン をクリックします。
 - 必要に応じて、 パイプライン フィルターと 自分が所有 フィルターを選択します。
 - dev 
<your-username>]<project-name>_pipeline をクリックします。 
 
この手順の後にバンドルに変更を加えた場合は、手順 4 から 5 を繰り返して、バンドル構成がまだ有効かどうかを確認してから、プロジェクトを再デプロイする必要があります。
ステップ 6: デプロイされたプロジェクトを実行する
この手順では、コマンド ラインからワークスペース内のパイプラインの実行をトリガーします。
- 
ルート ディレクトリから、Databricks CLI を使用して次のように
bundle runコマンドを実行します。<project-name>を手順 2 のプロジェクトの名前に置き換えます。Bashdatabricks bundle run -t dev <project-name>_pipeline - 
ターミナルに表示される
Update URLの値をコピーし、この値を Web ブラウザーに貼り付けて Databricks ワークスペースを開きます。 - 
Databricks ワークスペースで、パイプラインが正常に完了したら、 taxi_raw ビューと filtered_taxis マテリアライズドビューをクリックして詳細を表示します。
 
この手順の後にバンドルに変更を加えた場合は、手順 4 から 6 を繰り返して、バンドル構成がまだ有効かどうかを確認し、プロジェクトを再デプロイして、再デプロイされたプロジェクトを実行する必要があります。
ステップ 7: クリーンアップ
この手順では、デプロイされたノートブックとパイプラインをワークスペースから削除します。
- 
ルート ディレクトリから、Databricks CLI を使用して、次のように
bundle destroyコマンドを実行します。Bashdatabricks bundle destroy -t dev - 
パイプラインの削除要求を確認する: リソースを完全に破棄するように求められたら、「
y」と入力してEnterキーを押します。 - 
ノートブックの削除要求を確認する: 以前にデプロイしたフォルダーとそのすべてのファイルを完全に破棄するように求められたら、「
y」と入力してEnterキーを押します。 - 
開発マシンからバンドルも削除する場合は、ステップ 2 からローカル ディレクトリを削除できます。