共用方式為


作業的 dbt 工作

使用 dbt 工作在 Azure Databricks 上設定及執行 dbt 專案。

重要

當 dbt 工作執行時,Databricks 會針對在 [執行身分]DBT_ACCESS_TOKEN 欄位中設定的主體插入

設定 dbt 工作

透過執行下列動作,從工作 UI 的 [任務]dbt 索引標籤新增 任務:

  1. 類型 下拉功能表中,selectdbt

  2. 在 [Source] 下拉菜單中,您可以 select工作區,針對位於遠端 Git 存放庫的專案使用位於 Azure Databricks 工作區資料夾中的 dbt 專案,或 Git 提供者

    • 如果您 select工作區域,請使用提供的檔案導覽器來 select專案目錄

    • 如果您 selectGit 提供者,請按兩下 [編輯] 以輸入專案存放庫的 Git 資訊。 請參閱搭配作業使用 Git

      如果您的專案不在存放庫的根目錄中,請使用 [專案目錄] 欄位來指定它的路徑。

  3. [dbt 命令] 文字方塊預設為 [dbt deps]、[dbt 種子] 和 [dbt 執行] 命令。 提供的命令會依序執行。 視您的工作流程需求來新增、remove或編輯這些欄位。 請參閱什麼是 dbt 命令?

  4. SQL 倉儲中,select SQL 倉儲來執行 dbt 所產生的 SQL。 [SQL 倉儲] 下拉功能表只會顯示無伺服器和 Pro SQL 倉儲。

  5. 指定 倉儲 catalog。 如果未設定,則會使用工作區預設值。

  6. 指定 倉儲 schema。 根據預設,會使用 schemadefault

  7. 選擇 [dbt CLI 計算]執行 dbt Core。 Databricks 建議針對以單一節點叢集設定的作業或傳統作業計算使用無伺服器計算。

  8. 指定工作的 dbt-databricks 版本。

    如果您使用 Serverless 計算,請使用 [環境與函式庫] 欄位來 select、編輯或新增環境。 請參閱安裝筆記本相依性

    針對所有其他計算組,[相依程式庫] 欄位預設會填入 dbt-databricks>=1.0.0,<2.0.0。 刪除此設定和 [+ 新增]PyPi 程式庫以釘選版本。

    注意

    Databricks 建議將您的 dbt 工作釘選到特定版本的 dbt-databricks 套件,以確保開發和生產執行使用相同的版本。 Databricks 建議 1.6.0 或更新版本的 dbt-databricks 套件。

  9. 按一下 [建立工作]

命令是什麼?

[dbt 命令] 欄位可讓您指定要使用 dbt 命令行介面 (CLI) 執行的命令。 如需關於 dbt CLI 的完整詳細資料,請參閱 dbt 文件

檢查 dbt 文件,以取得指定之 dbt 版本所支援的命令

將選項傳遞至 dbt 命令

dbt 節點選取語法可讓您指定要在特定執行中包含或排除的資源。 例如 runbuild 等命令接受旗標,包括 --select--exclude。 如需完整描述,請參閱 dbt 語法概觀文件

其他組態旗標可控制 dbt 如何執行您的專案。 如需可用旗標的 ,請參閱官方 dbt 檔中 命令行選項

有些旗標會採用位置引數。 旗標的某些引數是字串。 如需範例和說明,請參閱 dbt 文件。

將變數傳遞至 dbt 命令

使用 --vars 旗標,將靜態或動態 values 傳遞至 dbt 命令 字段中的命令。

您會將單引號分隔 JSON 傳遞至 --vars。 JSON 中的所有索引鍵和 values 都必須以雙引號分隔,如下列範例所示:

dbt run --vars '{"volume_path": "/Volumes/path/to/data", "date": "2024/08/16"}'

參數化 dbt 命令的範例

在使用 dbt 時,您可以參考任務 values、工作 parameters和動態工作 parameters。 在命令執行之前,Values 會被替換為純文本並放入 dbt 命令的 字段。 如需在作業之間傳遞 values 或參考作業元數據的相關資訊,請參閱 參數化作業

這些範例假設已設定下列作業 parameters:

參數名稱 參數值
volume_path /Volumes/path/to/data
table_name my_table
select_clause --select "tag:nightly"
dbt_refresh --full-refresh

下列範例顯示參考這些 parameters的有效方式:

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}}

您也可以參考動態 parameters 和任務 values,如下例所示:

dbt run --vars '{"date": "{{job.start_time.iso_date}}"}'
dbt run --vars '{"sales_count": "{{tasks.sales_task.values.sales_count}}"}'