MaxCompute大数据实践,电商数据仓库的星型模型和传统星型的区别

简介: 作者:王永伟 在Kimball所著的《数据仓库工具箱》一书中,对于维度模型设计采用的4步设计方法:1.选择业务过程 2.声明粒度 3.确定维度 4.确定事实。 在当前的互联网大数据环境下,面对复杂的业务场景,为了更有效准确地进行维度模型建设,基于Kimball的4步维度建模方法,我们进行了更进一步的改进。

作者:王永伟

  在Kimball所著的《数据仓库工具箱》一书中,对于维度模型设计采用的4步设计方法:1.选择业务过程 2.声明粒度 3.确定维度 4.确定事实。

在当前的互联网大数据环境下,面对复杂的业务场景,为了更有效准确地进行维度模型建设,基于Kimball的4步维度建模方法,我们进行了更进一步的改进。

  • 第一步:选择业务过程及确定事实表类型

    在明确了业务需求以后,接下来需要进行详细的需求分析,对业务的整个生命周期进行分析,明确关键的业务步骤,从而选择与需求有关的业务过程。

    以淘宝的正向订单流转为例:

    abebb3e4eef0ebbac6f248b80e321ebe449ca574 

    业务过程通常用行为动词表示,表示业务执行的活动。比如图中的淘宝订单流转的业务过程有四个:创建订单、买家付款、卖家发货、买家确认收货。在明确了流程所包含的业务过程后,需要根据具体的业务需求来选择与维度建模有关的业务过程。比如选择买家付款这个业务过程;还是选择创建订单和买家付款这两个业务过程,具体根据业务情况来确定。

    在选择了业务过程以后,相应的事实表类型也随之确定了。比如选择买家付款单个业务过程,那么事实表应为只包含买家付款这一个业务过程的单事务型事实表;如果选择的是所有这四个业务过程,并且需要分析各个业务过程之间的时间间隔,那么所建的事实表应为包含了所有四个业务过程的累积快照型事实表。

  • 第二步:声明粒度

    粒度的声明是事实表建模非常重要的一步,意味着精确定义事实表的每一行表示什么业务含义,粒度传递的是与事实表度量有关的细节层次。明确的粒度能确保对事实表中行的意思的理解不会产生混淆,保证所有的事实按照同样的细节层次记录。

    应该尽量选取最细级别的原子粒度,以确保事实表的应用具有最大的灵活性。同时对于订单过程而言,粒度可以被定义为最细的订单级别。比如淘宝订单中有父子订单的概念,既一条子订单对应一类商品,如果拍下了多种商品,则每种商品对应一条子订单;这些子订单一同结算的话,则会生成一条父订单。那么在这个例子中,事实表的粒度应该选择为子订单级别。

  • 第三步:确定维度

    完成粒度声明以后,也就意味着确定了主键,对应的维度组合以及相关的维度字段就可以确定了,应该选择能够描述清楚业务过程所处的环境的维度信息。比如淘宝的订单付款事务事实表中,粒度为子订单,相关的维度信息有买家维度、卖家维度、商品维度、收货人信息、业务类型、订单时间等。

  • 第四步:确定事实

    事实可以通过回答“过程的度量是什么”来确定。应该选择与业务过程有关所有事实,且事实的粒度要与所声明的事实表粒度一致。事实有可加性、半可加性、非可加性事实,需要将不可加事实分解为可加的组件。

    在淘宝的订单付款事务事实表中,同粒度的事实有子订单分摊的支付金额、邮费、优惠金额等。

  • 第五步:冗余维度

    在传统的维度建模星型模型中,对于维度的处理是需要单独存放在专门的维度表中,通过事实表中外键的方式获取维度。这样做的目的是为了减少事实表的维度冗余,从而减少存储消耗。而在大数据的事实表模型设计中,更多的考虑是提高下游用户的使用效率,降低数据获取的复杂性,减少关联的表数量。所以通常的事实表中会冗余方便下游用户使用的常用维度,以实现对事实表的过滤查询、控制聚合层次、排序数据以及定义主从关系等操作。

    比如在淘宝订单付款事务事实表中,通常会冗余大量的常用维度字段,以及商品的类目、卖家店铺等维度信息。


   更多数仓理论请关注:《 大数据之路:阿里巴巴大数据实践  


