谈笑间学会数仓—大数据建模过程

首先我们先来了解一下,大数据建模都需要遵循哪些原则呢?先来列举一下

建模原则

  • 高内聚和低辑合

    将业务相近或者相关、粒度相同的数据设计为一个逻辑或者物理模型:将高概率同 时访问的数据放一起 ,将低概率同时访问的数据分开存储。

  • 核心模型与扩展模型分离

    建立核心模型与扩展模型体系,核心模型包括的宇段支持常用的核心业务,扩展模型包括的字段支持个性化或少量应用的需要 ,不能让扩展模型的宇段过度侵人核心模型,以免破坏核心模型的架构简洁性与可维护性。

  • 公共处理逻辑下沉及单一

    越是底层公用的处理逻辑越应该在数据调度依赖的底层进行封装与实现,不要让公用的处理逻辑暴露给应用层实现,不要让公共逻辑多处同时存在。

  • 成本与性能平衡

    适当的数据冗余可换取查询和刷新性能,不宜过度冗余与数据复制。

  • 数据可回滚

    不改变处理逻辑,不修改代码的情况下重跑任务结果不变

  • 一致性

    字段命名及定义必须一致

  • 命名清晰、可理解

    表命名需清晰、一致,表名需易于使用方理解

声明了解完原则,剩下的就是进行建模了,那么具体步骤应该是怎么样子的呢?

建模过程及步骤

  • 分析拆分

例如:举个电商下单的业务过程:每个用户或会员提交了一笔购物订单,对应到业务系统底层数据库中也就是一条/多条记录。

分析从几个方面进行如下:

​ 业务过程是什么?粒度是什么?维度是什么?事实/度量?

业务过程: 客户下单

粒度: 每笔交易订单(拆分为单个商品)

维度:地域、渠道、年龄、性别、商品类别等(可供分析的角度)

事实/度量:订单金额、数量等(用于分析的数据)

  • 建模步骤

1、梳理业务需求&思考数据实现

​ 在开始建模之前,首先要了解具体的业务需求,想要做什么?需要用哪些数据来做?也即是底层业务系统、数据源、数据表的实际情况。通过与需求方沟通交流、查看现有模型数据情况,清楚理解他们的基于关键性指标、竞争性商业问题,确定需求和目标,根据实际情况确定方案的可行性以及数据可行性(因为:大部分企业对数据安全比较看重,用何种方式展现以及能否展现都需要评估)等。

2、选择业务过程

业务过程是组织完成的操作型活动。业务过程时间建立或获取性能度量,并转化为事实表中的事实。大多数事实表就是某一业务过程的结果。过程选择非常重要de,因为过程定义了特定的设计目标及粒度、维度、事实的定义。

3、声明粒度

​ 声明粒度是维度设计的重要步骤。粒度用于确定某一事实表中的行表示什么。在选择维度或事实前必须声明粒度,因为每个候选维度或事实必须与定义的粒度保持一致。在从给定的业务过程获取数据时,原子粒度是最低级别的粒度。强烈建议从关注原子级别粒度数据开始设计,因为原子粒度数据能够承受无法预期的用户查询。

4、确认维度

​ 维度提供围绕某一业务过程事件所涉及的’谁、什么、何处、何时、为什么、如何’等背景。维度表包含分析应用所需要的用于过滤及分类事实的描述性属性。牢牢掌握事实表的粒度,就能够将所有可能存在的维度区分开来。

5、确认事实

​ 事实,涉及来自业务过程事件的度量,基本上都是以数据值表示。一个事实表行与按照事实表粒度描述的度量事件之间存在一对一关系,因此事实表对应一个物理可观察的事件。在事实表内,所有事实只允许与声明的粒度保持一致。

6、部署方式

​ 选择一种维度模型的落地方式。既可以选择星型模型,部署在关系数据库上,通过事实表及通过主外键关联的维度表;也可以选择多维模型,落地于多维数据库中。

建模涉及名词

  • 数据域

指面向业务分析,将业务过程或者维度进行抽象的集合。在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务进入时无影响地被包含进已有的数据域中和扩展新的数据域。

  • 业务过程

指企业的业务活动事件,如下单、支付、退款都是业务过程。请注意,业务过程是一个不可拆分的行为事件,通俗地讲,业务过程就是企业活动中的事件。

  • 时间周期

用来明确数据统计的时间范围或者时间点,如最近30天、自然周、截至当日等。

  • 修饰类型

是对修饰词的一种抽象划分,是从属于某个业务域的。

  • 修饰词

指除了统计维度以外指标的业务场景限定抽象。修饰词隶属于一种修饰类型。

  • 度量/原子指标

原子指标和度量含义相同,基于某一业务事件行为下的度量,是业务定义中不可再拆分的指标,具有明确业务含义的名词,如支付金额。

  • 维度

维度是度量的环境,用来反映业务的一类属性,这类属性的集合构成一个维度,也可以称为实体对象。维度属于一个数据域,如地理维度(其中包挤国家、地区、省以及城市等级别的内容)、时间维度(其中包括年、季、月、周、日等级别的内容)。

  • 维度属性

维度属性隶属于一个维度,如地理维度里面的国家名称、国家ID、省份名称等都属于维度属性。

  • 派生指标

派生指标=一个原子指标+多个修饰词(可选)+时间周期。可以理解为对原子指标业务统计范围的圈定。

小结

事实表和维度表设计,请参考下面链接,在此就不多bb了。

