タスクからパラメーター値にアクセスする

この記事では、Databricks ノートブック、Python スクリプト、SQL ファイルなど、タスク内のコードからパラメーター値にアクセスする方法について説明します。

パラメーターには、ユーザー定義パラメーター、アップストリーム タスクからの出力値、ジョブによって生成されたメタデータ値が含まれます。 「ジョブをパラメーター化する」を参照してください。

詳細は タスクの種類によって異なりますが、ソース コードからパラメーター値を参照するために使用される 4 つの一般的なメソッドがあります。

いずれの場合も、パラメーターのキーを参照してその値にアクセスします。 キーは、パラメーターの名前と呼ばれることもあります。

SQL タスクと For each タスクを使用するメタデータ ドリブン ジョブに適用されるこれらの手法については、「 制御テーブルを使用して For each ジョブを実行する」を参照してください。

ノートブックのコードで dbutils を使用する

タスクで実行されているノートブック コードは、 dbutils ライブラリを使用してパラメーターの値にアクセスできます。 次の例は、Python で dbutils を使用して、ノートブック タスクに渡される year_param タスク パラメーターの値を取得する方法を示しています。

# Retrieve a job-level parameter
year_value = dbutils.widgets.get("year_param")

# Use the value in your code
display(babynames.filter(babynames.Year == year_value))

パラメーターには名前でアクセスします。 同じ名前のタスク パラメーターとジョブ パラメーターがある場合は、ジョブ パラメーターがフェッチされます。

上記のコードでは、パラメーターがスタンドアロン ノートブックに送信されないため、ジョブの一部としてではなく、スタンドアロン ノートブックで実行するとエラーが発生します。 次のコードを使用して、 year_param パラメーターの既定値を設定できます。

# Set a default (for when not running in a job)
dbutils.widgets.text("year_param", "2012", "Year Parameter")

# Retrieve a job-level parameter (will use default if it doesn't exist)
year_value = dbutils.widgets.get("year_param")

# Use the value in your code
display(babynames.filter(babynames.Year == year_value))

これはジョブの外部でテストする場合に役立ちますが、タスクまたはジョブのパラメーターが正しく設定されていない場合に非表示にする欠点もあります。

SQL で名前付きパラメーターを使用する

ノートブックまたはパイプライン タスクで SQL を実行している場合は、 名前付きパラメーター 構文を使用してタスク パラメーターにアクセスできます。 たとえば、 year_param というタスク パラメーターにアクセスするには、クエリで :year_param を使用して値を取得できます。

SELECT *
FROM baby_names_prepared
WHERE Year_Of_Birth = :year_param
GROUP BY First_Name

コード引数としてのアクセス

一部のタスクの種類のパラメーターは、引数としてコードに渡されます。 次のタスクの種類には、引数が渡されています。

  • Python script
  • Python Wheel
  • JAR
  • Spark Submit

詳細については、この記事で後述 するタスクの種類別の詳細を参照してください。

dbtタスクの場合、パラメーターはタスクで dbt コマンドを呼び出すことによって渡されます。

タスクの構成時に動的な値参照を使用する

Azure Databricks UI でタスクを構成する場合は、dynamic value reference 構文を使用して、ジョブ パラメーターやその他の動的な値にアクセスします。 ジョブ パラメーターにアクセスするには、構文 {{job.parameters.<name>}} を使用します。 たとえば、Python wheel タスクを構成する場合、 パラメーターの Key および Value 入力を設定して、year_paramyear / など、Year_{{job.parameters.year_param}} と呼ばれる Job パラメーターを参照できます。 動的な値は、構成内のパラメーターへのアクセスを提供するだけでなく、ジョブやタスクに関する他のデータ ( {{job.id}}など) にもアクセスできます。 タスク構成の {} をクリックすると、使用可能な動的な値の一覧を取得し、構成に挿入できます。

タスクの種類別の詳細

これらのメソッドのうちどれを使用するかは、タスクの種類によって異なります。

タスクの種類 構成でのアクセス コードでアクセスする
ノートブック Azure Databricks UI で動的値参照を使用してノートブックを構成できます (タスク パラメーター値のジョブ パラメーターを参照する場合など)。 [別の設定でジョブを実行する] オプションを使用してタスクを手動で実行する場合 は、パラメーターを オーバーライドまたは追加できます。 ノートブックで SQL の名前付きパラメーターを使用することも、コードで dbutils.widgets することもできます。
Python スクリプト タスクで定義されているパラメーターは、スクリプトに引数として渡されます。 [ パラメーター ] テキスト ボックスでは、動的な値参照を使用できます。 パラメーターは位置引数として読み取ったり、Pythonの argparse モジュールを使用して解析したりできます。
Python wheel タスク定義で定義されたパラメーターは、キーワード引数としてコードに渡されます。 Python wheel ファイルは、キーワード引数を受け入れるように構成する必要があります。 パラメーターの値には動的な値参照を使用できます。 スクリプトにキーワード引数としてアクセスします。 Python wheel ファイルにパッケージ化されたPython スクリプトの引数を読み取る例については、「 Lakeflow ジョブでPython wheel ファイルを使用する」を参照してください。
SQL タスク構成では、動的な値参照を使用できます。 名前付きパラメーターを使用してパラメーター値にアクセスします。
パイプライン (パラメーターは ベータ版) 動的な値参照を使用して、タスクを構成するときに[ パラメーター ] テキスト ボックスにパラメーターを引数として渡すことができます。 名前付きパラメーターを使用してパラメーター値にアクセスします。
ダッシュボード ダッシュボード タスクでは、タスクへのパラメーターの渡しはサポートされていません。 サポートされていません。
Power BI Power BIタスクは、タスクへのパラメーターの渡しをサポートしていません。 サポートされていません。
dbt 動的値参照を使用して、タスクの構成時にパラメーター dbt コマンドとして渡すことができます。 dbt コマンドとしてアクセスします。
ジャー 動的な値参照を使用して、タスクを構成するときに[ パラメーター ] テキスト ボックスにパラメーターを引数として渡すことができます。 パラメーターは、main クラスの main メソッドの引数としてアクセスされます。
Spark Submit(スパークサブミット) 動的な値参照を使用して、タスクを構成するときに[ パラメーター ] テキスト ボックスにパラメーターを引数として渡すことができます。 パラメーターは、main クラスの main メソッドの引数としてアクセスされます。
ジョブの実行 動的値参照を使用して、タスクを構成するときに ジョブ パラメーター のセットを作成できます。 値には動的な値参照を含めることができます。 適用されません。
If/else 条件 動的な値参照は、タスクの構成時に使用できます (条件など)。 適用されません。
それぞれに タスクの 入力 を構成するときに、動的な値参照を使用できます。 入れ子になったタスクは、入れ子になったタスクのイテレーションごとに 1 つの入力をタスク パラメーターとして受け取ります。 入れ子になったタスクは、タスクの種類に基づいてパラメーターにアクセスします。
清浄室ノートブック Azure Databricks UI で動的値参照を使用してノートブックを構成できます (タスク パラメーター値のジョブ パラメーターを参照する場合など)。 ノートブックで SQL の名前付きパラメーターを使用することも、コードで dbutils.widgets することもできます。