数仓建模理论——高质量数据建模(代码片段)

不可描述的两脚兽 不可描述的两脚兽     2023-04-01     475

关键词:

数仓质量

数据模型的概念和意义 - DIKW


低质量数据模型十宗罪:

  1. 没有准确的不过到需求:调研不完备,理解不充分,缺乏沟通,测试不足,etc. 造成后期大量的调整
  2. 数据模型不完整:
    a. 设计时对需求把握不准确,缺少相关表,不能覆盖需求。
    b. column限制,表、字段描述信息缺失。
  3. 各层模型与其扮演角色不匹配。(概念模型,逻辑模型,物理模型)
  4. 数据结构不合理。主键一定不能为空,相同字段在不同表里定义必须一致。
  5. 抽象画不够,造成模型不灵活。
  6. 没有或者不遵循命名规范。
  7. 缺少数据模型的定义和描述。库改了很多轮模型却没有更新过。
  8. 数据模型可读性差。建模工具管理模型ER图,数据字典可读性。
  9. 元数据与数据不匹配。
  10. 数据模型与企业标准不一致。各个项目各自标准没有企业统一规范。

低质量数据模型的影响

  1. 大量修改和重做
  2. 重复建设
  3. 知识丢失,经年累月后没有传承
  4. 下游开发困难
  5. 成本高
  6. 数据质量低下
  7. 新业务无法展开

数仓必备技能

  1. 对于业务知识的了解, 30%
  2. 沟通能力,25%
  3. 规范化能力比如文档撰写,13%

1. 建模基础 - 实体

通常是名词。“人” 或 “事”的抽象
实体举例:

  • 业务场景:
    实体抽象:

    业务中并没有提到POS机,但刷卡消费需要用到POS机,这里就是沟通能力、业务知识、需求挖掘的能力。
  • 沟通技巧
    需要有中间品的产出,拿着这个产出于客户讨论。
    Explore: 客户表述业务场景。
    Clarify:用自己的语言澄清表述自己的理解。
    Confirm:客户确认你说的对不对。
    Action:建模

    实体的分类方式 —— 5W1H

    实体的分类方式——按照含义分类

    实体的分类方式——按照Pattern分类

2. 建模基础——属性(Attribute)

属性是对实体的描述。
实体对应的是表,属性对应的是列。

属性的一些特性:

  1. 强制、可选?
  2. 原子、组合?直接、派生?
  3. 单值、多值?
  4. 可选键?用以唯一确定实例
  5. 数据类型是什么?
  6. 是否有默认值?
  7. 派生属性是如何计算的?加以注释!

3. 域(Domain)

域类型

  1. 格式:VARCHAR,INTEGER,…
  2. 列表:枚举,GENDER
  3. 范围:0 to 150
    好处:
  4. 提高数据质量
  5. 使数据模型更易于理解和沟通
  6. 标准化,提高建模效率

NULL值的处理

NULL的含义:

  1. 真未知
  2. 尚未知
  3. 不适用
    隐患:
  4. 数学运算:结果都是NULL
  5. Where子句:将不包含条件为NULL的数据。如需加
    where field = xxx or field is null
  6. Join:NULL不能和NULL join,使用coalesce函数将NULL转换成其他字符如NA
    from a join b on coalesce(a.id,'NA') = coalesce(b.id,'NA')
  7. 聚合函数会受影响
  8. 子查询:子查询中not in存在NULL可能导致无返回结果

原则及方法:
针对不同需求对NULL进行不同的处理。
9. 根据查询的需求
10. 根据数据的本质
11. 默认值能否代替NULL?如何代替?提醒开发者注意!


规范化——范式

减少冗余:同一含义的数据只存一份
“Each non-primary key value MUSt be dependent on the key(1NF), the whole key(2NF), and nothing but hte key(3NF)”
“每一个非键值属性必须依赖于键,依赖于整个键而不是键的一部分,并且不依赖于其他非键属性”