维度表:https://blog.csdn.net/MrZhangBaby/article/details/108801873

事实表:

https://blog.csdn.net/MrZhangBaby/article/details/108096179

https://blog.csdn.net/MrZhangBaby/article/details/108342505

谈笑间学会数仓—大数据建模过程相关推荐

  1. 谈笑间学会数仓—主题域数据域

    谈笑间学会数仓-主题域&&数据域 在之前的文章里虽然没有按照顺序来,但是基本上都介绍了数据仓库建设的大概流程,比如技术架构方案设计.建模方法论.数仓分层.开发规范.数仓建设中的各种事实 ...

  2. 浅尝辄止:数据库--数仓大数据平台--数据中台

    很久没有更新博客了,今天主要是想谈一谈自己工作几年总结的心得. 1.浅尝辄止 数据库:基于mysql,oracle来实现数据库分析(存储在数据库,使用数据库语言直接分析,最后成报表形式). 数仓&am ...

  3. [数仓笔记]数据建模

    [数仓笔记]数据建模 1. 为什么需要数据建模 2. 典型的数仓建模方法论 2.1 关系建模 2.2 维度建模 3. 数据整合及管理体系 3.1 体系架构 3.2 指标体系 3.2.1 定义 3.2. ...

  4. 谈笑间学会数仓-分层架构

    1.数据仓库 1-1.什么是数仓呢? ​ 数据仓库(Data Warehouse)简称DW或DWH,是数据库的一种概念上的升级,可以说是为满足新需求设计的一种新数据库,而这个数据库是需容纳更多的数据, ...

  5. 谈笑间学会数仓—维度表概念及设计案例

    维度表 维度定义 从某个角度观察事实数据的窗口,存储的数据用来从某个角度描述事实.维度表可以看成是用户用来分析一个事实的窗口,它里面的数据应该是对事实的各个方面描述,比如时间维度表,它里面的数据就是一 ...

  6. 大数据演进简史:从数仓到数据中台,谈技术选型最优解

    大家好,今天分享的议题主要包括几大内容: 带大家回顾一下大数据在国内的发展,从传统数仓到当前数据中台的演进过程: 我个人认为数据中台的核心组成,以及一些技术选型参考: 数据研发是数据中台很重要的一环, ...

  7. 从数仓到数据中台,谈技术选型最优解

    本文根据颜博老师在[Deeplus直播第218期]线上分享演讲内容整理而成. 颜博 马蜂窝数仓研发总监 现任马蜂窝数据仓库团队负责人,曾供职于京东.IBM.亚信等公司. 数据行业老兵一名,历经传统数据 ...

  8. 看这篇就明白大数据实时数仓、离线数仓、数据湖之间的关系

    数仓架构演变 20世纪70年代,MIT(麻省理工)的研究员致力于研究一种优化的技术架构,该架构试图将业务处理系统和分析系统分开,即将业务处理和分析处理分为不同层次,针对各自的特点采取不同的架构设计原则 ...

  9. 清华数为大数据应用低代码开发工具DWF 2021成长回顾

    清华数为大数据应用开发工具DWF是一款数据模型驱动的低代码应用开发工具.2021年,以工业大数据应用系统用户的需求为牵引,DWF团队共发布6个主版本,分别在移动端应用定制.异构数据源管理.交互设计功能 ...

最新文章

  1. PHP 提高PHP性能的编码技巧以及性能优化
  2. HISTORY OF ETHEREUM SECURITY VULNERABILITIES, HACKS AND THEIR FIXES
  3. 4.RabbitMQ Linux安装
  4. Java程序员周末时间搞锭银行信息管理系统毕业设计(java+springboot+mybatis+mysql+vue+elementui)等实现
  5. Git笔记(36) 打包
  6. 【李宏毅2020 ML/DL】P58 Unsupervised Learning - Neighbor Embedding | LLE, t-SNE
  7. mysql 存储过程代码_mysql存储过程语法与实例
  8. xenserver 突破VID 2T限制
  9. 龙星电脑横机制版软件_龙星制版软件下载 龙星电脑横机是什么系统
  10. 慕课翁凯习题集答案01厘米转换为英尺,英寸问题
  11. Python爬虫之青果教务系统
  12. Excel如何制作直方图与正态分布曲线
  13. 数字逻辑课程设计--数字钟的设计(quartus ii)(内附源代码和实习报告以及6篇实习日志)
  14. 通过UA判断手机的类型
  15. 温习2021年 Java 面试题汇总【100题】
  16. Oracle IN 与 DISTINCT
  17. 高可用架构的设计方法
  18. sentinel监控界面无显示
  19. Sqlmap(SQL注入自动化工具)
  20. [总结]FFMPEG视音频编解码零基础学习方法【转】

热门文章

  1. 程序员求职面试心经40条——谨记原则
  2. 【opencv机器学习】支持向量机SVM的程序
  3. 玩转华为ENSP模拟器系列 | 配置SR-MPLS BE隧道的TI-LFA FRR功能示例
  4. 关于Java中的WeakReference
  5. jdb java 变量编号_jdb 调试java
  6. 7-16 天不假年 (5 分)
  7. SpringBoot:MyBatis增强版:MyBatis-Plus ---- 19
  8. oracle connectionstring 属性尚未初始化.,sql connectionstring属性尚未初始化原因与解决办法...
  9. android listview排序分组,Android:如何为ListView排序数据?
  10. 关于css媒体查询不起作用的解决方法