十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【工作杂谈_20260817】多维分析与数据建模: 维度上卷:从明细粒度到汇总层级

【工作杂谈_20260817】多维分析与数据建模: 维度上卷:从明细粒度到汇总层级 文章目录1. 什么是“维度上卷”2. ETL 中上卷的核心是“改变事实粒度”3. ETL 中上卷的完整流程3.1 数据质量检查3.2 加载维表地域维表 DimGeography日期维表 DimDate产品表 DimProduct3.3 生成明细事实表3.4 预聚合上卷上卷一Date → Month上卷二City → Province上卷三Province → Country3.5 一致性校验我的网站原文 https://eleanora-lyh.github.io/MyLearningNotes/csdn处的文章会尽快同步更新欢迎大家来访问1. 什么是“维度上卷”维度上卷 Roll-up 本质上是维度建模和 OLAP 中的分析概念ETL 中的维度上卷是通过数据转换和聚合将细粒度事实数据加工为更高层级、更粗粒度的汇总数据。Roll-up 是分析语义ETL 是实现手段聚合表、汇总事实表是落地结果所谓上卷就是从更细维度层级聚合成更高维度层例如时间维度日 → 月 → 季度 → 年地域维度城市 → 省份 → 国家产品维度SKU → SubCategory → Category例如原始数据是DateCityProvinceCountryProductRevenue2026-08-01City1Province1Country1A1002026-08-02City3Province2Country1A1502026-08-01City2Province1Country1A80经过时间和地域上卷C1/C2都属于P1MonthProvinceProductRevenue2026-08Province1A1802026-08Province12A150这里发生了两个变化Date → MonthCity → Province同时Revenue SUM(100 150 80) 3302. ETL 中上卷的核心是“改变事实粒度”上卷不能只理解为GROUP BY。它真正改变的是事实表中一行数据所代表的业务范围。例如状态一行含义粒度上卷前某一天 某城市 某SKU 的销售情况Date City SKU上卷后某个月 某省份 某产品类别的销售情况Month Province Category事实表中的维度键决定事实数据的粒度。事实可以存储在更高粒度但高粒度事实通常无法再准确拆分回更细粒度即 日级 → 月级 通常是可完成的但 月级 → 日级 如果没有保留日级明细无法准确恢复。3. ETL 中上卷的完整流程原始数据Step1: 数据质量检查检查 City → Province 是否唯一检查 Province → Country 是否唯一识别缺失、错误和历史变更Step2: 加载维表DimDateDimGeographyDimProductStep3: 生成明细事实表FactRevenueDailyStep4: 预聚合上卷FactRevenueMonthlyCityFactRevenueMonthlyProvinceFactRevenueMonthlyCountryStep5: 一致性校验各级 Revenue 总和均应为 3303.1 数据质量检查检查 City → ProvinceCityProvince是否唯一City1Province1是City2Province1是City3Province2是当前数据中每个 City 只属于一个 Province因此层级关系正常。检查 Province → CountryProvinceCountry是否唯一Province1Country1是Province2Country1是最终可以建立稳定的地理层级City1Province1City2City3Province2Country13.2 加载维表不建议在事实表里重复保存 City、Province、Country 名称。所以按照星型模型可以拆分事实数据与维度数据地域维表DimGeography日期维表DimDate产品表DimProduct地域维表 DimGeographyGeographyKeyCityProvinceCountry101City1Province1Country1102City3Province2Country2103City2Province1Country1日期维表 DimDateDateKeyDateMonthQuarterYear202608012026-08-012026-082026-Q32026202608022026-08-022026-082026-Q32026产品表 DimProductProductKeyProduct201A如果存在产品类别还可以设计为Product → ProductCategory → ProductLine3.3 生成明细事实表明细事实表FactRevenueDailyDateKeyGeographyKeyProductKeyRevenue20260801101201100202608021032011502026080110220180粒度仍然是Date GeographyKey ProductCity、Province、Country 名称不需要重复保存在事实表中而是通过GeographyKey关联DimGeography3.4 预聚合上卷上卷一Date → Month目标粒度Month City Product生成FactRevenueMonthlyCityMonthCityProductRevenue2026-08City1A1002026-08City2A802026-08City3A150这里只提升了时间层级Date → MonthCity 维度仍保留在原层级上卷二City → Province目标粒度Month Province Product生成FactRevenueMonthlyProvinceMonthProvinceProductRevenue2026-08Province1A1802026-08Province2A150计算过程Province1 City1 100 City2 80 180 Province2 City3 150这里同时发生Date → MonthCity → Province上卷三Province → Country目标粒度Month Country Product生成FactRevenueMonthlyCountryMonthCountryProductRevenue2026-08Country1A330计算过程Country1 Province1 180 Province2 150 330完整上卷路径为Date → MonthCity → Province → Country3.5 一致性校验层级Revenue 总和原始明细数据330Monthly City330Monthly Province330Monthly Country330因此满足明细层 Revenue 城市层 Revenue 省份层 Revenue 国家层 Revenue 330最终的数据流可以概括为明细事实:Date City Product月度城市汇总:Month City Product月度省份汇总:Month Province Product月度国家汇总:Month Country Product这就是 ETL 中维度上卷的核心维度层级向上提升事实粒度变粗同时按照目标粒度重新聚合度量值。
返回列表