Menggunakan nilai tugas untuk meneruskan informasi antar tugas

Nilai tugas merujuk ke subutilitas Databricks Utilities taskValues, yang memungkinkan Anda meneruskan nilai apa pun antar tugas dalam job Databricks. Lihat subutilitas taskValues (dbutils.jobs.taskValues).

Anda menentukan pasangan kunci-nilai menggunakan dbutils.jobs.taskValues.set() dalam satu tugas lalu dapat menggunakan nama tugas dan kunci untuk mereferensikan nilai dalam tugas berikutnya.

Catatan

Karena dbutils.jobs.taskValues.set() dan dbutils.jobs.taskValues.get() dalam subutilitas dbutils.jobs.taskValues adalah fungsi Python, fungsi tersebut hanya dapat digunakan di buku catatan dengan Python dipilih sebagai bahasa. Namun, Anda dapat mereferensikan nilai tugas menggunakan referensi nilai dinamis untuk semua tugas yang mendukung parameter. Lihat nilai tugas referensi.

Mengatur nilai tugas

Atur nilai tugas di buku catatan Python menggunakan dbutils.jobs.taskValues.set().

Kunci nilai tugas harus berupa string. Setiap kunci harus unik jika Anda memiliki beberapa nilai tugas yang ditentukan dalam buku catatan.

Anda dapat menetapkan nilai tugas secara manual atau terprogram ke kunci. Hanya nilai yang dapat dinyatakan sebagai JSON yang valid yang diizinkan. Ukuran representasi JSON dari nilai tidak dapat melebihi 48 KiB.

Misalnya, contoh berikut menetapkan string statis untuk kunci fave_food:

dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")

Contoh berikut menggunakan parameter tugas notebook untuk mengquery semua catatan pembaruan untuk pemesanan tertentu dan mengembalikan status pemesanan saat ini serta total jumlah catatan:

from pyspark.sql.functions import col

dbutils.widgets.text("booking_id", "51567", "Booking ID")
booking_id = dbutils.widgets.get("booking_id")

query = (spark.read.table("samples.wanderbricks.booking_updates")
  .orderBy(col("updated_at"), ascending=False)
  .where(col("booking_id") == booking_id)
  .select(col("status"))
)

dbutils.jobs.taskValues.set(key = "record_count", value = query.count())
dbutils.jobs.taskValues.set(key = "booking_status", value = query.take(1)[0][0])

Anda dapat meneruskan daftar nilai menggunakan pola ini lalu menggunakannya untuk mengoordinasikan logika hilir, seperti untuk setiap tugas. Lihat Gunakan For each tugas untuk menjalankan tugas lain dalam perulangan.

Contoh berikut mengekstrak nilai berbeda untuk ID tujuan ke daftar Python dan mengaturnya sebagai nilai tugas:

dest_list = list(spark.read.table("samples.wanderbricks.properties").select("destination_id").distinct().toPandas()["destination_id"])

dbutils.jobs.taskValues.set(key = "dest_list", value = dest_list)

Nilai acuan tugas

Databricks merekomendasikan agar merujuk ke nilai tugas dalam bentuk parameter tugas yang dikonfigurasi menggunakan pola referensi nilai dinamis {{tasks.<task_name>.values.<value_name>}}.

Misalnya, untuk mereferensikan nilai tugas dengan kunci dest_list dari tugas bernama destination_lookup, gunakan sintaks {{tasks.destination_lookup.values.dest_list}}.

Lihat Mengonfigurasi parameter tugas dan Referensi nilai dinamis.

Gunakan dbutils.jobs.taskValues.get

Sintaks dbutils.jobs.taskValues.get() mengharuskan penyebutan nama tugas upstream. Sintaks ini tidak disarankan, karena Anda dapat menggunakan nilai tugas dalam beberapa tugas hilir, yang berarti banyak pembaruan diperlukan jika nama tugas berubah.

Dengan menggunakan sintaks ini, Anda dapat secara opsional menentukan default nilai dan debugValue. Nilai default digunakan jika kunci tidak dapat ditemukan. debugValue memungkinkan Anda menetapkan nilai statis untuk digunakan selama pengembangan dan pengujian kode secara manual di notebook sebelum Anda menjadwalkan notebook sebagai tugas.

Contoh berikut mengambil nilai untuk kunci booking_status yang ditetapkan dalam nama tugas booking_lookup. Nilai confirmed dikembalikan hanya saat menjalankan buku catatan secara interaktif.

booking_status = dbutils.jobs.taskValues.get(taskKey = "booking_lookup", key = "booking_status", debugValue = "confirmed")

Catatan

Databricks tidak merekomendasikan menetapkan nilai default, karena hal ini dapat menyulitkan pemecahan masalah dan mencegah munculnya pesan kesalahan yang seharusnya tampil akibat kunci yang hilang atau nama tugas yang salah.

Menampilkan nilai tugas

Nilai yang dikembalikan dari nilai tugas untuk setiap eksekusi ditampilkan di panel Outputdari detail Eksekusi tugas. Lihat Tampilkan riwayat eksekusi tugas.