メインコンテンツまでスキップ

タスクからのパラメーター値へのアクセス

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

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

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

これらのいずれのケースでも、パラメーターのキーを参照することで、その値を取得します。キーは、パラメーター名と呼ばれることがあります。

SQL タスクとFor eachタスクを使用するメタデータ駆動型ジョブでこれらのテクニックを適用する方法については、 「制御テーブルを使用してFor eachジョブを駆動する」を参照してください。

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

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

Python
# 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 パラメーターのデフォルトを設定できます。

Python
# 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を使用することで値を取得できます:

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

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

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

  • Python script
  • Python Wheel
  • JAR
  • Spark Submit

詳細については、タスクタイプ別の詳細を参照してください。

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

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

Databricks UI でタスクを構成する際に、動的値参照構文を使用してジョブパラメーターまたはその他の動的な値を取得します。ジョブ・パラメーターを取得するには、{{job.parameters.<name>}}という構文を使用します。例えば、Python wheel タスクを構成する場合、パラメーターの キー の入力を、year_param と呼ばれるジョブ パラメーター、例えば year / Year_{{job.parameters.year_param}} を参照するように設定できます。構成でパラメーターにアクセスできるだけでなく、動的な値を使用すると、ジョブやタスクに関するその他のデータにもアクセスできます。たとえば、{{job.id}}です。タスク設定で {} をクリックして、使用可能な動的値のリストを取得し、設定に挿入できます。

タスクタイプ別の詳細

これらの方法のどれを使用するかは、タスクのタイプによって異なります。

タスクのタイプ

構成で取得する

コードで取得

ノートブック

Databricks UI で動的な値参照を使用して、ノートブックを構成できます (たとえば、タスク パラメーター値でジョブ パラメーターを参照します)。「異なる設定でジョブを実行」オプションを使用してタスクを手動で実行する場合は、パラメーターをオーバーライドまたは追加できます。

ノートブックで SQL の名前付きパラメーターを使用するか、コードで dbutils.widgets 使用できます。

Pythonスクリプト

タスクで定義されたパラメーターは、引数としてスクリプトに渡されます。 「 パラメーター 」テキスト・ボックスでは、動的な値参照を使用できます。

パラメーターは、位置引数として読み取ることも、Pythonの argparse モジュールを使用して解析することもできます。

Python Wheel

タスク定義で定義されたパラメーターは、キーワード引数としてコードに渡されます。 Python wheel ファイルは、キーワード引数を受け入れるように構成する必要があります。パラメーターの値で動的な値参照を使用できます。

スクリプトのキーワード引数としてアクセスします。ファイルにパッケージ化された スクリプトで引数を読み取る例については、「PythonPython wheel Python wheelジョブで ファイルを使用するLakeflow」を参照してください。

SQL

タスク設定では、動的な値参照を使用できます。

名前付きパラメーターを使用してパラメーター値を取得します。

パイプライン(パラメーターはベータ版です)

動的値参照を使用して、タスクの構成時に パラメーター テキスト ボックスの引数としてパラメーターを渡すことができます。

名前付きパラメーターを使用してパラメーター値を取得します。

dbt

動的値参照を使用して、タスクの設定時にパラメーターを dbt コマンドとして渡すことができます。

dbtコマンドとしてアクセスします。

JAR

動的値参照を使用して、タスクの構成時に パラメーター テキスト ボックスの引数としてパラメーターを渡すことができます。

パラメーターは、メイン クラスの main メソッドの引数としてアクセスされます。

Spark Submit

動的値参照を使用して、タスクの構成時に パラメーター テキスト ボックスの引数としてパラメーターを渡すことができます。

パラメーターは、メインクラスのmainメソッドの引数としてアクセスされます。

ジョブを実行

動的値参照を使用して、タスクの設定時に 一連のジョブ・パラメーター を作成できます。値には、動的な値参照を含めることができます。

該当なし。

if/else条件

動的な値参照は、タスクを構成するとき ( たとえば、条件 ) で使用できます。

該当なし。

For each

タスクの入力を設定するときに、動的な値参照を使用できます。ネストされたタスクは、ネストされたタスクの各反復に対してタスク パラメーターとして 1 つの入力を受け取ります。

入れ子になったタスクは、タスクの種類に基づいてパラメーターを取得します。