首页/数据/数仓建模速查/ADS 层职责:面向应用的结果表
分层与规范64 条

ADS 层职责:面向应用的结果表

ADS 直接供报表、看板与对外接口消费:字段与展示一致、粒度固定、含最终业务规则(剔除内部账号、口径修正),可以一表对应一报表。

数仓建模速查数据更新于 2026-10-13

ADS 是什么

ADS(Application Data Service)是应用层,直接供报表、看板与对外接口消费:字段与展示口径一致,粒度固定,包含最终业务规则(剔除内部账号、口径修正),常见做法是一张表对应一个报表或一个接口。ADS 允许为查询稳定而冗余字段、固化口径,代价是口径必须登记——否则同一个数字在两张报表里不一致时,没人说得清哪张是对的。

基本信息

消费方报表、看板、对外数据接口
数据规则含最终业务修正与过滤
粒度与展示口径一致,一表对应一报表
命名ads_应用_对象_周期
取数来源通常读 DWS,必要时读 DWD

典型使用场景

  • 看板不写复杂 SQL:把 ADS 结果表直接接 BI 工具,刷新时间可控
  • 对外数据接口:字段与粒度固定,便于接口契约与缓存策略稳定
  • 含特殊业务规则的报表:剔除内部账号、口径修正等规则固化在 ADS
  • 大屏与高频看板:结果集小、查询快,避免直连明细层
  • 报表改版过渡期:保留旧表直到消费方切换完成,再安排下线

ADS 结果表

ADS 结果表
INSERT OVERWRITE TABLE ads_sale_board_day PARTITION (dt='2026-10-13')
SELECT store_id,
       pay_amt,
       -- 客单价:分母为 0 时返回 NULL,避免除零报错
       CAST(pay_amt / nullif(order_cnt,0) AS DECIMAL(18,2)) AS aov
FROM dws_trade_store_day
WHERE dt='2026-10-13';

业务规则固化示例

业务规则固化示例
-- 最终口径在 ADS 落地:剔除内部测试门店
SELECT s.store_id,
       sum(s.pay_amt) AS pay_amt        -- 展示口径:已支付金额
FROM dws_trade_store_day s
LEFT JOIN dim_inner_store i ON s.store_id = i.store_id
WHERE s.dt='2026-10-13' AND i.store_id IS NULL
GROUP BY s.store_id;

结果表约定

项说明
字段与展示名称一一对应,下游不再二次换算
粒度与看板展示粒度一致,不混放多层粒度
更新频率跟随报表刷新节奏,通常日更或小时更
口径登记过滤规则与计算方式写入指标卡或表注释
ADS 允许用冗余与固化换取查询稳定,但口径必须登记在指标卡或表注释里。两张报表数字不一致时,先比对 ADS 的口径说明,再往 DWS、DWD 逐层追。
ADS 与 ADS 之间不要互相引用:一旦形成依赖链,改最上游一张表会牵动多张报表,且很难评估影响范围。需要二次加工时回到 DWS 或 DWD 取数。

易错点

  • ADS 里塞全历史明细:看板查询扫全表,刷新时间随数据量持续变长
  • ADS 表互相引用做二次加工:依赖链变长,口径层层传递难以追溯
  • 口径只写在 SQL 里没登记:人员更替后没人说得清某个数字怎么算出来
  • 对外接口直接读 DWD 明细:字段多、耗时长,接口响应与稳定性都受影响
  • 下线旧表不做过渡:消费方未切换完就删表,报表大面积报错

数据来源与参考

  • Kimball《数据仓库工具箱(第3版)》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