Panda
发布于 2025-04-08 / 19 阅读
0
0

使用dbt构建doris数仓

目标

单位需要做一个基于doris的近实时数仓,用于数据大屏。这篇文章的目的是把基于dbt和doris的离线数仓的开发流程讲清楚。那么我们先从离线数仓的标准开发流程图开始。

离线数仓开发流程

 

数据处理和数据血缘

从上图可以知道,实现数据处理和数据血缘的维护,可以自己写sql并自建血缘系统,也可以使用一些开源工具。

 

自建

开源工具

短期

开发周期长、开发成本高

部署周期端、成本低

长期

功能强大、定制开发更灵活

功能简单、定制开发困难

维护成本

使用体验

一般

 

dbt

dbt的定义

 

 

dbt core的功能

功能

描述

数据处理

针对某种数据源进行数据处理,提供统一的sql处理层。数据源比如:hive、spark、clickhouse、doris、tidb、mysql、oracle

血缘管理

通过dbt提供的统一sql处理层,dbt可以解析数据模型的依赖关系,生成血缘。

dbt Core和dbt Cloud 对比

对比维度

dbt Core

dbt Cloud

部署方式

开源本地化工具,需自行搭建和配置运行环境

基于云的托管服务,由dbt Labs 管理和维护基础设施

用户界面

主要通过命令行界面操作,学习成本相对较高

提供直观的基于 Web 的用户界面,操作门槛低

功能特性

具备数据建模、转换和管理的核心功能,支持多种数据源,有命令行界面、测试功能、文档生成等基础功能

在 dbt Core 基础上增加高级功能,如集成开发环境(IDE)、作业调度程序、更强大的监控和告警功能等

协作与集成

可与版本控制系统(如 Git)集成实现团队代码协作,与其他工具集成时配置和编写脚本的复杂度较高

提供便捷的团队协作功能,支持在同一项目中协作开发,与许多其他工具集成更轻松,能实现数据流程自动化和监控

成本

开源免费,只需承担搭建和维护基础设施成本及人力成本

付费云服务,根据使用量和功能需求有不同收费标准

数据安全性

数据安全性依赖用户自己搭建的基础设施和安全配置

dbt Labs 提供一定安全保障措施,如数据加密、访问控制、安全审计等,但用户仍需遵守相关规定和最佳实践

 

总结

 

使用dbt构建doris模型

参考:

https://doris.apache.org/zh-CN/docs/ecosystem/dbt-doris-adapter(安装和使用)

https://docs.getdbt.com/guides/bigquery?step=1(dbt使用)

https://docs.getdbt.com/reference/dbt-commands(dbt命令)

  

1. 构建dbt项目(dbt_test)

项目构建只需要执行一次,执行命令:dbt init

根据提示输入项目和数据源相关信息。

 

2. 使用dbt构建3个doris数据模型

3个模型的关系如下:

 

 

tab_order_detail

 

tab_order_detail_2

 

tab_order_detail_3

 

tab_order_detail_3_2

 

3. 执行dbt脚本,创建doris模型

两种方式:

l 直接执行所有脚本:dbt run。dbt会执行所有脚本,并按依赖关系执行。

dbt run

注:这种方式适合测试阶段。

l 执行选择的脚本:dbt run -s tab_order_detail --vars '{"my_date": "\"2025-04-07\""}'

dbt run -s tab_order_detail --vars '{"my_date": "\"2025-04-07\""}'

注:这种方式适用于与调度系统整合的场景。

结果:

doris中会生成数据模型,如下:

 

4. 生成数据血缘

执行命令:dbt docs generate

dbt docs generate

这个命令可以将项目的血缘信息写入json文件: manifest.json

 

5. 访问血缘

执行命令启动http服务:dbt docs serve --port 8001

默认端口:8080

 

3、项目版本管理

使用git管理项目

4、任务调度

可以使用开源调度系统:DolphinScheduler. 其他调度系统比如airflow也可以。

需要在dolphin环境中部署dbt,git,并定时更新项目代码。

总结

至此,使用dbt作为数据处理工具构建doris模型的完整流程已经完成。

 

 


评论