目标
单位需要做一个基于doris的近实时数仓,用于数据大屏。这篇文章的目的是把基于dbt和doris的离线数仓的开发流程讲清楚。那么我们先从离线数仓的标准开发流程图开始。
离线数仓开发流程
数据处理和数据血缘
从上图可以知道,实现数据处理和数据血缘的维护,可以自己写sql并自建血缘系统,也可以使用一些开源工具。
dbt
dbt的定义
dbt core的功能
dbt Core和dbt Cloud 对比
总结
使用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模型的完整流程已经完成。