数据开发治理平台 WeData dbt

本手册面向需要在 WeData 中运行 dbt 项目的数据开发者。阅读前提:你已了解 dbt 的基本概念(model、ref、命令行用法),并在本地跑通过 dbt 项目。

相关产品
数据开发治理平台 WeData 产品页,含版本规格、价格与购买入口。

一、1. 快速上手

本章以「Git 仓库里的一个 dbt 项目,在 WeData 上定时执行」为目标,只需 5 步:

步骤 操作 预期结果
1 确认你的 dbt 项目已托管在 Git 仓库(项目根目录含 dbt_project.yml) 仓库可访问
2 在 WeData「项目管理」中注册 Git 仓库地址,并完成个人 Token 配置 Git 下拉列表中能选到该仓库
3 在编排空间新建任务,任务类型选 dbt,选择 Git 仓库、分支和项目所在文件夹 任务创建成功
4 保持默认命令(dbt deps → dbt seed → dbt run),选择 DLC 数据源和计算资源,保存并提交 任务可运行
5 点击「测试运行」,到运维中心查看日志 看到 dbt 各模型的 PASS 汇总

出错怎么办:跑不通时按顺序检查——Git 仓库选不到 → 检查个人 Token 是否已配置(见 1.2);运行失败 → 看日志区分是命令层还是 SQL 层报错。

三、2.1 环境安装要求

·新增资源组可在界面上安装 python3.9版本,系统自动安装 dbt 所需依赖包。

·已有资源组若已安装 python3.9版本,则需手动安装 dbt 所需依赖包:dbt-core、dbt-dlc、dbt-sql-python

·仅支持跑 DLC SQL,若客户需要跑其他来源任务,则需自行安装对应包。

·安装包下载地址。

·已有资源组若未安装 python3.9版本,则可在界面上安装 python3.9版本,系统自动安装 dbt 所需依赖包。

四、2.2 网络要求

使用调度资源组对应网络配置需在 DLC 资源组上配置,若有则忽略当前步骤。

查看使用调度资源组的网络信息

在 DLC 控制台找到引擎对应网络,点击详情

创建私有连接,并选择使用调度资源组的 VPC 信息。

五、2.3 dbt 项目要求

·项目为标准 dbt 项目结构:根目录有 dbt_project.yml,模型放在 models/ 目录下

·无需编写 profiles.yml:连接信息(计算资源、输出 Catalog/数据库)在任务配置中填写,平台在运行时自动生成连接配置并注入凭证,Token 不需要写在代码里

·少数高级场景需要自定义连接时,参见 5.3「自定义 profiles.yml」

六、2.4 Git 仓库与个人 Token

dbt 任务的代码来自 Git 仓库(本期仅支持 Git 来源,Studio 文件目录来源暂未开放):

1. dbt 项目代码托管在 Git 仓库(支持 HTTPS/SSH)

2. 在 WeData「项目管理」中注册该 Git 仓库地址

3. 完成个人 Token 配置——未配置 Token 时,新建任务时 Git 仓库下拉不可选,鼠标悬停会提示「请先完成个人 Token 配置」,点击可跳转配置页

七、2.5 权限清单

dbt 任务使用工作流的「运行账号」执行,该账号需要具备:

权限 说明
DLC 计算资源使用权限 任务选中的数据源、计算引擎、资源组
目标 Catalog / 数据库使用权限 模型建表输出的位置
模型涉及对象的读写权限 模型读取的源表(SELECT)和产出的表(写入)

权限通过 WeData 现有权限体系统一申请管理,任务执行前请确认运行账号已具备以上权限。

九、3.1 新建任务

入口与通用任务类型一致:目录树右键新建,或在工作流 DAG 图中添加节点。任务类型选择 dbt(位于 JDBC SQL 之后),其余(所属工作流、任务名称、目录)同常规任务。

dbt 任务可以放在 for-each 节点内部、分支节点下游、归并节点上游,用法与其他任务节点相同。

十、3.2 代码来源(Git)

配置项 填写说明
Git 仓库地址 下拉选择已在「项目管理」中注册的 Git 仓库;未配置个人 Token 时该选项禁用
分支 选择 Git 仓库后可选,默认为该仓库在项目管理中配置的默认分支,可修改
文件路径 选择仓库和分支后,选择 dbt 项目所在的文件夹(下拉只展示到文件夹层级,支持按名称搜索)

十一、3.3 dbt 命令

命令列表,必填。默认三条,按顺序执行:

dbt deps # 拉取 dbt_project.yml 中声明的包依赖dbt seed # 载入 seeds/ 目录下的 CSV 种子数据dbt run # 按依赖顺序执行 models/ 下的模型

·最多 10 条命令,按列表顺序执行;常用命令还有 dbt test(数据质量校验)、dbt snapshot、dbt docs generate

·命令支持 dbt 原生参数,如 –select、–exclude、–vars

·命令中可以引用 WeData 参数(工作流参数、任务参数、上游传递参数、调度时间参数),写法见 5.1

十二、3.4 连接配置(系统内置 profile)

profile 定义方式保持默认的「系统内置」即可,按下面逐项填写。每一项的含义:

配置项 必填 填写说明
引擎类型 是 固定选择 DLC(本期仅支持 DLC 引擎)
DLC 数据源 是 选择数据源管理中已注册的 DLC 数据源;可选范围与创建 DLC SQL 任务时一致
DLC 数据引擎 是 选择该数据源下的 DLC 计算引擎,标准引擎为 Spark;可选范围与创建 DLC SQL 任务时一致
DLC 资源组 是 执行 SQL 分析使用的资源组
输出 Catalog 否 dbt 模型建表输出的 Catalog;不填默认 DataLakeCatalog
输出数据库 否 dbt 模型建表输出的数据库;不填默认 default

