连接到 dbt Core

本文介绍了什么是 dbt、如何安装 dbt Core 以及如何连接。 也可使用名为 dbt Cloud 的托管版本 dbt。 有关详细信息,请参阅连接到 dbt Cloud

什么是 dbt?

dbt(数据生成工具)是一个通过编写 select 语句来转换数据的开发环境。 dbt 可将这些 select 语句转换为表和视图。 dbt 将代码编译为原始 SQL,然后在 Azure Databricks 中指定的数据库上运行该代码。 dbt 支持协作编码模式和最佳做法,包括版本控制、文档和模块化。

dbt 不会提取或加载数据。 dbt 使用“加载后转换”体系结构,仅专注于转换步骤。 dbt 假定数据库中已有数据的副本。

dbt Core 使你能够在本地开发计算机上所选的 IDE 中编写 dbt 代码,然后从命令行运行 dbt。 dbt Core 包括 dbt 命令行接口 (CLI)。 dbt CLI 是一个免费的开放源代码工具。

dbt Core(和 dbt Cloud)可使用托管的 git 存储库。 有关详细信息,请参阅 dbt 网站上的 Creating a dbt project(创建 dbt 项目)和 Using an existing project(使用现有项目)。

安装要求

安装 dbt Core 之前,必须在本地开发计算机上安装以下工具:

  • Python 3.7 或更高版本
  • 用于创建 Python 虚拟环境的实用工具(例如 pipenv

还需要使用以下方法之一进行身份验证:

  • (推荐)dbt Core 在帐户中作为 OAuth 应用程序启用。 此项已默认启用。

  • 个人访问令牌

    注意

    使用自动化工具、系统、脚本和应用进行身份验证时,Databricks 建议 OAuth 令牌,这是一种安全最佳做法。

    如果使用个人访问令牌身份验证,Databricks 建议使用属于服务主体(而不是工作区用户)的个人访问令牌。 若要为服务主体创建令牌,请参阅管理服务主体的令牌

步骤 1:安装 dbt Databricks 适配器

建议使用 Python 虚拟环境,因为它将包版本和代码依赖项隔离到该特定环境,而不管其他环境中的包版本和代码依赖项如何。 这有助于减少意外的包版本不匹配和代码依赖项冲突。

Databricks 建议使用 dbt-databricks 包的 1.8.0 或更高版本。

重要

如果本地开发计算机使用以下任何操作系统,则必须先完成附加步骤:CentOS、MacOS、Ubuntu、Debian 和 Windows。 请参阅 dbt Labs 网站上的使用 pip 安装 dbt 中的“我的操作系统是否需要满足先决条件”部分。

步骤 2:创建 dbt 项目并指定和测试连接设置

创建一个 dbt 项目(使用 dbt 所需的相关目录和文件的集合)。 然后,配置连接配置文件,其中包含与 Azure Databricks 计算和/或 SQL 仓库的连接设置。 为了增强安全性,默认情况下 dbt 项目和配置文件存储在不同的位置。

  1. 在虚拟环境仍处于激活状态的情况下,结合项目名称运行 dbt init 命令。 此示例将创建名为 my_dbt_demo 的项目。

    dbt init my_dbt_demo
    
  2. 当系统提示选择是使用 databricks 还是 spark 数据库时,请输入对应于 databricks 的数字。

  3. 当系统提示输入 host 值时,请执行以下操作:

    • 对于计算,请从 Azure Databricks 计算的“高级选项”>“JDBC/ODB”选项卡中输入“服务器主机名”值。
    • 对于 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,请在出现提示时输入 catalog 所需的值。

  9. 出现提示时,请输入 schemathreads 的所需值。

  10. dbt 将条目写入 profiles.yml 文件。 dbt init 命令的输出中列出了此文件的位置。 以后还可通过运行 dbt debug --config-dir 命令列出此位置。 现在可以打开此文件来检查并验证其内容。

    如果选择了 use oauth 作为身份验证类型,请将计算机到计算机 (M2M) 或用户到计算机 (U2M) 身份验证配置文件添加到 profiles.yml

    Databricks 不建议直接在 profiles.yml 中指定机密, 而是将客户端 ID 和客户端密码设置为环境变量。

  11. 通过运行 dbt debug 命令(在 my_dbt_demo 目录上)来确认连接详细信息。

    如果为身份验证类型选择了 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
    

后续步骤

  • 在本地创建、运行和测试 dbt Core 模型。 请参阅 dbt Core 教程

其他资源