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。应先让它输出指标定义,尤其是计算逻辑和统计粒度。

示例:

指标口径示例需要确认的问题
销售额
SUM(sale_amount)
SUM(sale_amount)
sale_amount
sale_amount
是否为实付金额、含税金额或退款后净额
订单数
COUNT(DISTINCT sale_id)
COUNT(DISTINCT sale_id)
sale_id
sale_id
是订单 ID 还是订单行 ID
客单价
SUM(sale_amount) / COUNT(DISTINCT sale_id)
SUM(sale_amount) / COUNT(DISTINCT sale_id)
分母应使用订单数、客户数还是交易次数
商品销售排行按商品维度汇总销售额后排序排名按天、按月还是按整体周期计算

推荐提问:

把指标拆成明细层和汇总层

指标要稳定复用,通常需要先形成一张干净的明细层表,再基于明细层生成汇总表。

常见拆分方式:

层级目标典型内容
Silver / DWD清洗后的明细事实表字段标准化、类型转换、异常过滤、业务日期、来源批次
Gold / DWS面向主题的汇总表日汇总、商品汇总、客户汇总、排行、占比
ADS面向具体应用的数据集看板宽表、接口输出表、固定报表表

对于销售类明细表,常见链路是:

源表 -> Silver 销售明细表 -> Gold 销售日汇总表 -> Gold 商品销售排行表

让 Agent 输出 SQL 草稿,不直接执行

当分层方案确认后,可以让 Agent 输出完整 SQL。首次生成时建议只输出 SQL,不创建任务、不执行 SQL。

推荐提问:

检查 SQL 时重点关注:

  • 目标表名是否符合企业命名规范
  • 字段类型是否合理
  • 明细层是否保留了后续分析需要的维度和 ID
  • 汇总层是否使用了正确的分组字段
  • COUNT(*)
    COUNT(*)
    COUNT(id)
    COUNT(id)
    COUNT(DISTINCT id)
    COUNT(DISTINCT id)
    是否符合业务口径
  • INSERT INTO
    INSERT INTO
    INSERT OVERWRITE
    INSERT OVERWRITE
    CREATE TABLE AS SELECT
    CREATE TABLE AS SELECT
    的写入影响是否明确
  • 是否有全表覆盖风险

再创建 Studio 草稿任务

SQL 检查通过后,再让 Agent 创建 Studio 任务草稿。创建任务时应明确目标目录。

推荐提问:

如果目标目录不存在,建议先在 Studio 任务树中创建目录,再让 Agent 创建任务。目录可以按项目、业务域或生命周期组织,例如:

销售分析/指标建设 数仓建模/销售分析 测试任务/临时开发

检查任务链路和发布前条件

草稿任务创建后,继续让 Agent 检查任务链路,而不是立即发布。

推荐提问:

常见检查项:

  • Gold 任务是否依赖 Silver 任务成功后运行
  • 多个 Gold 任务是否可以并行
  • 是否需要按日期分区或按业务日期增量写入
  • 运行失败后是否适合重试
  • 是否需要配置超时时间
  • 是否需要增加数据质量规则,例如非空、唯一、枚举、波动检查
  • 是否需要先在测试目录或测试 schema 中运行

示例:从销售指标到 Silver / Gold 模型

以下示例以销售明细表为背景,展示从指标口径到数仓任务链路的拆解方式。

源表字段包括:

字段含义
sale_id
sale_id
销售记录或订单标识
product_name
product_name
商品名称
sale_amount
sale_amount
销售金额
sale_date
sale_date
销售日期
customer_id
customer_id
客户标识
created_at
created_at
记录创建时间

指标口径

指标计算逻辑说明
销售额
SUM(sale_amount)
SUM(sale_amount)
需要确认金额是否已扣除退款、折扣和税费
订单数
COUNT(DISTINCT sale_id)
COUNT(DISTINCT sale_id)
如果
sale_id
sale_id
是订单行 ID,应改用真正的订单 ID
客单价
SUM(sale_amount) / COUNT(DISTINCT sale_id)
SUM(sale_amount) / COUNT(DISTINCT sale_id)
如果业务定义为客户均值,分母应改为客户数
商品销售排行按商品汇总销售额并排序需要确认排名周期,例如按天、按月或整体周期

