news 2026/6/12 15:02:52

【大数据_数仓架构-07_ DWS建的表归属到是什么主题域,如何划分,举例】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【大数据_数仓架构-07_ DWS建的表归属到是什么主题域,如何划分,举例】

● DWS 表的主题归属分析

非常好的追问!这正是 DWS 建模中最关键也最容易模糊的地方。

我建的 dws_cate_region_trade_1d 这张表,它的主题归属其实是有争议的,我们来认真分析一下。


一、回顾这张表的特征

dws_cate_region_trade_1d
粒度:dt × 省 × 市 × 一级类目 × 叶子类目
指标:订单数、交易额、件数、买家数…

关键观察:这张表的粒度里没有任何一个"分析对象"占主导地位 —— 它既不是纯粹的"商品/类目主题",也不是纯粹的"地区主题",而是两个维度的交叉。


二、三种主题归属的判断思路

思路A:归属到"类目主题"(cate)

理由:从分析对象看,这张表的核心是"研究类目的销售表现",地区只是切片维度。

主题域:商品/类目主题
表名应改为:dws_cate_trade_1d
粒度:dt × 类目 × 地区切片

适用场景:以"类目运营"为主线的分析体系。

思路B:归属到"地区主题"(region)

理由:从分析对象看,核心是"研究地区的消费表现",类目只是切片维度。

主题域:地区主题
表名应改为:dws_region_trade_1d
粒度:dt × 地区 × 类目切片

适用场景:以"区域运营"为主线的分析体系。

思路C:归属到"交易主题"(trade)—— 我推荐的归属

理由:这张表本质上是交易事实的多维聚合,没有主导的分析对象,应归到交易主题这个"过程域型主题"。

主题域:交易主题(trade)
表名:dws_trade_cate_region_1d
粒度:dt × 类目 × 地区(交叉粒度)


三、为什么我推荐归属"交易主题"

  1. 数据仓库主题划分的两种流派

实际生产中,DWS 主题划分通常有两种思路:

┌────────────┬──────────────────┬────────────────────────┐
│ 流派 │ 主题划分依据 │ 典型主题 │
├────────────┼──────────────────┼────────────────────────┤
│ 对象型主题 │ 围绕分析实体 │ 用户、店铺、商品、品牌 │
├────────────┼──────────────────┼────────────────────────┤
│ 过程型主题 │ 围绕业务过程聚合 │ 交易、流量、履约、营销 │
└────────────┴──────────────────┴────────────────────────┘

大多数互联网公司是两种混用的:

  • 单实体宽表 → 对象型主题(用户、店铺、商品)
  • 多维交叉聚合表 → 过程型主题(交易、流量、履约)
  1. 我建的这张表属于"多维交叉"

dws_trade_cate_region_1d
├── 它不是"用户宽表"(没有 user_id 维度)
├── 它不是"店铺宽表"(没有 shop_id 维度)
├── 它不是"商品宽表"(粒度比商品粗,是类目级)
└── 它是【交易事实】在【类目 × 地区】两个维度上的交叉聚合

所以归属到"交易主题"最合适。


四、规范化的命名与归属

按阿里 OneData 体系的命名规范,应该这样调整:

– 原来的命名
dws_cate_region_trade_1d ← 不规范

– 规范后的命名
dws_trade_cate_region_1d
↑ ↑ ↑ ↑
层 主题域 粒度 周期

命名解析:

  • dws:层级
  • trade:主题域 = 交易
  • cate_region:粒度 = 类目 × 地区
  • 1d:周期 = 日

五、淘宝场景下 DWS 主题域的完整划分

为了让你看清楚归属逻辑,给你一份完整的 DWS 主题分布:

对象型主题(单实体宽表)

用户主题 (user)
├── dws_user_trade_1d 用户的交易表现(用户视角)
├── dws_user_trade_nd
├── dws_user_traffic_1d
└── dws_user_logi_nd

店铺主题 (shop)
├── dws_shop_trade_1d
└── dws_shop_traffic_1d

商品主题 (item)
├── dws_item_trade_1d 单品的销售表现
└── dws_item_traffic_1d

过程型主题(多维交叉聚合)

交易主题 (trade) ← 我建的表归这里
├── dws_trade_cate_region_1d 类目×地区 交易汇总 ← 就是这张
├── dws_trade_cate_1d 类目维 交易汇总
├── dws_trade_region_1d 地区维 交易汇总
├── dws_trade_brand_1d 品牌维 交易汇总
└── dws_trade_channel_1d 渠道维 交易汇总

流量主题 (traffic)
├── dws_traffic_page_1d 页面流量汇总
└── dws_traffic_source_1d 流量来源汇总

履约主题 (logi)
├── dws_logi_carrier_1d 物流商汇总
└── dws_logi_region_1d 地区履约汇总


六、一个判断决策树

判断一张 DWS 表归属哪个主题域,用这个决策树:

这张表的粒度里有【单个明确的分析对象】吗?

├─ 有 → 对象型主题
│ ├─ 粒度是 user_id → 用户主题 (user)
│ ├─ 粒度是 shop_id → 店铺主题 (shop)
│ ├─ 粒度是 item_id → 商品主题 (item)
│ └─ 粒度是 brand_id → 品牌主题 (brand)

└─ 没有(多维度交叉聚合)→ 过程型主题
├─ 度量是交易类(订单、金额)→ 交易主题 (trade) ✅
├─ 度量是流量类(PV、UV) → 流量主题 (traffic)
├─ 度量是履约类(发货、妥投)→ 履约主题 (logi)
└─ 度量是营销类(券、活动) → 营销主题 (mkt)

