ジョブの DBT タスク

dbt タスクを使用して、Databricks で dbt プロジェクトを構成および実行します。

重要

タスクが実行される dbt 、 Databricks は [実行形式 ] フィールドで設定されたプリンシパルのDBT_ACCESS_TOKENを挿入します。

dbt タスクの設定

ジョブ UI のタスク タブからdbtタスクを追加するには、次の手順を実行します。

  1. 「タイプ」ドロップダウンメニューで、「dbt」を選択します。

  2. ソース ドロップダウンメニューで、 ワークスペース dbtを選択して、Databricks ワークスペースフォルダにあるGit プロジェクトを使用するか、リモートGit リポジトリにあるプロジェクトの プロバイダ を使用できます。

    • 「ワークスペース」を選択した場合は、用意されているファイルナビゲータを使用してプロジェクトディレクトリを選択します。

    • [Git プロバイダー] を選択した場合は、[編集] をクリックして、プロジェクト リポジトリの Git 情報を入力します。「ジョブでの Git の使用」を参照してください。

      プロジェクトがリポジトリのルート ディレクトリにない場合は、[ プロジェクト ディレクトリ ] フィールドを使用してパスを指定します。

  3. dbt コマンド テキスト ボックスは、 コマンドdbt depsdbt seed、および dbt 実行に デフォルトです。指定されたコマンドは、順番に実行されます。 ワークフローの必要に応じて、これらのフィールドを追加、削除、または編集します。 dbt コマンドとはを参照してください

  4. SQLウェアハウス で、 によって生成されたSQL を実行する ウェアハウスを選択します。SQLdbtSQLウェアハウスのドロップダウンメニューには、サーバレスとプロSQLウェアハウスのみが表示されます。

  5. ウェアハウス カタログを指定します。設定されていない場合は、ワークスペースのデフォルトが使用されます。

  6. ウェアハウス スキーマを指定します。デフォルトでは、スキーマ default が使用されます。

  7. dbt CLI コンピュートを選択して dbt Coreを実行します。Databricks では、ジョブにはサーバレス コンピュートを使用するか、single-node クラスタで構成されたクラシック ジョブ コンピュートを使用することをお勧めします。

  8. タスクの dbt-databricks バージョンを指定します。

    Serverlessコンピュートを使用する場合は、[環境とライブラリ] フィールドを使用して、新しい環境を選択、編集、または追加します。「ノートブックの依存関係のインストール」を参照してください。

    他のすべてのコンピュート設定の場合、[ Dependent Library ] フィールドは [デフォルト] で dbt-databricks>=1.0.0,<2.0.0 に設定されます。 この設定を削除し、+ PyPi ライブラリを追加してバージョンをピン留めします。

    注:

    Databricks では、 dbt タスクを特定のバージョンの dbt-databricks パッケージにピン留めして、開発と本番運用の実行に同じバージョンが使用されるようにすることをお勧めします。 Databricks では、バージョン 1.6.0 以降の dbt-databricks パッケージをお勧めします。

  9. タスクを作成」をクリックします。

dbtコマンドとは何ですか?

dbt コマンド フィールドでは、dbt コマンド ライン インターフェイス (CLI) を使用して実行するコマンドを指定できます。dbt CLI の詳細については、 dbt のドキュメントを参照してください。

指定されたバージョンの dbt でサポートされているコマンドについては、dbt のマニュアルを確認してください。

dbt コマンドにオプションを渡す

dbt ノード選択構文を使用すると、特定の実行に含めるリソースまたは除外するリソースを指定できます。 runbuild などのコマンドは、 --select--excludeなどのフラグを受け入れます。詳細な説明については、 dbt 構文の概要に関するドキュメント を参照してください。

追加の設定フラグは、dbt がプロジェクトを実行する方法を制御します。 利用可能なフラグ のリストについては、公式の dbt ドキュメントの コマンドラインオプションの 列 を参照してください。

一部のフラグは位置引数を取ります。 フラグの引数には、文字列があります。 例と説明については、dbt の資料を参照してください。

変数を dbt コマンドに渡す

--vars フラグを使用して、静的または動的な値を dbt コマンド フィールド内のコマンドに渡します。

一重引用符で区切られた JSON を --varsに渡します。 JSON 内のすべてのキーと値は、次の例のように二重引用符で区切る必要があります。

dbt run --vars '{"volume_path": "/Volumes/path/to/data", "date": "2024/08/16"}'

パラメータ化された dbt コマンドの例

dbt を処理するときには、タスク値、ジョブ・パラメーター、および動的ジョブ・パラメーターを参照できます。 値は、コマンドが実行される前に、 dbt コマンド フィールドにプレーンテキストとして置き換えられます。 タスク間での値の受け渡しやジョブ メタデータの参照に関する情報については、「 ジョブのパラメーター化」を参照してください。

これらの例では、以下のジョブ・パラメーターが構成されていることを前提としています。

パラメーター名

パラメーター value

volume_path

/Volumes/path/to/data

table_name

my_table

select_clause

--select "tag:nightly"

dbt_refresh

--full-refresh

次の例は、これらのパラメーターを参照する有効な方法を示しています。

dbt run '{"volume_path": "{{job.parameters.volume_path}}"}'
dbt run --select "{{job.parameters.table_name}}"
dbt run {{job.parameters.select_clause}}
dbt run {{job.parameters.dbt_refresh}}
dbt run '{"volume_path": "{{job.parameters.volume_path}}"}' {{job.parameters.dbt_refresh}}

次の例のように、動的パラメーターとタスク値を参照することもできます。

dbt run --vars '{"date": "{{job.start_time.iso_date}}"}'
dbt run --vars '{"sales_count": "{{tasks.sales_task.values.sales_count}}"}'