こちらで説明されているワークフローのタスクバリューを実際に試してみました。
タスクバリューとは
タスクバリュー(Task value)とはジョブを構成するタスクで任意の値を設定、参照できる機能です。これまでは、ノートブック間で値をやり取りするにはノートブックワークフローを構成し、ウィジェットユーティリティ(dbutils.widgets)を使ってノートブック間で値をやり取りしていましたが、こちらはネイティブにジョブで利用できる機能となります。値のやり取りにはジョブユーティリティ(dbutils.jobs)を使用します。
ノートブックの準備
タスクバリューを設定するノートブックと、タスクバリューを取得するノートブックを作成します。dbutils.jobs.taskValues.set
でタスクバリューを設定します。key
がタスクバリューのキー、value
が設定値となります。ここでは固定値を指定していますが、通常は何かしらの処理結果になります。
dbutils.jobs.taskValues.set(key = "my-key", \
value = 5)
dbutils.jobs.taskValues.get
でタスクバリューを取得します。taskKey
がタスクバリューを取得するタスクの名称です。このタスク名は次のステップでジョブを作成する際に指定します。key
がタスクバリューのキーですが、default
とdebugValue
については説明が必要です。
task_value = dbutils.jobs.taskValues.get(taskKey = "my-task", \
key = "my-key", \
default = 7, \
debugValue = 42)
print(task_value)
default
は名前の通りデフォルト値となります。タスクバリューの取得には上述のtaskKey
とkey
で検索を行います。default
は、この組み合わせのタスクバリューが存在しない場合に設定される値となります。使い方としては、前段の処理で何かしら問題があった場合にはタスクバリューを設定せず、後段ではデフォルト値を用いるというものが考えられます。
debugValue
も名前の通り、デバッグ用の値となります。タスクバリューはジョブ実行の中で使用される機能です。一方、デバッグのためにジョブに設定されているノートブックの動作確認を行いたいというケースもあると思います。この場合、ジョブとして実行するのではなく、クラスターにノートブックを実行して動作を確認することになります。そうすると、タスクバリューの値を取得できないことになりますが、その際にdebugValue
を設定しておくことで、インタラクティブにノートブックを実行する場合でもその値を用いて後段の処理を実行することができるようになります。
上記default
の挙動を確認するためのノートブックも作成しておきます。notebook Bとの違いはkeyがmy-key2
となっているところだけです。これは前段のタスクでは設定されないキーとなります。
task_value = dbutils.jobs.taskValues.get(taskKey = "my-task", \
key = "my-key2", \
default = 7, \
debugValue = 42)
print(task_value)
ジョブの作成
上のノートブックを用いてマルチタスクのジョブを構成します。notebook Aからnotebook Bとnotebook Cそれぞれに分岐する形にしています。
ジョブの実行
ジョブの実行を行うとnotebook Aでタスクバリューが設定され、notebook Bでそのタスクバリューが参照されます。notebook Cは存在しないタスクバリューを参照します。
ジョブの実行にアクセスすると、実行結果を確認することができます。
ここで重要なのはnotebook Aが設定されているmy-taskです。ノートブック名の右に< > 1
という表示があります。これがタスクバリューが設定されていることを意味しています。
タスクmy-taskをクリックすると、右のペインに詳細が表示されます。タスクバリューmy-key
が5
に設定されていることを確認できます。
注意
画面上タスク値
という表記になっていますが、タスクバリューに修正します。
そして、設定したタスクバリューを参照しているnotebook Bのタスクをクリックすると、5
を取得できていることがわかります。
存在しないタスクバリューを参照しているnotebook Cのタスクをクリックすると、デフォルト値の7
が表示されていることがわかります。
最後に、ジョブではなくインタラクティブにタスクバリューを取得してみます。
debugValue
の42
が表示されます。
このように、これまで以上に表現豊かなジョブを記述できるようになるタスクバリュー、是非お試しください!