掌握数据转换的艺术:深入解析DBT的安装

一、DBT简介

DBT官网

1.1 什么是DBT

DBT全称为"数据构建工具"(Data Build Tool),是一种用于数据转换和建模的开源工具。它主要用于处理数据仓库中的原始数据,帮助数据分析师和数据工程师将数据转换成更有用的形式,以支持业务分析和报告。

DBT的工作方式是将数据转换过程从ETL(提取、转换、加载)中分离出来,专注于转换部分。它采用SQL语言来定义转换规则,使得数据分析人员能够更直观地理解和管理数据转换逻辑。通过使用DBT,团队可以更加灵活地处理数据,快速构建和调整数据模型,以适应不断变化的业务需求。

总体而言,DBT的目标是简化数据团队的工作流程,提高数据转换的可维护性和透明度,使数据处理过程更加高效和可靠。

1.2 DBT能干什么

DBT是一个强大的工具,主要用于让数据变得更容易理解和使用。下面是DBT能干的一些事情:

  1. 数据转换: DBT可以帮助你把混乱的原始数据整理成更有用的形式。它使用SQL语言来定义数据转换规则,让你能够直观地描述数据处理逻辑。

  2. 模型构建: 使用DBT,你可以创建称为模型的东西,这是一种组织数据转换逻辑的方式。这些模型可以依赖于其他模型,帮助你构建复杂的数据转换流程。

  3. 业务分析: 通过DBT创建的模型可以用于进行业务分析。比如,你可以轻松地计算产品的月销售额、用户的活跃度等等,而无需处理复杂的数据处理步骤。

  4. 可视化和报告: DBT生成的转换数据可以直接用于可视化工具和报告中。这使得生成漂亮的图表和报告变得更加简单。

  5. 灵活性和可维护性: DBT的设计使得团队能够更灵活地处理数据,快速调整模型以适应不同的业务需求。同时,它支持版本控制,确保你能够追踪和管理数据模型的变化。

总体而言,DBT简化了数据处理的过程,使数据团队能够更轻松地构建、维护和使用数据模型,从而更好地支持业务决策和分析。

假设你有一个电商网站,每天都会记录用户的购买信息、产品信息等等。这些原始数据可能比较混乱,不方便直接用于业务分析。这时候,就需要进行数据转换,将原始数据整理成更有用的形式。

现在,假设你想要知道每个产品的月销售额。使用DBT,你可以创建一个称为模型的东西,这个模型定义了如何从原始数据中计算出每个产品的月销售额。

 -- 这是一个DBT模型的例子,使用SQL语言
 -- 我们称之为monthly_sales模型
 ​
 SELECT
   product_id,
   DATE_TRUNC('month', purchase_date) as month,
   SUM(price) as monthly_sales
 FROM
   raw_data.purchase_data
 GROUP BY
   1, 2;
 ​

这个SQL查询告诉DBT如何从原始购买数据中提取出产品ID、销售月份和销售额。DBT会执行这个查询,并生成一个新的表,其中包含了按月汇总的销售数据。

通过这种方式,DBT帮助你将数据处理过程简化成易于理解的SQL查询,而不需要处理复杂的ETL流程。这使得你可以更快速地构建和维护数据模型,从而更轻松地进行业务分析。这就是DBT的基本思想:通过使用SQL来定义数据转换逻辑,使数据处理变得更加直观和高效

二、DBT的安装

2.1 安装Python

DBT是用Python编写的,所以首先需要确保你的系统上安装了Python。你可以从Python官方网站下载并安装Python并配置环境变量。

与 npm 需要依赖 node 一样,pip 命令也需要安装 Python,关于版本这里推荐安装 3.8 3.9 即可,不要安装 3.10。我在安装了 Python 3.10 后出现了安装 MySQL 适配器和 core 包时,一直只能安装 0.19.2 的情况,而 core 最新的版本不匹配,导致包版本是对的,但是 core 与 Postgres适配器依赖包版本错误需要解决版本冲突,这点切记。

2.2 安装DBT-CORE

安装了Python,你可以使用Python的包管理工具pip来安装DBT。打开命令行终端(或者使用命令提示符),运行以下命令:

 pip install dbt-core

DBT 默认全局安装,所以即便你在某个项目路径下,它还是会基于全局安装,在安装完成之后,我们能执行如下命令检查安装是否完成。

​​​​​​​pip show dbt-core

比如我安装的就是 core 1.7.4 版本,这里就能看到安装的版本,路径等相关信息。

2.3 安装 DBT Adapters

安装DBT Adapters其实就是为DBT配置适合你使用的数据库连接方式。简单来说,这个过程就是告诉DBT如何与你的数据库进行通信。

