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 取数。