ジョブにおけるdbt タスク
Databricksでdbtプロジェクトを構成して実行するには、dbtタスクを使用します。
dbtタスクが実行される と、Databricks は 実行者 フィールドで設定されたプリンシパルのDBT_ACCESS_TOKENを挿入します。
要件
[実行者] フィールドで設定されたプリンシパルは、以下を持つ必要があります:
- dbtによって生成されたSQLを実行するSQLウェアハウスで使用できます。
- dbtモデルが必要とするUnity Catalogの権限。例えば、ターゲットのカタログとスキーマに対して
USE CATALOGとUSE SCHEMA、そしてモデルが読み書きするオブジェクトに対してSELECTまたはMODIFYです。
dbtタスクを構成します。
ジョブUIの タスク タブから、次の手順を実行してdbtタスクを追加します:
-
タイプ ドロップダウンメニューで、
dbtを選択します。 -
ソース ドロップダウンメニューで、 ワークスペース 選択して、Databricks ワークスペースフォルダにあるdbtプロジェクトを使用するか、リモート リポジトリGitにあるプロジェクトの Gitプロバイダ を選択できます。
-
ワークスペース を選択した場合は、指定されたファイルナビゲーターを使用して プロジェクトディレクトリ を選択します。
-
「 Gitプロバイダー 」を選択した場合は、[ 編集 ] をクリックして、プロジェクトリポジトリのGit情報を入力します。LakeFlowジョブでGitを使用するを参照してください。
プロジェクトがリポジトリのルートディレクトリにない場合は、 「プロジェクトディレクトリ」 フィールドを使用してそのパスを指定します。
-
-
dbt コマンド テキスト ボックスは、 dbt deps 、 dbt seed 、および dbt 実行 コマンドがデフォルトです。指定されたコマンドは、順番に実行されます。 ワークフローの必要に応じて、これらのフィールドを追加、削除、または編集します。dbt コマンドを参照してください。
-
SQLウェアハウス で、dbt によって生成されたSQL を実行するSQLウェアハウスを選択します。 SQLウェアハウス のドロップダウンメニューには、サーバレスとプロSQLウェアハウスのみが表示されます。
-
ウェアハウスカタログ を指定してください。設定されていない場合、ワークスペースのデフォルトが使用されます。
-
ウェアハウススキーマ を指定します。デフォルトでは、スキーマ
defaultが使用されます。 -
dbt CLI コンピュート を選択して dbt Coreを実行します。Databricks は、単一ノード クラスターで構成されたジョブ コンピュートを使用することをお勧めします。
-
タスクの
dbt-databricksバージョンを 依存ライブラリ フィールドに指定します。デフォルトでは、 依存ライブラリ フィールドは
dbt-databricks>=1.0.0,<2.0.0に入力されます。この設定を削除し、PyPi ライブラリを 追加 してバージョンをピン留めします。
Databricksでは、開発と本番運用実行で同じバージョンが使用されることを保証するために、dbtタスクをdbt-databricksパッケージの特定のバージョンにピン留めすることをお勧めします。Databricksでは、dbt-databricksパッケージのバージョン1.6.0以降をお勧めします。
-
(オプション) 再試行、実行期間またはストリーミングバックログのしきい値、または通知を設定するには、高度なタスク設定を参照してください。
-
タスクの保存 をクリックします。
このタスクを編集、クローン、無効化、または削除するには、「Lakeflowジョブでタスクを構成および編集する」を参照してください。
dbtコマンド
dbtコマンド フィールドで、dbtコマンドラインインターフェース(CLI)を使用して実行するコマンドを指定できます。dbt CLIの詳細については、dbtドキュメントを参照してください。
指定されたバージョンの dbt でサポートされるコマンドについては、dbt ドキュメントを確認してください。
dbtコマンドにオプションを渡す
dbtノード選択構文を使用すると、特定実行に含めるまたは除外するリソースを指定できます。runやbuildなどのコマンドは、--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 コマンド フィールドに置換されます。タスク間での値の受け渡しまたはジョブのメタデータの参照に関する情報については、ジョブのパラメーター化を参照してください。
これらの例は、以下のジョブパラメーターが構成されていることを前提としています。
パラメーター名 | パラメーターの値 |
|---|---|
|
|
|
|
|
|
|
|
次の例は、これらのパラメーターを参照する有効な方法を示します。
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}}"}'
その他のリソース
- dbt タスクの実行後に出力とアーティファクトを取得する方法の例については、dbt タスクの出力とアーティファクトへのアクセスを参照してください。
- dbtが生成するSQLをデバッグするには、SQLウェアハウスのクエリ履歴を使用します。クエリ履歴を参照してください。