下面是Adapters的介绍:

  1. 了解你的数据库类型: 首先,你需要知道你的数据库是什么类型,比如是PostgreSQL、Big Query、Snowflake等。这就像你要使用什么语言与朋友沟通一样,要先确定对方说的是哪种语言。

  2. 找到适合的DBT Adapter: DBT提供了各种适配器(Adapters),每个适配器专门用于与特定类型的数据库通信。就像你要和不同国家的朋友说话可能需要学习不同的语言一样,DBT也需要知道它要与哪种类型的数据库打交道。

  3. 安装适配器: 一旦你知道了数据库类型,就可以安装相应的DBT Adapter。使用pip工具来安装,就像你通过下载学习新语言的教材一样。

pip install dbt-your_database_adapter

这里的your_database_adapter是你具体数据库类型的适配器名字,比如dbt-postgresdbt-bigquery等。

总的来说,安装DBT Adapters就是为DBT配置一种与你的数据库“对话”的方式,确保它能够理解并正确地处理你的数据。这样,DBT就能更好地帮助你进行数据转换和分析了。

比如我安装的是Postgres的适配器,可以用下面这条命令:

 pip install dbt-postgres

同理,安装之后可以执行命令检查安装包的版本等信息:

 pip show dbt-postgres

2,4 总结

以上就是 dbt 两个核心的包了,我们只需要安装这两个包就能支撑接下来的所有工作,解释下两个包的作用:

  • dbt-core:开源的核心包,安装了这个你才能执行 dbt 命令。

  • 适配器包(dbt-postgres):数据库平台、数据库兼容的包,帮你抹平不同数据库的命令差异,而且接下来我们链接对应的数据库,都需要提前安装对应的适配器。

三、初始化DBT

3.1 创建DBT项目

可能到这里,大家觉得安装完适配器以及dbt core 就已经够了,然后我们在终端直接通过命令链接数据库进行操作,其实不是的。我们需要初始化一个项目,而且我们还需要在项目中编写数据模型语句,以及一些基本的配置代码。

初始化一个 dbt 项目有两种方式:

3.1.1 通过命令手动创建

 ## 你可以在你的项目目录下运行
 dbt init

之后 dbt 会帮你创建一个模版项目,假设你出现了 dbt 命令不存在的报错,那么就是你的 dbt core 包没安装好,你应该重新走上文的命令,以及通过 pip show dbt-core 来检查你的 core 版本信息。

下面是我通过IDEA命令行初始化DBT项目的过程

  1. 检查DBT环境是否在当前目录下有效

 --在目标文件夹输入
 dbt --version

如果出现下面的信息,证明环境没有问题,反之则需要重走上面的安装及配置

  1. 创建项目

--在目标文件夹输入
 dbt init

接下来会有一些配置信息需要你填写

  • 输入项目名

看到下面的输出,就可以进行下一步了

  • 选择数据库

创建成功后会显示可用数据库列表,你需要按对应的编号选择数据库

比如我的终端显示 [1]号数据库是postgres,就在Enter a number输入:1

  • 配置数据库信息

下面来解释各项配置:

  • host:数据库的host

  • port:端口号,默认为5432,可以不输入直接回车,即为默认端口号

  • user:数据库的username

  • pass:密码

  • dbname:数据库名

  • schema:schema名

  • threads:线程数

配置可以修改,下面模板项目中介绍

现在已经创建完成一个DBT项目

  • debug 测试

在终端输入以下命令

-- 进入创建好的项目,然后再输入
dbt debug

如果没有出错,并且一路OK,即测试通过

ALL checks passed! 调试通过!

3.1.2 使用官网模版项目(推荐)

除了命令,更推荐使用官网的模版项目,因为 dbt 命令除了数据做转化,还包含数据写入数据库的命令,而 init 创建的模版只是最基础的模版,不包含模拟数据,也不包含模拟的数据模型,一切从零开始还是会存在部分难度。

大家可以直接跳转 jaffle_shop,然后 git clone下载本地,之前由于我们已经安装了 core 和对应的适配器,所以我们直接可以用这个项目。

需要注意的是,我第一次使用 dbt init 初始化项目,这个命令很奇怪会在电脑根路径创建一个profiles.yml配置,而项目本身就是依赖这个配置来与数据库建立联系。

  1. 创建 profiles.yml 文件

    在项目根目录下新建profiles.yml

    将以下内容粘贴进去

    # profiles.yml
    
    jaffle_shop:
      target: dev
      outputs:
        dev:
          type: your_database_type
          host: your_database_host
          user: your_database_user
          password: your_database_password
          dbname: your_database_name
          schema: your_database_schema
      	  threads: 4  # 设置并行线程数

请将your_data、base_typeyour_data、base_host等字段替换为你实际数据库的信息。

可以看出,这其实就是命令行配置的内容,因此命令行创建项目后,也可以新建一个profiles.yml文件来更改配置信息

2. dbt debug

同样的输入dbt debug来调试,调试结果和上面一样即为成功!

  • 31
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值