分享方式:


聯機到 dbt Core

注意

本文涵蓋 dbt Core,這是本機開發機器的 dbt 版本,可與 Azure Databricks 工作區內的 Databricks SQL 倉儲和 Azure Databricks 叢集互動。 若要改用裝載的 dbt 版本(稱為 dbt Cloud),或使用 Partner Connect 快速在工作區內建立 SQL 倉儲,然後將它連線到 dbt Cloud,請參閱 連線到 dbt Cloud

dbt (資料組建工具) 是一個開發環境,可讓資料分析師和資料工程師只要撰寫 select 陳述式即可轉換資料。 dbt 負責將這些 select 陳述式轉換成資料表和檢視。 dbt 會將程式碼編譯成原始 SQL,然後在 Azure Databricks 的指定資料庫中執行該程式碼。 dbt 支援共同作業編碼模式和最佳做法,例如版本控制、檔、模組化等等。

dbt 不會擷取或載入數據。 dbt 僅著重於轉換步驟,使用「載入後轉換」架構。 dbt 假設您在資料庫中已有一份資料複本。

本文著重於使用 dbt Core。 dbt Core 讓您能在本機開發電腦上,使用您選擇的文字編輯器或 IDE 撰寫 dbt 程式碼,然後從命令列執行 dbt。 dbt Core 包含 dbt 命令列介面 (CLI)。 dbt CLI 是免費的使用和 開放原始碼

您也可以使用名為 dbt Cloud 的託管 dbt 版本。 dbt Cloud 具有對排程作業、CI/CD、服務文件、監視和警示,以及整合式開發環境 (IDE)的周全支援。 如需詳細資訊,請參閱 連線到 dbt Cloud。 dbt Cloud Developer 方案提供一個免費的開發人員席位;您也可以使用Team和 Enterprise 付費方案。 如需詳細資訊,請參閱 dbt 網站上的 dbt 定價

因為 dbt Core 和 dbt Cloud 可以使用託管的 Git 存放庫(例如,在 GitHub、GitLab 或 BitBucket 上),所以您可以使用 dbt Core 來建立 dbt 專案,然後將它提供給 dbt Cloud 使用者。 如需詳細資訊,請參閱 在 dbt 網站上建立 dbt 專案 和使用 現有的專案

如需 dbt 的一般概觀,請觀看下列 YouTube 影片(26 分鐘)。

需求