第一范式:原子性,没有重复列,列不可再分,也没有重复行。

  1. 数据规范成二维表格
  2. 确保每一列表达的统一含义的数据
  3. 去掉多值属性,拆分多列
  4. 去掉重复组,挪到新表中去
  5. 确定主键

第二范式:非主键属性依赖于整个键,而不是其中一部分

  1. 首先满足第一范式
  2. 如果非主键属性只依赖于主键的一部分,则需要移出创建的新表
  3. 如果主键只有一个属性,不需要考虑第二范式

第三范式:

  1. 首先满足第二范式
  2. 如果非主键属性还依赖其他非主属性,则需要移出创建新表

数据建模基础 命名规范

共通的要求

  1. 清晰:表达的含义要清晰
  2. 别太复杂:很想说简单,但有的时候很难简单
  3. 可共享:希望放眼整个企业,至少也是当下的系统
  4. 基于经验可识别:一些企业习惯的共识,不要试图改变
  5. 命名风格一致性:同一术语在不同环境中保持统一含义,相同环境下保持统一风格。
  6. 尽量英文。

逻辑模型Tips

物理模型Tips

缩写技巧

哪些对象需要命名

表的命名规范




主题域

数仓中可能有成百上千的表,怎么分组合适呢?
把相同特征的放在一起。
为了逻辑更清楚,把差不多的放一块。
没有金科玉律。

分类办法

  1. 借鉴成熟的模型

  2. 归纳当前模型

    • 业务角度
    • 应用角度
    • 层次角度

归纳当前模型






通用功能调研

逻辑模型Check List



每一个需求都要有对应的模型变更
需求里没有的不要过度设计,为了增加弹性而增加的工作量需要与客户沟通


概念模型通常会有几个大方向的图,用于与客户沟通别跑偏。
逻辑模型中遇到不符合概念模型的细节一定要再次与客户沟通!说起来容易,做起来难。



物理模型 建模



部分资料建议:逻辑模型做规范化设计,物理模型做逆规范化设计。(容易引起在维护中只改物理模型,就不管逻辑模型了)
个人建议:物理模型与逻辑模型完全保持一致。



逆规范化空间换时间,权衡利弊。


质量问题分清主次,哪些能改哪些不能,不能搞定的反馈给上游(影响、危害)。

数仓建模理论——高质量数据建模(代码片段)

数仓质量数据模型的概念和意义-DIKW低质量数据模型十宗罪:低质量数据模型的影响数仓必备技能1.建模基础-实体2.建模基础——属性(Attribute)3.域(Domain)NULL值的处理规范化——范式第一范式:原子性&#... 查看详情

hive之数仓的分层及建模理论(代码片段)

...入效果开发数据产品,直接或间接地为公司盈利二、数仓运行架构图三、数据集市与数仓的区别数据集市& 查看详情

数仓建模分层理论

...度模型,设计事实表和维度表,DWD层是一个非常规范的、高质量的、可信的数据明细层4、DWS:基于DWD层形成某一主题的轻度汇总表或分析宽表,DWS形成大量维度退化的事实表以提高易用性,DWS层应覆盖80%的应用场景5、TDM:标签... 查看详情

老司机带带我:数仓建模架构|维度建模剖析与案例演示(代码片段)

...里巴巴,京东,头条的分享交流,也有小公司数仓迭代案例的建设分析。感兴趣的小伙伴可以 查看详情

老司机带带我:数仓建模架构|维度建模剖析与案例演示(代码片段)

...里巴巴,京东,头条的分享交流,也有小公司数仓迭代案例的建设分析。感兴趣的小伙伴可以 查看详情

数仓第二篇:数据模型(维度建模)(代码片段)

...2ERWin3.3Visio3.4ExcelMapping04.结语本文导航前言:model对于数仓是最核心的东西࿰ 查看详情

数据仓库的基本理论

