Menggunakan nilai tugas untuk meneruskan informasi antar tugas
Nilai tugas mengacu pada subutilitas Utilitas taskValues
Databricks, yang memungkinkan Anda meneruskan nilai arbitrer antar tugas dalam pekerjaan 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
Subutilitas dbutils.jobs.taskValues.set()
dan dbutils.jobs.taskValues.get()
hanya tersedia di notebook Python. 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 subutilitas 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 buku catatan untuk mengkueri semua rekaman untuk nomor pesanan tertentu dan mengembalikan status pesanan saat ini dan jumlah total rekaman:
from pyspark.sql.functions import col
order_num = dbutils.widgets.get("order_num")
query = (spark.read.table("orders")
.orderBy(col("updated"), ascending=False)
.select(col("order_status"))
.where(col("order_num") == order_num)
)
dbutils.jobs.taskValues.set(key = "record_count", value = query.count())
dbutils.jobs.taskValues.set(key = "order_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 Menjalankan tugas pekerjaan Azure Databricks berparameter dalam perulangan.
Contoh berikut mengekstrak nilai yang berbeda untuk ID produk ke daftar Python dan mengaturnya sebagai nilai tugas:
prod_list = list(spark.read.table("products").select("prod_id").distinct().toPandas()["prod_id"])
dbutils.jobs.taskValues.set(key = "prod_list", value = prod_list)
Nilai tugas referensi
Databricks merekomendasikan untuk mereferensikan nilai tugas sebagai parameter tugas yang dikonfigurasi menggunakan pola {{tasks.<task_name>.values.<value_name>}}
referensi nilai dinamis .
Misalnya, untuk mereferensikan nilai tugas dengan kunci prod_list
dari tugas bernama product_inventory
, gunakan sintaks {{tasks.product_inventory.values.prod_list}}
.
Lihat Mengonfigurasi parameter tugas dan Apa itu referensi nilai dinamis?
Menggunakan dbutils.jobs.taskValues.get
Sintaks dbutils.jobs.taskValues.get()
memerlukan penentukan nama tugas upstram. 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. memungkinkan debugValue
Anda mengatur nilai statis untuk digunakan selama pengembangan dan pengujian kode manual di buku catatan sebelum Anda menjadwalkan buku catatan sebagai tugas.
Contoh berikut mendapatkan nilai untuk kunci yang order_status
ditetapkan dalam nama order_lookup
tugas . Nilai Delivered
dikembalikan hanya saat menjalankan buku catatan secara interaktif.
order_status = dbutils.jobs.taskValues.get(taskKey = "order_lookup", key = "order_status", debugValue = "Delivered")
Catatan
Databricks tidak merekomendasikan pengaturan nilai default, karena dapat menantang untuk memecahkan masalah dan mencegah pesan kesalahan yang diharapkan karena kunci yang hilang atau tugas yang salah dinamai.
Menampilkan nilai tugas
Nilai yang dikembalikan dari nilai tugas untuk setiap eksekusi ditampilkan di panel Output dari detail Eksekusi tugas. Lihat Tampilkan riwayat eksekusi tugas.