作業的 dbt 工作
使用 dbt 工作在 Azure Databricks 上設定及執行 dbt 專案。
重要
當 dbt 工作執行時,Databricks 會針對在 [執行身分] 欄位中設定的主體插入 DBT_ACCESS_TOKEN
。
設定 dbt 工作
透過執行下列動作,從工作 UI 的 [任務] 索引標籤新增 dbt
任務:
在 [類型] 下拉式功能表中,選取
dbt
。在 [來源] 下拉式功能表中,選取 [工作區]以使用位於 Azure Databricks 工作區資料夾的 dbt 專案,或位於遠端 Git 存放庫中的專案 [Git 提供者]。
如果您選取 [工作區],請使用所提供的檔案瀏覽器來選取 [專案目錄]。
如果您選取 [Git 提供者],請按一下 [編輯] 以輸入專案存放庫的 Git 資訊。 請參閱搭配作業使用 Git。
如果您的專案不在存放庫的根目錄中,請使用 [專案目錄] 欄位來指定它的路徑。
[dbt 命令] 文字方塊預設為 [dbt deps]、[dbt 種子] 和 [dbt 執行] 命令。 提供的命令會依序執行。 視您的工作流程需要新增、移除或編輯這些欄位。 請參閱什麼是 dbt 命令?。
在 [SQL 倉儲]中,選取 SQL 倉儲以執行 dbt 所產生的 SQL。 [SQL 倉儲] 下拉功能表只會顯示無伺服器和 Pro SQL 倉儲。
指定 [倉儲目錄]。 如果未設定,則會使用工作區預設值。
指定 [倉儲架構]。 預設情況下會使用結構描述
default
。選擇 [dbt CLI 計算]執行 dbt Core。 Databricks 建議針對以單一節點叢集設定的作業或傳統作業計算使用無伺服器計算。
指定工作的
dbt-databricks
版本。如果您使用
Serverless
計算,請使用 [環境和程式庫] 欄位來選取、編輯或新增環境。 請參閱安裝筆記本相依性。針對所有其他計算組,[相依程式庫] 欄位預設會填入
dbt-databricks>=1.0.0,<2.0.0
。 刪除此設定和 [+ 新增] PyPi 程式庫以釘選版本。注意
Databricks 建議將您的 dbt 工作釘選到特定版本的 dbt-databricks 套件,以確保開發和生產執行使用相同的版本。 Databricks 建議 1.6.0 或更新版本的 dbt-databricks 套件。
按一下 [建立工作]。
命令是什麼?
[dbt 命令] 欄位可讓您指定要使用 dbt 命令行介面 (CLI) 執行的命令。 如需關於 dbt CLI 的完整詳細資料,請參閱 dbt 文件。
檢查 dbt 文件,以取得指定之 dbt 版本所支援的命令。
將選項傳遞至 dbt 命令
dbt 節點選取語法可讓您指定要在特定執行中包含或排除的資源。 例如 run
和 build
等命令接受旗標,包括 --select
和 --exclude
。 如需完整描述,請參閱 dbt 語法概觀文件。
其他組態旗標可控制 dbt 如何執行您的專案。 如需可用旗標清單,請參閱官方 dbt 文件中的[命令列選項]資料行。
有些旗標會採用位置引數。 旗標的某些引數是字串。 如需範例和說明,請參閱 dbt 文件。
將變數傳遞至 dbt 命令
使用 --vars
旗標將靜態或動態值傳遞至 [dbt 命令] 欄位中的命令。
您會將單引號分隔 JSON 傳遞至 --vars
。 JSON 中的所有索引鍵和值都必須以雙引號分隔,如下列範例所示:
dbt run --vars '{"volume_path": "/Volumes/path/to/data", "date": "2024/08/16"}'
參數化 dbt 命令的範例
使用 dbt 時,您可以參考工作值、作業參數和動態作業參數。 在命令執行之前,值會取代為 [dbt 命令] 欄位的純文字。 如需在工作之間傳遞值或參考作業中繼資料的相關資訊,請參閱參數化作業。
這些範例假設已設定下列作業參數:
參數名稱 | 參數值 |
---|---|
volume_path |
/Volumes/path/to/data |
table_name |
my_table |
select_clause |
--select "tag:nightly" |
dbt_refresh |
--full-refresh |
下列範例顯示參考這些參數的有效方式:
dbt run '{"volume_path": "{{job.parameters.volume_path}}"}'
dbt run --select "{{job.parameters.table_name}}"
dbt run {{job.parameters.select_clause}}
dbt run {{job.parameters.dbt_refresh}}
dbt run '{"volume_path": "{{job.parameters.volume_path}}"}' {{job.parameters.dbt_refresh}}
您也可以參考動態參數和工作值,如下列範例所示:
dbt run --vars '{"date": "{{job.start_time.iso_date}}"}'
dbt run --vars '{"sales_count": "{{tasks.sales_task.values.sales_count}}"}'