ADS 应用层设计

ADS 面向具体消费场景(报表、看板、接口、导出),把多张 DWS/DWD 组装成结果表;指标口径、过滤条件、排序都在这一层显式写清楚,方便核对与回溯。

ADS 层是什么

ADS(应用数据层)直接面向消费方:报表、看板、接口、数据导出。它把上游的 DWS 或 DWD 组装成一张张结果表,指标口径、过滤条件、排序规则都在这一层写清楚。判断标准是「谁在用这张表」——有明确消费方的结果集才放 ADS,通用的中间汇总应留在 DWS,否则同一口径会被复制到多张表里,改一次要改一圈。

基本信息

面向对象报表、看板、接口、数据导出
组织方式一表一需求或一类需求
内容最终指标值加维度与时间
质量要求每张表可追溯到口径文档
更新方式按 dt 分区覆盖写
上游来源DWS 汇总表为主,必要时下探 DWD

看板结果表

看板结果表
INSERT OVERWRITE TABLE ads_order_overview_1d PARTITION (dt='2026-10-11')
SELECT '2026-10-11' AS stat_date,
       SUM(order_cnt) AS order_cnt,
       SUM(pay_amt)   AS pay_amt,
       COUNT(DISTINCT user_id) AS buyer_cnt
FROM dws_trade_user_1d WHERE dt='2026-10-11';

典型使用场景

  • 经营看板:日订单、支付金额、买家数这类每天刷新一次的指标表
  • 接口取数:App 首页或运营后台按接口返回的指标结果
  • 数据导出:供业务方下载的明细或汇总清单
  • 权限隔离:接口只暴露结果表,不直接查底层明细
  • 多渠道口径对齐:同一指标给不同渠道时保持同一张表加筛选维度

分层职责对照

层职责常见问题
DWS通用汇总,可被多个下游复用粒度过细导致收益低
ADS面向具体消费场景的结果口径被复制成多份
接口层对结果做字段裁剪与脱敏直接暴露明细带来风险
口径文档指标定义与计算逻辑缺文档时无人能核对
ADS 表常被下游代码直接引用,改字段等于接口变更:新增而不是改名,废弃字段先双写一段再下线。
ADS 表的价值在于「口径写死在一处」:如果同一指标在两张 ADS 表里各算一遍,早晚会出现两个数,最后没人敢确认哪个是对的。
结果表的时间口径要写进字段注释:统计日、数据截止时刻、是否含退款,这三件事不写清楚,下游一定会按自己的理解使用。

易错点

  • ADS 里重新定义口径、与 DWS 不一致,造成同一指标两个数
  • 结果表字段改名直接导致下游报表报错
  • 把 ADS 当公共汇总层用,多个需求共用一张表后越改越复杂
  • 重刷上游 DWS 后忘记联动重跑 ADS,报表数字与明细对不上
  • 结果表缺少口径文档,交接后没人能解释某个数字为什么是这些

数据来源与参考

  • 阿里《大数据之路:阿里巴巴大数据实践》应用数据层(ADS)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