存取參數值來自你的任務程式碼,包括 Azure Databricks 筆記本、Python 腳本和 SQL 檔案。
參數包括使用者定義參數、上游工作輸出的值,以及作業所產生的元數據值。 請參閱參數化作業。
雖然詳細數據會因 工作類型而有所不同,但有四種常見方法可用來從原始碼參考參數值:
在這些情況下,你都會參考參數的鍵來取得它的值。 鍵有時被稱為參數名稱。
若想了解如何在使用SQL任務與For each任務的元資料驅動工作中應用這些技術,請參見使用控制表驅動工作For each。
請在筆記本程式碼中使用dbutils
在工作中執行的筆記本程序代碼可以使用 dbutils 鏈接庫存取參數的值。 以下範例展示了如何在 Python 中使用 dbutils 來取得傳遞到筆記本任務中的 year_param 任務參數的值。
from pyspark.sql.functions import year
# Retrieve the job-level parameter
year_value = dbutils.widgets.get("year_param")
# Use the value to filter bookings by check-in year
display(spark.read.table("samples.wanderbricks.bookings").filter(year("check_in") == year_value))
參數依名稱存取。 如果工作參數與任務參數共用鍵,則工作參數優先。 請參閱工作參數下推。
上述程式代碼會在獨立筆記本中執行,而不是當做作業的一部分執行時產生錯誤,因為參數不會傳送到獨立筆記本中。 您可以使用下列程式代碼來設定 year_param 參數的預設值:
from pyspark.sql.functions import year
# Set a default for when the notebook runs outside a job
dbutils.widgets.text("year_param", "2025", "Year Parameter")
# Retrieve the parameter, falling back to the default if it isn't set
year_value = dbutils.widgets.get("year_param")
display(spark.read.table("samples.wanderbricks.bookings").filter(year("check_in") == year_value))
雖然這有助於在工作外測試,但同時也能掩蓋錯誤設定的任務或工作參數。
在 SQL 中使用命名參數
當你在筆記本或管線任務中執行 SQL 時,可以使用 命名的參數 語法來取得任務參數。 例如,若要取得名為 year_param 的任務參數,你可以在查詢中使用 :year_param 來取得其值:
SELECT year(check_in) AS year_of_stay, count(*) AS bookings, round(avg(total_amount), 2) AS avg_amount
FROM samples.wanderbricks.bookings
WHERE year(check_in) = :year_param
GROUP BY year(check_in)
以程式碼作為參數存取
對於某些工作類型參數,會以自變數的形式傳遞至程序代碼。 下列任務類型具有傳遞給它們的參數:
Python scriptPython WheelJARSpark Submit
詳情請見本頁後面的 「依任務類型的詳情」。
針對 dbt 工作,參數會藉由呼叫工作中的 dbt 命令來傳遞。
設定工作時使用動態值參考
當你在 Azure Databricks UI 中設定任務時,請使用動態值參考語法來取得工作參數或其他動態值。 要取得工作參數,請使用語法: {{job.parameters.<name>}}。 例如,在設定 Python wheel 任務時,你可以設定參數的 Key 和 Value 輸入,來參考名為 year_param 的工作參數,例如 year / Year_{{job.parameters.year_param}}。 除了在組態中提供參數的存取,動態值也可讓您存取作業或工作的其他資料,例如 {{job.id}}。 您可以按下 {} 工作組態以取得可能的動態值清單,並將其插入您的設定中。
依工作類型的詳細數據
您使用的其中哪一種方法取決於工作類型。
| 工作類型 | 在設定中擷取 | 在程式碼中檢索 |
|---|---|---|
| 筆記本 | 你可以在 Azure Databricks UI 中使用動態值參考來設定筆記本(例如,在任務參數值中參考工作參數)。 當您使用 使用不同設定執行作業 選項手動執行作業時,可以覆寫或新增其他參數。 | 您可以在筆記本中使用 SQL 的具名參數或在程式代碼中使用 dbutils.widgets。 |
| Python 指令碼 | 工作中定義的參數會當做自變數傳遞至您的腳本。 您可以在 [ 參數 ] 文字框中使用動態值參考。 | 參數可讀取為位置參數,或使用 Python 中的 argparse 模組進行解析。 |
| Python Wheel | 工作定義中定義的參數會當做關鍵詞自變數傳遞至您的程序代碼。 你的 Python 輪盤檔案必須設定成接受關鍵字參數。 您可以在參數的值中使用動態值參考。 | 以關鍵字參數的形式存取您的腳本。 若想查看如何在 Python 彙整檔中讀取 Python 腳本中的參數,請參見 使用 Python 彙整檔於 Lakeflow Jobs 中。 |
| SQL | 您可以在工作設定中使用動態值參考。 | 使用命名參數來取得參數值。 |
| 管線 (參數仍處於 Beta 階段) | 您可以在設定工作時,使用動態值參考,將參數當做自變數傳遞至 [ 參數 ] 文本框中。 | 使用命名參數來取得參數值。 |
| 儀表板 | 你可以在任務中設定 儀表板篩選器 ,預先套用篩選器值。 如果篩選器的 URL 識別 碼與工作層級參數鍵符相符,任務會自動將該參數值套用到篩選器上。 | 不適用。 |
| Power BI | Power BI 任務不支援將參數傳給任務。 | 不支援。 |
| dbt | 您可以在設定工作時,使用動態值參考將參數當做 dbt 命令傳遞。 |
使用dbt命令進行存取。 |
| 瓶 | 您可以在設定工作時,使用動態值參考,將參數當做自變數傳遞至 [ 參數 ] 文本框中。 | 參數會當做主類別之main方法的自變數來存取。 |
| Spark 提交 | 您可以在設定工作時,使用動態值參考,將參數當做自變數傳遞至 [ 參數 ] 文本框中。 | 參數會作為傳遞給主類別中 main 方法的引數來存取。 |
| 執行作業 | 您可以在設定工作時,使用動態值參考來建立一組 作業參數 。 這些值可以包含動態值參考。 | 不適用。 |
| If/else 條件 | 您可以在設定工作時使用動態值參考,例如,在 Condition 中。 | 不適用。 |
| 針對每個 | 在設定您工作中的 輸入 時,可以使用動態值來進行參考。 巢狀工作在每次反覆執行時會接收一個輸入作為任務參數。 | 巢狀任務會根據任務類型擷取參數。 |
| 乾淨的房間筆記本 | 你可以在 Azure Databricks UI 中使用動態值參考來設定筆記本(例如,在任務參數值中參考工作參數)。 | 您可以在筆記本中使用 SQL 的具名參數或在程式代碼中使用 dbutils.widgets。 |