当 dbt 遇见 TiDB丨高效的数据转换工具让数据分析更简单

本文介绍了如何在TiDB环境中利用dbt进行数据转换和分析,包括安装dbt-tidb插件、配置项目、编写SQL模型和种子数据加载,以及dbt的特性如SQL编写、测试和文档生成。

当 dbt 遇见 TiDB

dbt (data build tool)是一款流行的开源数据转换工具,能够通过 SQL 实现数据转化,将命令转化为表或者视图,提升数据分析师的工作效率。TiDB 社区在近日推出了 dbt-tidb 插件,实现了 TiDB 和 dbt 的兼容适配。本文将通过一个简单的案例介绍如何通过 dbt 实现 TiDB 中数据的简单分析。

dbt 主要功能在于转换数据库或数据仓库中的数据,在 E(Extract)、L(Load)、T(Transform) 的流程中,仅负责转换(transform)的过程。 通过 dbt-tidb 插件,数据分析师在使用 TiDB 的过程中,能够通过 SQL 直接建立表单并匹配数据,而无需关注创建 table 或 view 的过程,并且可以直观地看到数据的流动;同时能够运用 dbt 的 Jinja 编写 SQL、测试、包管理等功能,大大提升工作效率。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xwT7Kf9P-1649816248320)(/media/when-tidb-meets-dbt/1.png)]

(图片来源:https://blog.getdbt.com/what-exactly-is-dbt/)

接下来,我将以 dbt 官方教程为例,给大家介绍下 TiDB 与 dbt 的结合使用。

本例用到的相关软件及其版本要求:

  • TiDB 5.3 或更高版本
  • dbt 1.0.1 或更高版本
  • dbt-tidb 1.0.0

安装

dbt 除了本地 CLI 工具外,还支持 dbt Cloud (目前,dbt Cloud 只支持 dbt-lab 官方维护的 adapter),其中本地 CLI 工具有多种安装方式。我们这里直接使用 pypi 安装 dbt 和 dbt-tidb 插件。

安装 dbt 和 dbt-tidb,只需要一条命令,因为 dbt 会作为依赖在安装 dbt-tidb 的时候顺便安装。

$ pip install dbt-tidb

dbt 也可自行安装,安装方式参考官方安装教程

创建项目:jaffle_shop

jaffle_shop 是 dbt-lab 提供的用于演示 dbt 功能的工程项目,你可以直接从 GitHub 上获取它。

$ git clone https://github.com/dbt-labs/jaffle_shop

$ cd jaffle_shop

这里展开 jaffle_shop 工程目录下所有文件。

  • dbt_project.yml 是 dbt 项目的配置文件,其中保存着项目名称、数据库配置文件的路径信息等。
  • models 目录下存放该项目的 SQL 模型和 table 约束,注意这部分是数据分析师自行编写的。
  • seed 目录存放 CSV 文件。此类文件可以来源于数据库导出工具,例如TiDB 可以通过 Dumpling 把 table 中的数据导出为 CSV 文件。jaffle_shop 工程中,这些 CSV 文件用来作为待处理的原始数据。

关于它们更加具体的内容,在用到上面的某个文件或目录后,我会再次进行更详细的说明。

ubuntu@ubuntu:~/jaffle_shop$ tree

.

├── dbt_project.yml

├── etc

│   ├── dbdiagram_definition.txt

│   └── jaffle_shop_erd.png

├── LICENSE

├── models

│   ├── customers.sql

│   ├── docs.md

│   ├── orders.sql

│   ├── overview.md

│   ├── schema.yml

│   └── staging

│       ├── schema.yml

│       ├── stg_customers.sql

│       ├── stg_orders.sql

│       └── stg_payments.sql

├── README.md

└── seeds

    ├── raw_customers.csv

    ├── raw_orders.csv

    └── raw_payments.csv

配置项目

  1. 全局配置

dbt 有一个默认的全局配置文件:~/.dbt/profiles.yml,我们首先在用户目录下建立该文件,并配置 TiDB 数据库的连接信息。

 $ vi ~/.dbt/profiles.yml

 jaffle_shop_tidb:                        # 工程名称

  target: dev                             # 目标

  outputs:

    dev:

      type: tidb                         # 适配器类型

      server: 127.0.0.1                  # 地址

      port: 4000                         # 端口号

      schema: analytics       
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值