Data Engineering Agent 指标到数仓建设指南
指标设计完成后,下一步通常不是直接创建报表,而是把指标口径沉淀到可复用的数据模型中。这样可以让周期任务、看板、临时分析和下游应用使用同一套数据口径,减少重复 SQL 和口径漂移。
本文介绍如何使用 Data Engineering Agent 把一张业务明细表中的指标需求,转换为 Silver / Gold 或 DWD / DWS 分层模型、SQL 草稿和 Studio 任务链路。本文重点覆盖"指标口径 -> 分层设计 -> SQL 草稿 -> 任务链路检查",不覆盖完整发布、补数和数据质量闭环。
适用场景
以下场景适合使用本文方法:
- 已经有源表,但还没有稳定的数仓分层模型
- 已经识别出核心指标,需要沉淀为可复用汇总表
- 业务分析中反复使用同一段汇总 SQL,希望变成周期任务
- 同一指标需要同时服务看板、分析查询和下游应用
- 源表字段存在口径歧义,需要先在明细层统一字段含义
- 需要把一次性分析方案拆成可维护的 Studio 任务链路
如果只是临时查一个数,不一定需要建设数仓模型。只有当指标会被反复使用、需要周期产出、需要权限治理或需要下游复用时,才建议进入数仓建设。
推荐工作流
先让 Agent 做只读探查
在建模前,先让 Agent 查看表结构和少量样例数据,识别字段角色和口径风险。
推荐提问:
Agent 通常会先确认:
- 哪个字段表示业务日期
- 哪个字段适合做金额、数量或次数指标
- 哪些字段适合做商品、客户、地区、渠道等维度
- ID 字段是订单 ID、订单行 ID、客户 ID 还是其他业务实体 ID
- 是否存在状态、退款、有效标识等过滤字段
- 样例数据是否足以判断空值、异常值和枚举值
先定义指标口径
不要直接要求 Agent 写建表 SQL。应先让它输出指标定义,尤其是计算逻辑和统计粒度。
示例:
| 指标 | 口径示例 | 需要确认的问题 |
|---|---|---|
| 销售额 | | 是否为实付金额、含税金额或退款后净额 |
| 订单数 | | 是订单 ID 还是订单行 ID |
| 客单价 | | 分母应使用订单数、客户数还是交易次数 |
| 商品销售排行 | 按商品维度汇总销售额后排序 | 排名按天、按月还是按整体周期计算 |
推荐提问:
把指标拆成明细层和汇总层
指标要稳定复用,通常需要先形成一张干净的明细层表,再基于明细层生成汇总表。
常见拆分方式:
| 层级 | 目标 | 典型内容 |
|---|---|---|
| Silver / DWD | 清洗后的明细事实表 | 字段标准化、类型转换、异常过滤、业务日期、来源批次 |
| Gold / DWS | 面向主题的汇总表 | 日汇总、商品汇总、客户汇总、排行、占比 |
| ADS | 面向具体应用的数据集 | 看板宽表、接口输出表、固定报表表 |
对于销售类明细表,常见链路是:
让 Agent 输出 SQL 草稿,不直接执行
当分层方案确认后,可以让 Agent 输出完整 SQL。首次生成时建议只输出 SQL,不创建任务、不执行 SQL。
推荐提问:
检查 SQL 时重点关注:
- 目标表名是否符合企业命名规范
- 字段类型是否合理
- 明细层是否保留了后续分析需要的维度和 ID
- 汇总层是否使用了正确的分组字段
、COUNT(*)
、COUNT(id)
是否符合业务口径COUNT(DISTINCT id)
、INSERT INTO
、INSERT OVERWRITE
的写入影响是否明确CREATE TABLE AS SELECT- 是否有全表覆盖风险
再创建 Studio 草稿任务
SQL 检查通过后,再让 Agent 创建 Studio 任务草稿。创建任务时应明确目标目录。
推荐提问:
如果目标目录不存在,建议先在 Studio 任务树中创建目录,再让 Agent 创建任务。目录可以按项目、业务域或生命周期组织,例如:
检查任务链路和发布前条件
草稿任务创建后,继续让 Agent 检查任务链路,而不是立即发布。
推荐提问:
常见检查项:
- Gold 任务是否依赖 Silver 任务成功后运行
- 多个 Gold 任务是否可以并行
- 是否需要按日期分区或按业务日期增量写入
- 运行失败后是否适合重试
- 是否需要配置超时时间
- 是否需要增加数据质量规则,例如非空、唯一、枚举、波动检查
- 是否需要先在测试目录或测试 schema 中运行
示例:从销售指标到 Silver / Gold 模型
以下示例以销售明细表为背景,展示从指标口径到数仓任务链路的拆解方式。
源表字段包括:
| 字段 | 含义 |
|---|---|
| 销售记录或订单标识 |
| 商品名称 |
| 销售金额 |
| 销售日期 |
| 客户标识 |
| 记录创建时间 |
指标口径
| 指标 | 计算逻辑 | 说明 |
|---|---|---|
| 销售额 | | 需要确认金额是否已扣除退款、折扣和税费 |
| 订单数 | | 如果 是订单行 ID,应改用真正的订单 ID |
| 客单价 | | 如果业务定义为客户均值,分母应改为客户数 |
| 商品销售排行 | 按商品汇总销售额并排序 | 需要确认排名周期,例如按天、按月或整体周期 |
Silver 明细层
Silver 层用于形成干净、可复用的销售明细。
建议处理:
- 标准化商品名称,例如去除首尾空格
- 过滤销售金额为空或小于等于 0 的记录
- 过滤销售日期为空的记录
- 增加业务日期字段,例如
dt - 增加处理时间字段,例如
etl_time - 保留原始 ID、客户 ID、创建时间,便于追溯和后续扩展
任务示例:
输出表示例:
Gold 汇总层
Gold 层面向具体分析主题产出可直接消费的指标表。
日汇总任务:
输出表:
典型字段:
dtsales_amountorder_countcustomer_countavg_order_valueetl_time
商品排行任务:
输出表:
典型字段:
dtproduct_namesales_amountorder_countsales_ranketl_time
任务链路
建议任务链路如下:
如果
build_gold_sales_daily 和 build_gold_product_rank 都只依赖 Silver 明细层,两个 Gold 任务可以都依赖 build_silver_sales_detail,再按调度系统能力并行运行。
写入影响要说清楚
指标到数仓建设通常会从"只读分析"逐步进入"写入数据"。不同阶段影响不同:
| 阶段 | 是否改变 Lakehouse 数据 | 说明 |
|---|---|---|
| 查看表结构和样例数据 | 否 | 只读探查 |
| 输出指标规范和分层方案 | 否 | 只生成文档或方案 |
| 输出 SQL 文本 | 否 | 只生成 SQL,不运行 |
| 创建 Studio 草稿任务 | 否 | 写入 Studio 任务配置,不创建目标表 |
| 手动运行建表或写入 SQL | 是 | 可能创建表、插入数据或覆盖数据 |
| 发布调度任务 | 是 | 后续会按周期执行写入逻辑 |
在生产环境中,建议把"创建草稿"、"手动试运行"、"发布调度"拆成三个明确步骤,每一步都检查影响范围。
常见问题
指标设计好了,为什么还要建 Silver 层?
直接从源表生成 Gold 汇总表很快,但字段清洗、异常过滤和业务日期选择会散落在多个任务里。Silver 层把这些基础规则统一起来,后续多个汇总任务可以复用同一份干净明细。
Gold 表应该按天汇总还是按月汇总?
取决于消费场景。看板和日常监控通常需要日粒度;月报可以在日汇总基础上继续聚合。建议优先保留较细的稳定粒度,再根据性能和使用频率增加月汇总表。
Agent 生成了 INSERT OVERWRITE
,可以直接运行吗?
INSERT OVERWRITE不要直接运行。
INSERT OVERWRITE 可能覆盖目标表数据。运行前应确认目标表、分区范围、是否只覆盖当天分区、是否有备份或回滚方式。
创建草稿任务后,目标表会自动生成吗?
不会。草稿任务只是保存 SQL 内容和任务配置。只有手动运行或发布调度后,SQL 才会真正执行。
是否需要一次创建所有任务?
不一定。复杂链路建议先创建 Silver 草稿,检查无误后再创建 Gold 草稿。这样更容易定位字段口径和写入风险。