...统计口径的不一致性,减少数据计算错误的可能性,提供高质量的、一致的数据访问平台So,大数据的数仓建模需要通过建模的方法更好的组织、存储数据,以便在性能、成本、效率和数据质量之间找到最佳平衡点2.关系模式范... 查看详情

hive数仓项目之需求分析建模分析优化方案(代码片段)

 往期内容:Hive数仓项目架构说明、环境搭建及数据仓库基础知识Hive数仓项目之数仓分层、数仓工具的使用Hive数仓项目之访问咨询主题看板:数据的采集、转换、分析导出Hive数仓项目之访问咨询主题看板增量的流程​... 查看详情

数仓第二篇:数据模型(维度建模)(代码片段)

...2ERWin3.3Visio3.4ExcelMapping04.结语本文导航前言:model对于数仓是最核心的东西,数据模型是数据组织和存储方法,模型的好坏,决定了数仓能支撑企业业务多久。为什么大多数企业,数仓都要重建,这不仅仅... 查看详情

大数据面试题--数仓

目录数据仓库理论数据分层ETL星形模型与雪花模型的区别?维度建模(dimensionalmodeling):数据仓库项目最重要或需要注意的是什么,以及如何处理?关系建模与维度建模拉链表:维度表和事实表数据仓... 查看详情

数仓实践:浅谈kimball维度建模

我们不管是基于Hadoop的数据仓库(如Hive),还是基于传统MPP架构的数据仓库(如Teradata),抑或是基于传统Oracle、MySQL、SQLServer关系型数据库的数据仓库,其实都面临如下问题:怎么组织数据仓库中... 查看详情

数仓初识-理论知识

...进行宽表设计,对DWD层的数据结构进行反范式设计,减少数仓查询的Join操作ADS层也称之为数据集市层,是为了屏蔽业务直接查询数仓从而导致数仓压力增大的问题,所以该层会使用很多组件如Kylin、ES等组件加速数仓查询速度。O... 查看详情

hive数仓建设手册(代码片段)

1数仓的分层及建模理论1.1数据仓库的用途整合公司所有业务数据,建立统一的数据中心产生业务报表,用于作出决策为网站运营提供运营上的数据支持可以作为各个业务的数据源,形成业务数据互相反馈的良性循环... 查看详情

建模之数据处理常用方法(代码片段)

...色系统模型在数据处理和预测中经常使用。灰色系统理论建模特点:原始数据必须等时间间距。处理思路:首先对原始数据进行累加,弱化原始时间序列数据的随机因素.然后建立生成数的微分方程。GM(1,1)模型是灰色... 查看详情

数据仓库建设原则规范(代码片段)

一、数据模型架构原则1.数仓分层原则优秀可靠的数仓体系,往往需要清晰的数据分层结构,即要保证数据层的稳定又要屏蔽对下游的影响,并且要避免链路过长。那么问题来了,一直在讲数仓要分层,那数仓分几层最好?目前市场上主... 查看详情

聊聊数据仓库

...数据仓库的标准化规范设计,融合建模规范、建模实操、数仓大图、数据质量、衡量指标等为一体的线上建模工具。  通过数仓建设,我们需要解决以下问题[] 数据存储的规范性[]  数据模型的复用性[]  ... 查看详情

聊聊数据仓库

...数据仓库的标准化规范设计,融合建模规范、建模实操、数仓大图、数据质量、衡量指标等为一体的线上建模工具。  通过数仓建设,我们需要解决以下问题[] 数据存储的规范性[]  数据模型的复用性[]  ... 查看详情

数仓建模规范--非常全

...个文章与书籍,整合而成。对大中小厂均具有参考意义。数仓开发规范 一.数据模型架构原则 1.数仓分层原则优秀可靠的数仓体系,往往需要清晰的数据分层结构,即要保证数据层的稳定又要屏蔽对下游的影响,并且要避... 查看详情