Silver 明细层

Silver 层用于形成干净、可复用的销售明细。

建议处理:

  • 标准化商品名称,例如去除首尾空格
  • 过滤销售金额为空或小于等于 0 的记录
  • 过滤销售日期为空的记录
  • 增加业务日期字段,例如
    dt
    dt
  • 增加处理时间字段,例如
    etl_time
    etl_time
  • 保留原始 ID、客户 ID、创建时间,便于追溯和后续扩展

任务示例:

build_silver_sales_detail

输出表示例:

silver_sales_order_detail

Gold 汇总层

Gold 层面向具体分析主题产出可直接消费的指标表。

日汇总任务:

build_gold_sales_daily

输出表:

gold_sales_daily_summary

典型字段:

  • dt
    dt
  • sales_amount
    sales_amount
  • order_count
    order_count
  • customer_count
    customer_count
  • avg_order_value
    avg_order_value
  • etl_time
    etl_time

商品排行任务:

build_gold_product_rank

输出表:

gold_product_sales_rank

典型字段:

  • dt
    dt
  • product_name
    product_name
  • sales_amount
    sales_amount
  • order_count
    order_count
  • sales_rank
    sales_rank
  • etl_time
    etl_time

任务链路

建议任务链路如下:

public.demo_xe_sales -> build_silver_sales_detail -> build_gold_sales_daily -> build_gold_product_rank

如果

build_gold_sales_daily
build_gold_sales_daily
build_gold_product_rank
build_gold_product_rank
都只依赖 Silver 明细层,两个 Gold 任务可以都依赖
build_silver_sales_detail
build_silver_sales_detail
,再按调度系统能力并行运行。

写入影响要说清楚

指标到数仓建设通常会从"只读分析"逐步进入"写入数据"。不同阶段影响不同:

阶段是否改变 Lakehouse 数据说明
查看表结构和样例数据只读探查
输出指标规范和分层方案只生成文档或方案
输出 SQL 文本只生成 SQL,不运行
创建 Studio 草稿任务写入 Studio 任务配置,不创建目标表
手动运行建表或写入 SQL可能创建表、插入数据或覆盖数据
发布调度任务后续会按周期执行写入逻辑

在生产环境中,建议把"创建草稿"、"手动试运行"、"发布调度"拆成三个明确步骤,每一步都检查影响范围。

常见问题

指标设计好了,为什么还要建 Silver 层?

直接从源表生成 Gold 汇总表很快,但字段清洗、异常过滤和业务日期选择会散落在多个任务里。Silver 层把这些基础规则统一起来,后续多个汇总任务可以复用同一份干净明细。

Gold 表应该按天汇总还是按月汇总?

取决于消费场景。看板和日常监控通常需要日粒度;月报可以在日汇总基础上继续聚合。建议优先保留较细的稳定粒度,再根据性能和使用频率增加月汇总表。

Agent 生成了
INSERT OVERWRITE
INSERT OVERWRITE
,可以直接运行吗?

不要直接运行。

INSERT OVERWRITE
INSERT OVERWRITE
可能覆盖目标表数据。运行前应确认目标表、分区范围、是否只覆盖当天分区、是否有备份或回滚方式。

创建草稿任务后,目标表会自动生成吗?

不会。草稿任务只是保存 SQL 内容和任务配置。只有手动运行或发布调度后,SQL 才会真正执行。

是否需要一次创建所有任务?

不一定。复杂链路建议先创建 Silver 草稿,检查无误后再创建 Gold 草稿。这样更容易定位字段口径和写入风险。

推荐提问模板

从指标到分层方案

生成 SQL 草稿

创建 Studio 草稿任务

发布前复核

相关文档

联系我们
预约咨询
微信咨询
电话咨询
邮件咨询