码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 维度建模之事实表的设计经验分享


    系列文章目录

    1. 维度建模之数据接入经验分享
      其一离线数据接入:Sqoop数据接入的经验分享和思考
      其二实时数据接入:待更新
    2. 维度建模之事实表的设计经验分享
    3. 维度建模之维度表的设计经验分享
    4. 维度建模之汇总分析表的设计经验分享
    5. 维度建模之应用层报表的设计经验分享

    文章目录

    • 系列文章目录
    • 前言
    • 一、事实表的概念
      • (一)何为事实
      • (二)事实表的结构
    • 二、事实表的主要种类及其应用场景
      • (一)事务事实表
        • 1. 概念
        • 2. 应用场景
      • (二)周期快照事实表
        • 1. 概念
        • 2. 应用场景
      • (三)累计快照事实表
        • 1. 概念
        • 2. 应用场景
      • (四)无事实的事实表
        • 1. 概念
        • 2. 应用场景
    • 三、设计思路总结
    • 四、参考书籍


    前言

    从数据仓库到数据中台,再到数据湖,最后到现在新提出的湖仓一体,存算分离。大数据的生态越来越丰富,新技术层出不穷。其中批处理这个分支,是指将各类数据归一到数据仓库,定时处理后给下游各种应用场景使用,而维度建模正适用于这种大数据量,复杂的场景,通过构建庞大的重型模型,提高复用率,这就是所谓的用空间换时间。
    本文主要分享我在数仓开发过程中事务事实的设计经验,供大家参考,如有不正确之处,请评论指正,我们共同进步。


    一、事实表的概念

    (一)何为事实

    本人的理解,事实大部分是指一个动作,是业务过程的体现。比如用户下单这个动作,用户登录这个动作,都可以抽象形成事实。

    (二)事实表的结构

    事实表中主要包含事实事件所产生的度量,用于关联的外键,退化的维度等。
    举个例子,电商用户下单这个动作,可以抽象形成订单事实表,该事实表用来记录用户下单这个过程产生的数据,比如购买商品的数量,金额等度量,订单号,订单状态,用户ID等维度

    二、事实表的主要种类及其应用场景

    (一)事务事实表

    1. 概念

    事务事实表的一行对应空间或时间上某点的度量事件。

    2. 应用场景

    例如,用户页面点击情况的日志记录。这类日志通常是以打点的形式按时间顺序记录下来,历史的数据并不会改变。

    (二)周期快照事实表

    1. 概念

    周期快照表的每行汇总了发生在某一标准周期,如某一天、某周、某月的多个度量事件。

    2. 应用场景

    例如,用户年下单量,下单金额。

    (三)累计快照事实表

    1. 概念

    累计快照表的行汇总了发生在过程开始和结束之间可预测的步骤内的度量事件。

    2. 应用场景

    例如,用户交易累计快照。

    (四)无事实的事实表

    1. 概念

    尽管多数度量事件获取的结果是数字化的,但也存在某些事件仅仅记录一系列某一时刻发生的多维实体。

    2. 应用场景

    例如,在给定的某一天发生的学生参加课程的事件,可能没有可记录的数字化事实,但该事实行带有一个包含日历天、学生、教师、地点、课程等定义良好的外键。利用这样无事实的事实表也可以分析发生了什么。

    三、设计思路总结

    1. 事实表的设计完全依赖于物理活动,不受可能产生的最终报表的影响;
    2. 事实表的粒度应该尽可能地使用数据源最细粒度,这样可以使其更有方便于下游多种场景的复用,比如事实表中是细分到天粒度,下游可以汇总成天粒度,也可以汇总成月粒度;
    3. 通常会将多个维度退化在事实表里,方便下游直接取数。

    四、参考书籍

    1. 《数据仓库工具箱(第3版)——维度建模权威指南》【美】Ralph Kimball & Margy Ross 著
    2. 《大数据之路——阿里巴巴大数据实践》阿里巴巴数据技术及产品部 著
  • 相关阅读:
    Smartbi携手中新赛克达成战略合作,生态构建再上新高度
    学习线程池原理从手写一个线程池开始
    makefile的编写:由浅入深
    传输大文件小工具:bypy
    java毕业生设计医院取药系统计算机源码+系统+mysql+调试部署+lw
    strict模式表
    微信小程序实现上拉加载更多
    不同类型跨链桥中可能存在的安全隐患
    C++ string类(包括深浅拷贝)
    基于Python和TensorFlow实现BERT模型应用
  • 原文地址:https://blog.csdn.net/zhangliushi/article/details/126040232
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号