ジョブのパラメーター化
この記事では、ジョブとタスクでパラメーターを使用する方法の概要について説明します。
ジョブのパラメーターを理解するための基本的な概念を次に示します。
- ジョブ パラメーター: ジョブ レベルで定義され、タスクにプッシュダウンされるキーと値のペア。 「ジョブ パラメーターを構成する」を参照してください。
- タスク パラメーター: タスク レベルで定義されたキーと値のペアまたは JSON 配列。 「タスク パラメーターを構成する」を参照してください。
- 動的値リファレンス: ジョブ条件、メタデータ、およびパラメーターを参照するための構文。 「動的な値リファレンスとは」を参照してください。
- タスク値: タスクの実行中に生成された値をキャプチャして参照するための構文。 「タスク値を使用してタスク間で情報を渡す」を参照してください。
パラメーターでできること
次のような高度なユース ケースのジョブとタスクにパラメーターを追加します。
- 拡張可能なロジックをコード アセットに追加します。
- 実行に条件付けをします。
- 複数のタスク間で共通のパラメーターを参照します。
- 別のタスクの 1 つのタスクで生成された情報を使用します。
- ジョブ実行のメタデータと状態情報を参照します。
ジョブ パラメーターとタスク パラメーターの違い
ジョブ パラメーターは、ジョブ レベルで定義されたキーと値のペアです。 ジョブ パラメーターのデフォルトの設定をオーバーライドするには、異なるパラメーターで今すぐ実行するか REST API を使用してジョブの実行をトリガーします。 ジョブ パラメーターは、キー値パラメーターを使用するタスクにプッシュダウンされます。 その他のタスクでは、動的値参照を使用してジョブ パラメーターを参照できます。
タスク パラメーターは、タスク レベルで定義された JSON 配列のキーと値のペアです。 タスクの種類ごとに、構成されたコード アセットにタスク値が異なる方法で渡されます。 たとえば、ノートブック タスクは dbutils.widgets
サブモジュールを使用しますが、Python スクリプトは、コマンド ラインから呼び出されたかのように値を引数としてスクリプトに渡します。 ダウンストリーム タスクは、動的値リファレンスを使用してアップストリーム タスクのタスク パラメーターを参照できます。
Note
一部のタスクには専用の [パラメーター] フィールドはありませんが、他のフィールド内のタスク値または動的値リファレンスへの参照を許可します。 「パラメーター化された dbt コマンドの例」と、「If/else タスクを使用してジョブに分岐ロジックを追加する」を参照してください。
動的な値を使用してワークフローを構築する
静的な値で設定されたタスク パラメーターは、タスク定義を更新することによってのみオーバーライドできます。 ジョブ パラメーターの静的な値の設定は、既定値を構成するのみです。この既定値は、異なるパラメーターで今すぐ実行するか REST API を使用してジョブの実行をトリガーするときにオーバーライドできます。
タスク パラメーターを定義するときに動的値リファレンスを使用して、次のようなパターンを実装します。
- ジョブ パラメーターを 1 つのタスクについては
output_table
として、別のタスクについてはinput_table
として使用します。 - ノートブック クエリの出力をリストとしてキャプチャし、 For each タスクでループ処理します。
- If/else 条件タスクを使用して処理されたレコードの数に基づいてフォーク ロジックを作成します。
- その他のタスクのパラメーターを参照してください。
「動的な値リファレンスとは」を参照してください。