相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
3月前
|
存储 SQL 机器学习/深度学习
一文辨析:数据仓库、数据湖、湖仓一体
本文深入解析数据仓库、数据湖与湖仓一体的技术原理与适用场景。数据仓库结构严谨、查询高效,适合处理结构化数据;数据湖灵活开放,支持多模态数据,但治理难度高;湖仓一体融合两者优势,实现低成本存储与高效分析,适合大规模数据场景。文章结合企业实际需求,探讨如何选择合适的数据架构,并提供湖仓一体的落地迁移策略,助力企业提升数据价值。
一文辨析:数据仓库、数据湖、湖仓一体
存储 数据采集 大数据
107 0
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
Java 大视界 -- Java 大数据机器学习模型在自然语言生成中的可控性研究与应用(229)
本文深入探讨Java大数据与机器学习在自然语言生成(NLG)中的可控性研究,分析当前生成模型面临的“失控”挑战,如数据噪声、标注偏差及黑盒模型信任问题,提出Java技术在数据清洗、异构框架融合与生态工具链中的关键作用。通过条件注入、强化学习与模型融合等策略,实现文本生成的精准控制,并结合网易新闻与蚂蚁集团的实战案例,展示Java在提升生成效率与合规性方面的卓越能力,为金融、法律等强监管领域提供技术参考。
|
4月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据机器学习模型在生物信息学基因功能预测中的优化与应用(223)
本文探讨了Java大数据与机器学习模型在生物信息学中基因功能预测的优化与应用。通过高效的数据处理能力和智能算法,提升基因功能预测的准确性与效率,助力医学与农业发展。
|
4月前
|
机器学习/深度学习 搜索推荐 数据可视化
Java 大视界 -- Java 大数据机器学习模型在电商用户流失预测与留存策略制定中的应用(217)
本文探讨 Java 大数据与机器学习在电商用户流失预测与留存策略中的应用。通过构建高精度预测模型与动态分层策略,助力企业提前识别流失用户、精准触达,实现用户留存率与商业价值双提升,为电商应对用户流失提供技术新思路。
|
4月前
|
机器学习/深度学习 存储 分布式计算
Java 大视界 --Java 大数据机器学习模型在金融风险压力测试中的应用与验证(211)
本文探讨了Java大数据与机器学习模型在金融风险压力测试中的创新应用。通过多源数据采集、模型构建与优化,结合随机森林、LSTM等算法,实现信用风险动态评估、市场极端场景模拟与操作风险预警。案例分析展示了花旗银行与蚂蚁集团的智能风控实践,验证了技术在提升风险识别效率与降低金融风险损失方面的显著成效。
|
4月前
|
机器学习/深度学习 自然语言处理 算法
Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的对抗训练与鲁棒性提升(205)
本文探讨Java大数据与机器学习在自然语言处理中的对抗训练与鲁棒性提升,分析对抗攻击原理,结合Java技术构建对抗样本、优化训练策略,并通过智能客服等案例展示实际应用效果。
|
5月前
|
机器学习/深度学习 分布式计算 Java
Java 大视界 -- Java 大数据机器学习模型在遥感图像土地利用分类中的优化与应用(199)
本文探讨了Java大数据与机器学习模型在遥感图像土地利用分类中的优化与应用。面对传统方法效率低、精度差的问题,结合Hadoop、Spark与深度学习框架,实现了高效、精准的分类。通过实际案例展示了Java在数据处理、模型融合与参数调优中的强大能力,推动遥感图像分类迈向新高度。
|
2月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
|
3月前
|
机器学习/深度学习 传感器 分布式计算
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
291 14

相关产品

  • 云原生大数据计算服务 MaxCompute