安裝 dbt Core 之前,您必須在本機開發電腦上安裝下列專案:

  • Python 3.7 或更高版本
  • 用來建立 Python 虛擬環境的公用程式(例如 pipenv

您也需要下列其中一項來驗證:

  • (建議) 在您的帳戶中以 OAuth 應用程式身分啟用 dbt Core。 此功能預設為啟用。

  • 個人存取令牌

    注意

    當您使用自動化工具、系統、腳本和應用程式進行驗證時,Databricks 建議您使用 OAuth 令牌,這是安全性最佳做法。

    如果您使用個人存取令牌驗證,Databricks 建議使用屬於 服務主體 的個人存取令牌,而不是工作區使用者。 若要建立服務主體的令牌,請參閱 管理服務主體的令牌。

步驟 1:建立並啟用 Python 虛擬環境

在此步驟中,您會使用 pipenv 來建立 Python 虛擬環境。 我們建議使用 Python 虛擬環境,因為它會將套件版本和程式代碼相依性隔離至該特定環境,而不論其他環境中的套件版本和程式代碼相依性為何。 這有助於減少非預期的套件版本不符和程式代碼相依性衝突。

  1. 從終端機切換至空白目錄,必要時先建立該目錄。 此程式會在使用者主目錄的根目錄中建立名為 dbt_demo 的空白目錄。

    Unix、Linux、macOS

    mkdir ~/dbt_demo
    cd ~/dbt_demo
    

    Windows

    mkdir %USERPROFILE%\dbt_demo
    cd %USERPROFILE%\dbt_demo
    
  2. 在此空白目錄中,使用下列內容建立名為 Pipfile 的檔案。 此 Pipfilepipenv 指示使用 Python 3.8.6 版。 如果您使用不同的版本,請將 取代 3.8.6 為您的版本號碼。

    [[source]]
    url = "https://pypi.org/simple"
    verify_ssl = true
    name = "pypi"
    
    [packages]
    dbt-databricks = "*"
    
    [requires]
    python_version = "3.8.6"
    

    注意

    上一行 dbt-databricks = "*"pipenv 指示使用最新版本的 dbt-databricks 套件。 在生產案例中,您應該以您想要使用的特定套件版本取代 * 。 Databricks 建議 1.6.0 版或更新版本的 dbt-databricks 套件。 請參閱 Python 套件索引 (PyPI) 網站上的 dbt-databricks 發行歷程記錄

  3. 執行 並指定要使用的 Python 版本,在此目錄中 pipenv 建立 Python 虛擬環境。 此命令指定 Python 3.8.6 版。 如果您使用不同的版本,請將 取代 3.8.6 為您的版本號碼:

    pipenv --python 3.8.6
    
  4. 使用 選項執行 pipenvinstall 來安裝 dbt Databricks 配接器。 這會在您的 中 Pipfile安裝套件,其中包含來自 PyPI 的 dbt Databricks 配接器套件 dbt-databricks。 dbt Databricks 配接器套件會自動安裝 dbt Core 和其他相依性。

    重要

    如果您的本機開發計算機使用下列任何操作系統,您必須先完成其他步驟:CentOS、MacOS、Ubuntu、Debian 和 Windows。 請參閱使用 pip 在 dbt Labs 網站上安裝 dbt一節。

    pipenv install
    
  5. 執行 pipenv shell來啟用此虛擬環境。 若要確認啟用,終端機會顯示 (dbt_demo) 在提示之前。 虛擬環境會開始使用指定的 Python 版本,並隔離這個新環境中的所有套件版本和程式代碼相依性。

    pipenv shell
    

    注意

    若要停用此虛擬環境,請執行 exit(dbt_demo) 會在提示之前消失。 如果您執行 python --versionpip list 使用此虛擬環境停用,您可能會看到不同版本的 Python、不同的可用套件或套件版本清單,或兩者。

  6. 使用 選項執行,確認您的虛擬環境正在執行python--version預期的 Python 版本。

    python --version
    

    如果 Python 出現非預期的版本,請執行 pipenv shell,確定您已啟動虛擬環境。

  7. 使用 選項執行 dbt ,確認您的虛擬環境正在執行預期的 dbt 版本和 dbt Databricks 配接器 --version

    dbt --version
    

    如果 dbt 或 dbt Databricks 配接器顯示非預期的版本,請執行 pipenv shell,確定您已啟動虛擬環境。 如果仍然顯示非預期的版本,請嘗試在啟用虛擬環境之後,再次安裝 dbt 或 dbt Databricks 配接器。

步驟 2:建立 dbt 專案並指定及測試連線設定

在此步驟中,您會建立 dbt 專案,這是使用 dbt 所需的相關目錄和檔案集合。 接著,您可以設定連線 配置檔,其中包含 Azure Databricks 叢集SQL 倉儲或兩者的連接設定。 為了增加安全性,dbt 專案和配置文件預設會儲存在不同的位置。

提示

您可以連線到現有的叢集或 SQL 倉儲,也可以建立新的叢集。

  • 現有的叢集或 SQL 倉儲對於多個 dbt 專案、在小組中使用 dbt 或開發使用案例而言,可能更有效率。
  • 新的叢集或 SQL 倉儲可讓您針對生產使用案例隔離執行單一 dbt 專案,並利用自動終止來節省該 dbt 專案未執行時的成本。

使用 Azure Databricks 建立新的叢集或 SQL 倉儲,然後從 dbt 配置文件參考新建立或現有的叢集或 SQL 倉儲。

  1. 在虛擬環境仍啟用之後,請使用專案的名稱執行 dbt init 命令。 此程式會建立名為 my_dbt_demo的專案。

    dbt init my_dbt_demo
    
  2. 當系統提示您選擇 databricksspark 資料庫時,請輸入對應至 databricks的數位。

  3. 出現值提示 host 時,請執行下列動作:

    • 針對叢集,輸入 Azure Databricks 叢集的 [進階選項]、[JDBC/ODBC] 索引標籤中的 [伺服器主機名] 值。
    • 針對 SQL 倉儲,從 SQL 倉儲的 [連線詳細數據] 索引標籤輸入 [伺服器主機名] 值。
  4. 出現值提示 http_path 時,請執行下列動作:

    • 針對叢集,從 Azure Databricks 叢集的 [進階選項]、[JDBC/ODBC] 索引標籤輸入 HTTP 路徑值。
    • 針對 SQL 倉儲,從 SQL 倉儲的 [連線詳細數據] 索引標籤輸入 HTTP 路徑值。
  5. 若要選擇驗證類型,請輸入與 use oauth (建議) 或 use access token對應的數位。

  6. 如果您選擇 use access token 驗證類型,請輸入 Azure Databricks 個人存取令牌的值。

    注意

    作為安全性最佳做法,當您使用自動化工具、系統、腳本和應用程式進行驗證時,Databricks 建議您使用屬於 服務主體 的個人存取令牌,而不是工作區使用者。 若要建立服務主體的令牌,請參閱 管理服務主體的令牌。

  7. 出現值提示 desired Unity Catalog option 時,請輸入與 use Unity Catalognot use Unity Catalog對應的數位。

  8. 如果您選擇使用 Unity 目錄,請在出現提示時輸入所需的值 catalog

  9. 在出現提示時,輸入和 threads 的所需值schema

  10. dbt 會將專案寫入檔案 profiles.yml 。 這個檔案的位置會列在命令的 dbt init 輸出中。 您也可以稍後執行 dbt debug --config-dir 命令來列出此位置。 您現在可以開啟此檔案,以檢查並驗證其內容。

    如果您選擇 use oauth 驗證類型,請將電腦對電腦 (M2M) 或使用者對電腦 (U2M) 驗證設定檔新增至 profiles.yml

    如需範例,請參閱 使用 Microsoft Entra ID 從 dbt Core 設定 Azure Databricks 登入。

    Databricks 不建議直接在 中 profiles.yml 指定秘密。 相反地,將用戶端標識碼和客戶端密碼設定為環境變數。

  11. 藉由周遊至 my_dbt_demo 目錄並執行 dbt debug 命令,確認連線詳細數據正確無誤。

    如果您選擇 use oauth 驗證類型,系統會提示您使用您的識別提供者登入。

    重要

    開始之前,請確認叢集或 SQL 倉儲正在執行中。

    您應該會看到如下輸出:

    cd my_dbt_demo
    dbt debug
    
    ...
    Configuration:
      profiles.yml file [OK found and valid]
      dbt_project.yml file [OK found and valid]
    
    Required dependencies:
      - git [OK found]
    
    Connection:
      ...
      Connection test: OK connection ok
    

下一步

其他資源