本文說明如何從工作中的程式代碼存取參數值,包括 Databricks 筆記本、Python 腳本和 SQL 檔案。
參數包括使用者定義參數、上游工作輸出的值,以及作業所產生的元數據值。 請參閱參數化作業。
雖然詳細數據會因 工作類型而有所不同,但有四種常見方法可用來從原始碼參考參數值:
在這些情況下,您會引用參數的鍵來存取其值。 鍵有時被稱為參數名稱。
請在筆記本程式碼中使用dbutils
在工作中執行的筆記本程序代碼可以使用 dbutils 鏈接庫存取參數的值。 在以下範例中,展示如何在 Python 中使用 dbutils 來取得傳入筆記本任務的任務參數值 year_param。
# Retrieve a job-level parameter
year_value = dbutils.widgets.get("year_param")
# Use the value in your code
display(babynames.filter(babynames.Year == year_value))
參數依名稱存取。 如果您有具有相同名稱的工作參數和作業參數,則會擷取作業參數。
上述程式代碼會在獨立筆記本中執行,而不是當做作業的一部分執行時產生錯誤,因為參數不會傳送到獨立筆記本中。 您可以使用下列程式代碼來設定 year_param 參數的預設值:
# Set a default (for when not running in a job)
dbutils.widgets.text("year_param", "2012", "Year Parameter")
# Retrieve a job-level parameter (will use default if it doesn't exist)
year_value = dbutils.widgets.get("year_param")
# Use the value in your code
display(babynames.filter(babynames.Year == year_value))
雖然這有助於在工作之外進行測試,但它也有一個缺點,即當任務或工作參數未正確設定時,問題會被隱藏起來。
在 SQL 筆記本中使用具名參數
當您在筆記本工作中執行 SQL 時,可以使用 具名參數 語法來存取工作參數。 例如,若要存取名為year_param的工作參數,您可以在查詢中使用:year_param來取得其值。
SELECT *
FROM baby_names_prepared
WHERE Year_Of_Birth = :year_param
GROUP BY First_Name
以程式碼作為參數存取
對於某些工作類型參數,會以自變數的形式傳遞至程序代碼。 下列任務類型具有傳遞給它們的參數:
Python scriptPython WheelJARSpark Submit
如需詳細資訊,請參閱本文稍後 依工作類型的詳細數據。
針對 dbt 工作,參數會藉由呼叫工作中的 dbt 命令來傳遞。
設定工作時使用動態值參考
當您在 Azure Databricks UI 中設定工作時,請使用 動態值參考 語法來存取作業參數或其他動態值。 若要存取作業參數,請使用語法: {{job.parameters.<name>}}。 例如,設定工作 Python wheel 時,您可以設定參數的 Key 和 Value 輸入,以參考稱為 year_param的 Job 參數,例如 year / Year_{{job.parameters.year_param}}。 除了在組態中提供參數的存取,動態值也可讓您存取作業或工作的其他資料,例如 {{job.id}}。 您可以按下 {} 工作組態以取得可能的動態值清單,並將其插入您的設定中。
依工作類型的詳細數據
您使用的其中哪一種方法取決於工作類型。
| 工作類型 | 設定中的存取 | 在程式代碼中存取 |
|---|---|---|
| 筆記本 | 您可以在 Azure Databricks UI 中使用動態值參考來設定筆記本(例如,若要參考工作參數值中的作業參數)。 當您使用 使用不同設定執行作業 選項手動執行作業時,可以覆寫或新增其他參數。 | 您可以在筆記本中使用 SQL 的具名參數或在程式代碼中使用 dbutils.widgets。 |
| Python 指令碼 | 工作中定義的參數會當做自變數傳遞至您的腳本。 您可以在 [ 參數 ] 文字框中使用動態值參考。 | 參數可以讀取為位置自變數,或使用 Python 中的 argparse 模組剖析。 |
| Python Wheel | 工作定義中定義的參數會當做關鍵詞自變數傳遞至您的程序代碼。 您的 Python 轉輪檔案必須設定為接受關鍵詞自變數。 您可以在參數的值中使用動態值參考。 | 以關鍵字參數的形式存取您的腳本。 若要查看在 Python 轉輪檔案中封裝的 Python 腳本中讀取自變數的範例,請參閱 在 Lakeflow 作業中使用 Python 滾輪檔案。 |
| SQL | 您可以在工作設定中使用動態值參考。 | 使用具名參數來存取參數值。 |
| 管線 | 管線不支援將參數傳遞到任務。 | 不支援。 |
| 儀表板 | 儀錶板任務不支援將參數傳遞給任務。 | 不支援。 |
| Power BI | Power BI 工作不支援將參數傳遞至工作。 | 不支援。 |
| dbt | 您可以在設定工作時,使用動態值參考將參數當做 dbt 命令傳遞。 |
使用dbt命令進行存取。 |
| 瓶 | 您可以在設定工作時,使用動態值參考,將參數當做自變數傳遞至 [ 參數 ] 文本框中。 | 參數會當做主類別之main方法的自變數來存取。 |
| Spark 提交 | 您可以在設定工作時,使用動態值參考,將參數當做自變數傳遞至 [ 參數 ] 文本框中。 | 參數會作為傳遞給主類別中 main 方法的引數來存取。 |
| 執行作業 | 您可以在設定工作時,使用動態值參考來建立一組 作業參數 。 這些值可以包含動態值參考。 | 不適用。 |
| If/else 條件 | 您可以在設定工作時使用動態值參考,例如,在 Condition 中。 | 不適用。 |
| 針對每個 | 在設定您工作中的 輸入 時,可以使用動態值來進行參考。 巢狀工作在每次反覆執行時會接收一個輸入作為任務參數。 | 巢狀工作會根據工作類型存取參數。 |
| 乾淨的房間筆記本 | 您可以在 Azure Databricks UI 中使用動態值參考來設定筆記本(例如,若要參考工作參數值中的作業參數)。 | 您可以在筆記本中使用 SQL 的具名參數或在程式代碼中使用 dbutils.widgets。 |