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