こちらで説明されているワークフローのタスクバリューを実際に試してみました。
タスクバリューとは
タスクバリュー(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が表示されます。
このように、これまで以上に表現豊かなジョブを記述できるようになるタスクバリュー、是非お試しください!
