宽表设计

宽表把常用维度属性与度量拼到一张表里,减少查询连接、提升交付效率;代价是更新耦合与存储放大,适合变化频率低、复用度高的核心主题,不适合承载所有临时字段。

收益查询免连接、口径集中
代价存储放大、维度更新需回刷
适合高频复用的核心分析主题
不适合临时字段与长尾需求

宽表构建

宽表构建
INSERT OVERWRITE TABLE dws_trade_user_wide_1d PARTITION (dt='2026-10-11')
SELECT o.user_id, u.city, u.level, o.category,
       COUNT(DISTINCT o.order_id) AS order_cnt,
       SUM(o.pay_amount) AS pay_amt
FROM dwd_trade_order_detail_di o
LEFT JOIN dim_user u ON o.user_sk = u.user_sk
WHERE o.dt = '2026-10-11'
GROUP BY o.user_id, u.city, u.level, o.category;
宽表字段要能说清来源与更新责任;字段越多回刷成本越高,建议分批扩展并保留回滚版本。

易错点

  • 宽表无节制加字段,回刷一次要跑数小时
  • 宽表里维度属性更新不及时,与维度表比对出现不一致

数据来源与参考

  • 行业数仓宽表设计实践
  • 阿里《大数据之路:阿里巴巴大数据实践》汇总层设计
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