我建的 dws_cate_region_trade_1d:

  • 没有单一分析对象(cate + region 两个维度)
  • 度量是支付订单数、交易额 → 交易类
  • ✅ 归属:交易主题 (trade)

七、修正后的最终方案

表名修正

– 原表名(不规范)
dws_cate_region_trade_1d

– 规范后
dws_trade_cate_region_1d

完整命名层级

ods 层 → ods_trade_order_di (贴源,业务系统名)
dwd 层 → dwd_trade_order_pay_di (交易域-支付过程)
dws 层 → dws_trade_cate_region_1d (交易主题-类目地区粒度-日)
ads 层 → ads_flower_rose_geo_1d (应用:鲜花玫瑰地域看板)

一目了然的归属

DWD 数据域: 交易域 (trade)
↓ 聚合
DWS 主题域: 交易主题 (trade)
↓ 应用化
ADS 业务方向: 鲜花运营 (flower)

注意:DWD 的"交易域"和 DWS 的"交易主题"虽然名字相似,但概念不同:

  • DWD 交易域:以"交易业务过程"组织的明细事实表集合(下单、支付、退款)
  • DWS 交易主题:以"交易度量"为核心、按各种维度组合聚合的汇总表集合

八、为什么不归"商品主题"或"地区主题"?

不归"商品主题"

商品主题的标准粒度应该是 item_id(单品级),用来回答"某个具体商品的销售表现"。
而 dws_trade_cate_region_1d 粒度是 类目级,比商品粗一层,不属于商品主题的核心资产。

不归"地区主题"

如果建"地区主题",应该建一张围绕地区这个分析对象的宽表:

dws_region_full_nd(地区主题宽表,假设建)
粒度:city_code + dt
字段:
city_code, city_name,
– 交易表现
total_pay_amount_30d, total_order_cnt_30d,
– 流量表现
total_uv_30d, total_pv_30d,
– 履约表现
avg_delivery_hours_30d,
– 用户表现
active_user_cnt_30d, new_user_cnt_30d

这才是"地区主题宽表" —— 围绕地区这个对象,刻画它的方方面面。
而我建的表只是"交易事实 × 地区切片",远没到"地区画像"的程度。


九、一句话总结

▎ dws_trade_cate_region_1d 归属【交易主题域 trade】,属于"过程型主题"下的"多维交叉聚合表"。

▎ 判断依据:
▎ 1. 粒度是"类目 × 地区"的交叉,没有单一分析对象 → 不是对象型主题
▎ 2. 度量是订单数、交易额 → 属于交易类度量
▎ 3. 服务于交易场景的多维下钻分析 → 归交易主题最自然

▎ 规范化命名应为:dws_trade_cate_region_1d(主题域放在粒度前面)

这也提醒我们一个建模铁律:

▎ DWS 表名一定要能从名字看出它的主题归属和粒度,否则数仓越建越乱,谁也搞不清一张表该用还是不该用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 14:58:00

i.MX31异构计算架构解析:ARM11核心与IPU/GPU硬件加速设计

1. 项目概述:为什么i.MX31在当年是颗“硬核”芯片? 如果你在2006年前后折腾过PMP(便携式媒体播放器)、带摄像功能的智能手机或者早期的车载信息娱乐系统,那么Freescale(后来的NXP)的i.MX31这个名…

作者头像 李华
网站建设 2026/6/12 14:57:59

从Vijos到Hydro:一个开源OJ系统的‘重生’与‘进化’之路

Hydro OJ:一个开源评测系统的架构演进与技术哲学在编程竞赛和算法训练的世界里,在线评测系统(Online Judge)扮演着至关重要的角色。它们不仅是代码正确性的仲裁者,更是无数开发者技术成长的见证者。Hydro OJ作为这个领域的后来者,…

作者头像 李华
网站建设 2026/6/12 14:57:56

Docker镜像拉取慢?别只怪镜像源,可能是你的`daemon.json`没配对!

Docker镜像加速全攻略:突破daemon.json配置的隐藏陷阱当你在终端输入docker pull命令后,进度条像蜗牛般缓慢爬行时,第一反应往往是"该换镜像源了"。于是你熟练地打开/etc/docker/daemon.json,添加几个国内镜像地址&…

作者头像 李华
网站建设 2026/6/12 14:56:55

终极解放双手:淘宝淘金币自动化脚本全攻略

终极解放双手:淘宝淘金币自动化脚本全攻略 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本,包含蚂蚁森林收取能量,芭芭农场全任务,解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taojinbi taojinbi是一款基…

作者头像 李华
网站建设 2026/6/12 14:47:52

Visual C++运行库终极修复指南:5分钟解决Windows软件兼容性问题

Visual C运行库终极修复指南:5分钟解决Windows软件兼容性问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否遇到过新安装的游戏总是闪退&…

作者头像 李华
网站建设 2026/6/12 14:45:54

MC68HC16Z1微控制器:模块化架构、CPU16核心与低功耗设计深度解析

1. 项目概述在嵌入式系统开发领域,尤其是工业控制、汽车电子和消费电子等对实时性、可靠性和功耗有严苛要求的场景,微控制器的选型往往是决定项目成败的关键。今天要聊的这颗芯片——摩托罗拉(后为飞思卡尔)的MC68HC16Z1&#xff…

作者头像 李华