十三、3.5 其他任务配置

·调度资源组、任务属性、调度设置、依赖配置:与现有任务类型的配置方式一致

·产出登记:引擎选择 DLC 时支持登记 DLC 表;选择自定义 profile 时不展示

·参数传递:dbt 任务当前不支持向下游任务传递参数(该选项置灰);支持引用父任务/上游参数

·版本管理:支持版本管理与回滚,配置变更记录在版本中

十五、4.1 测试运行

单击测试运行,平台会完成整个执行流程:拉取 Git 代码 → 准备运行环境(平台预装 dbt 及 DLC 适配器,无需安装)→ 自动注入运行账号凭证 → 按顺序执行命令列表。

测试运行的结果页直接展示 dbt 日志,支持搜索、下载日志;选择 DLC 引擎时提供「DLC 跳转」入口(下接下拉选择,因为一次 dbt 运行对应多段 SQL 执行),可跳转查看每段 SQL 在引擎上的执行详情。

十六、4.2 提交调度运行

单击提交任务后,任务可随调度配置进行周期调度执行。可在运维中心查看运行状态和详情。

十八、5.1 运行日志(两层视角)

日志 在哪看 内容
dbt 日志 运维中心运行详情页直接展示 命令执行进度、模型编译结果、每个模型的执行状态与耗时、PASS/ERROR 汇总
DLC 引擎日志 通过「DLC 跳转」入口进入 SQL 在计算引擎上的执行计划、引擎侧报错堆栈、资源占用

定位方法:dbt 日志能看出哪个模型失败、命令层有没有报错;如果 dbt 日志只有适配器回传的摘要、看不到根因,通过 DLC 跳转看引擎层的完整报错。

十九、5.2 产物下载

运行详情页提供一键下载入口,产物包括:

·manifest.json:dbt 项目完整元数据,含模型之间的依赖关系,可给下游任务或文档工具使用

·run_results.json:本次执行结果,含每个模型的执行状态、耗时、执行的 SQL

20、5.3 重跑与失败处理

·支持任务级重跑:重新执行整个命令列表(重新拉代码、装依赖、注入凭证);不支持模型级重跑

·失败诊断:错误日志区分命令执行层(dbt 报错,如编译失败、依赖拉取失败)和 SQL 执行层(引擎报错,如语法错误、权限不足、资源不足),按层定位

22、6.1 参数传递(两跳写法)

WeData 参数和 dbt 变量是两套体系,必须通过 –vars 桥接,固定两步:

第一跳:命令里用 ${…} 引用 WeData 参数。

dbt run –vars '{"dt": "${yyyyMMdd}"}' –select my_model

可引用:工作流参数、任务参数、上游传递参数、调度时间参数(${yyyyMMdd} 及变形,如 ${yyyy-MM-dd}、${yyyyMMdd-1})。平台在命令执行前把 ${…} 替换为实际值。

第二跳:模型 SQL 里用 var() 读取。

select order_id, '{{ var("dt") }}' as biz_datefrom {{ source('dw', 'dws_sales') }}where dt = '{{ var("dt") }}'

注意:var("dt") 里的名字必须和 –vars 里的 key 完全一致,否则取不到值。模型 SQL 里不能直接写 WeData 的 ${…} 参数。

23、6.2 常用命令场景示例

场景 命令写法
只跑指定模型及其下游 dbt run –select my_model+
按调度日期传参 dbt run –vars '{"dt": "${yyyyMMdd-1}"}'
跑完模型后执行质量校验 命令列表末尾追加 dbt test
排除某些模型 dbt run –exclude stale_models

24、6.3 自定义 profiles.yml(高级用法)

·在 dbt 项目中编写 profiles.yml,任务配置中「profile 定义方式」选择自定义,并填写 profile 文件路径(项目内的相对路径,不填默认项目根目录)

·Token 位置写 {{ env_var('DBT_ACCESS_TOKEN') }},凭证仍由平台在运行时自动注入,不要把 Token 写死在文件里

·选择自定义后,2.4 的连接配置区域不再展示;产出登记、DLC 跳转等依赖 DLC 引擎的功能也不可用

25、6.4 通过 Bundle 进行 CI/CD 部署

dbt 任务支持作为 Bundle 资源进行导出、部署(generate、bind、validate、deploy 流程),部署时配置项可按目标环境替换,适合多环境发布场景。

26、7. 与其他任务协同

·上下游依赖:dbt 任务作为普通节点纳入工作流 DAG,上游可接 SQL/Shell/Spark 等任务,下游同理——典型链路:数仓加工任务 → dbt 任务(指标计算)→ 下游任务。

·引用上游参数:支持引用父任务/上游传递的参数(经 5.1 的 –vars 方式进入模型)。

·向下游传参:不支持。

·批量操作:支持修改资源组、修改负责人、提交、修改调度设置、删除等批量操作。

27、8. 功能边界

不支持项 说明
Studio 目录作为代码来源 本期仅支持 Git 来源
模型级重跑 重跑粒度为整个命令列表,不支持单模型重跑
向下游任务传递参数 输出参数选项置灰
克隆任务 不支持
标准模式 不支持
全局搜索 dbt 任务不出现在全局搜索中
非 DLC 引擎 本期仅支持 DLC
赞 (0)
上一篇 4天前
下一篇 4天前