タスクからのパラメーター値へのアクセス
この記事では、タスク内のコード (Databricks ノートブック、Python スクリプト、SQL ファイルなど) からパラメーター値にアクセスする方法について説明します。
パラメーターには、ユーザー定義パラメーター、アップストリーム タスクから出力される値、およびジョブによって生成されたメタデータ値が含まれます。 ジョブのパラメータ化を参照してください。
詳細は タスクの種類によって異なりますが、ソース コードからパラメーター値を参照するために使用される一般的な方法は 4 つあります。
いずれの場合も、パラメーターのキーを参照してその値にアクセスします。 このキーは、パラメーターの名前と呼ばれることもあります。
ノートブックのコードで dbutils
を使用する
タスクで実行されているノートブック コードは、 dbutils ライブラリを使用して parameter の値にアクセスできます。 次の例は、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 コマンドを呼び出すことによって渡されます。
タスクの設定時に動的な値参照を使用する
Databricks UI でタスクを構成する場合は、 動的値参照 構文を使用して、ジョブ パラメーターまたはその他の動的値にアクセスします。ジョブ・パラメーターにアクセスするには、構文 {{job.parameters.<name>}}
を使用します。たとえば、 Python wheel
タスクを構成するときに、パラメーターの Key 入力と Value 入力を設定して、 year_param
というジョブ パラメーター ( year
/ Twitter など) を参照するように設定できます Year_{{job.parameters.year_param}}
。 動的値を使用すると、設定内のパラメーターにアクセスできるだけでなく、ジョブやタスクに関する他のデータ ( {{job.id}}
など) にもアクセスできます。タスク設定で {} をクリックすると、可能な動的値のリストを取得し、それらを設定に挿入できます。
タスクタイプ別の詳細
これらの方法のどれを使用するかは、タスクのタイプによって異なります。
タスクのタイプ | 構成でのアクセス | コードでのアクセス |
---|---|---|
Databricks UI で動的な値参照を使用して、ノートブックを構成できます (たとえば、タスク パラメーター値でジョブ パラメーターを参照します)。「異なるパラメーターでジョブを実行」オプションを使用してタスクを手動で実行する場合は、パラメーターをオーバーライドまたは追加できます。 | ノートブックで SQL の名前付きパラメーターを使用するか、コードで | |
タスクで定義されたパラメーターは、引数としてスクリプトに渡されます。 「 パラメーター 」テキスト・ボックスでは、動的な値参照を使用できます。 | パラメーターは、位置引数として読み取ることも、Pythonの argparse モジュールを使用して解析することもできます。 | |
タスク定義で定義されたパラメーターは、キーワード引数としてコードに渡されます。 Python wheel ファイルは、キーワード引数を受け入れるように構成する必要があります。パラメーターの値で動的な値参照を使用できます。 | スクリプトのキーワード引数としてアクセスします。Python wheelDatabricksファイルにパッケージ化された スクリプトで引数を読み取る例については、 ジョブでの SAP ファイルの使用を参照してくださいPython Python wheel。 | |
タスク設定では、動的な値参照を使用できます。 | 名前付きパラメーターを使用して、パラメーター値にアクセスします。 | |
パイプラインでは、タスクへのパラメーターの受け渡しはサポートされていません。 | サポートされていません。 | |
動的値参照を使用して、タスクの設定時にパラメーターを |
| |
動的値参照を使用して、タスクの構成時に パラメーター テキスト ボックスの引数としてパラメーターを渡すことができます。 | パラメーターは、メイン クラスの main メソッドの引数としてアクセスされます。 | |
動的値参照を使用して、タスクの構成時に パラメーター テキスト ボックスの引数としてパラメーターを渡すことができます。 | パラメーターは、メインクラスのmainメソッドの引数としてアクセスされます。 | |
動的値参照を使用して、タスクの設定時に 一連のジョブ・パラメーター を作成できます。値には、動的な値参照を含めることができます。 | 該当なし。 | |
動的な値参照は、タスクを構成するとき ( たとえば、条件 ) で使用できます。 | 該当なし。 | |
タスクの入力を設定するときに、動的な値参照を使用できます。ネストされたタスクは、ネストされたタスクの各反復に対してタスク パラメーターとして 1 つの入力を受け取ります。 | ネストされたタスク アクセス パラメーター (タスクの種類に基づく)。 | |
Databricks UI で動的な値参照を使用して、ノートブックを構成できます (たとえば、タスク パラメーター値でジョブ パラメーターを参照します)。 | ノートブックで SQL の名前付きパラメーターを使用するか、コードで |