数仓建模理论——高质量数据建模

2023-11-13

数据模型的概念和意义 - 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

在这里插入图片描述
在这里插入图片描述
每一个需求都要有对应的模型变更
需求里没有的不要过度设计,为了增加弹性而增加的工作量需要与客户沟通
在这里插入图片描述
在这里插入图片描述
概念模型通常会有几个大方向的图,用于与客户沟通别跑偏。
逻辑模型中遇到不符合概念模型的细节一定要再次与客户沟通!说起来容易,做起来难。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

物理模型 建模

在这里插入图片描述
在这里插入图片描述
部分资料建议:逻辑模型做规范化设计,物理模型做逆规范化设计。(容易引起在维护中只改物理模型,就不管逻辑模型了)
个人建议:物理模型与逻辑模型完全保持一致。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
逆规范化空间换时间,权衡利弊。
在这里插入图片描述
在这里插入图片描述
质量问题分清主次,哪些能改哪些不能,不能搞定的反馈给上游(影响、危害)。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数仓建模理论——高质量数据建模 的相关文章

  • Flink实战之实时风控规则引擎

    问题导读 1 怎样构建一个风控业务架构 2 风控规则模型有哪些 3 怎样实现Flink CEP 动态更新 一 项目背景 目前钱大妈基于云原生大数据组件 DataWorks MaxCompute Flink Hologres 构建了离线和实时
  • 如何保障数仓数据质量?

    有赞数据报表中心为商家提供了丰富的数据指标 包括30 页面 100 数据报表以及400 不同类型的数据指标 它们帮助商家更合理 科学地运营店铺 同时也直接提供分析决策方法供商家使用 并且 每天在跑的底层任务和涉及的数据表已经达到千级别 面对
  • 详解用户画像

    01画像简介 用户画像 即用户信息标签化 通过收集用户的社会属性 消费习惯 偏好特征等各个维度的数据 进而对用户或者产品特征属性进行刻画 并对这些特征进行分析 统计 挖掘潜在价值信息 从而抽象出用户的信息全貌 如图1 1所示 用户画像可看作
  • 数据中台-让数据用起来-7

    文章目录 第七章 数据体系建设 7 1 数体系规划 7 2 贴源数据层建设 全域数据统一存储 7 2 1 相关概念 7 2 2 贴源数据表设计 7 2 3 贴源数据表实现 7 3统一数仓层建设 标准化的数据底座 7 3 1 相关概念 7 3
  • hive中判断一个字符串是否包含另一个子串的四种方法,sql中也可用

    hive中判断一个字符串是否包含另一个子串的四种方法 如果你有一个数据需求 需要从一个字段中 判断是否有一个字符串 你该怎么做 一 方法1 like和rlike 最能想到的方法 用like或者rlike select i want to t
  • R语言实用教程薛毅清华出版社课后题答案

    有R语言实用教程薛毅课后题答案习题1 5 详情请到我的页面资源查看
  • Hive【Hive(一)DDL】

    前置准备 需要启动 Hadoop 集群 因为我们 Hive 是在 Hadoop 集群之上运行的 从DataGrip 或者其他外部终端连接 Hive 需要先打开 Hive 的 metastore 进程和 hiveserver2 进程 meta
  • benchmark TPC-H postgreSQL

    写在前面 个人对TPCH benchma的理解 我接到这个任务的时候 描述是这样的 呀 用benchMarke生成TPC H然后测试一下 我第一反应就是benchMark是什么 TPCH是什么 现在把这个弄完一遍后来说一下我的理解 首先什么
  • 互联网“香饽饽”?数据挖掘或成热门行业

    何为 数据挖掘 信息化社会的高速发展下 大数据 云计算 物联网等技术应运而生 海量的数据资源逐渐在人们的生产生活中高速地产生 积累 带动全社会迈入了大数据时代 这些代表信息的数据就好像大海 而要在广阔的大海里面找到想要的某一条信息或知识 也
  • Hadoop 之上的数据建模 - Data Vault 2.0

    对比传统的基于 RDBMS 之上的数据仓库和商业智能项目 尝试着说说 Hadoop 之上的数据仓库 从ETL 数据存储 到分析展现 重点围绕数据建模方面做分析 因为这是本文的重点 介绍一份新的数据建模方式 Data Vault 2 0 ET
  • 初学MaxCompute

    MaxComputer是阿里云提供的一种全新的大数据计算服务 其具备更高效的计算及存储能力 本人的理解就是一个类似于HBase Hive的云上的数据仓库 参考官方文档系列 https yq aliyun com articles 85595
  • 企业网站建设方案书

    一 网站建设目标 1 1背景分析 现在网络的发展已呈现商业化 全民化 全球化的趋势 目前 几乎世界上所有的公司都在利用网络传递商业信息 进行商业活动 从宣传企业 发布广告 招聘雇员 传递商业文件乃至拓展市场 网上销售等 无所不能 如今网络已
  • 一文了解Clickhouse

    ClickHouse是什么 ClickHouse是一个存储计算一体的工具 其与spark flink等大数据框架不同的在于它有自己的存储层 在数据压缩 存储上做了更多的优化 所以导致它在某些数据处理能力上比其他工具快上了不少 毕竟一般框架只
  • 浅谈我所见识的数据治理项目

    开篇一张图 与正文不一定有关 图片来源于朋友圈 01 写在前面 熟悉笔者的朋友可能知道 笔者之前做的并非纯数据相关工作 产品或项目 笔者属于半路出家的数据人 之前也几乎没有直接接触过数据仓库 数据中台 数据平台等产品或项目 与数据库是一直打
  • 数据湖--概念、特征、架构与案例概述

    一 什么是数据湖 数据湖是目前比较热的一个概念 许多企业都在构建或者计划构建自己的数据湖 但是在计划构建数据湖之前 搞清楚什么是数据湖 明确一个数据湖项目的基本组成 进而设计数据湖的基本架构 对于数据湖的构建至关重要 关于什么是数据湖 有如
  • 大数据之hive(数据仓库工具)的分组和分区操作

    注 在对hive的概念 优缺点 安装部署和参数配置在之后再进行总结 本小节主要对hive中的分组和分区进行总结 一 分组 1 group by语句 group by通常和聚合函数一起使用 按照一个或者多个列进行分组 然后对每个组进行聚合操作
  • Spark SQL 项目:实现各区域热门商品前N统计

    一 需求1 1 需求简介这里的热门商品是从点击量的维度来看的 计算各个区域前三大热门商品 并备注上每个商品在主要城市中的分布比例 超过两个城市用其他显示 1 2 思路分析使用 sql 来完成 碰到复杂的需求 可以使用 udf 或 udaf查
  • 头歌—Hive的安装与配置

    第1关 Hive的安装与配置 在修改 conf 下面的 hive site xml 文件这里 题目给的信息是错误的 正确的内容如下
  • 数据仓库与数据挖掘复习资料

    一 题型与考点 第一种 1 解释基本概念 中英互译 解释简单的含义 2 简答题 每个10分有两个一定要记住 考时间序列Time series 第六章 的基本概念含义 解释 作用 序列模式挖掘的作用 考聚类 第五章 重点考密度聚类的定义描述
  • iceberg集成hive,insert失败问题排查与解决

    背景 创建iceberg表成功 CREATE TABLE iceberg test1 i int STORED BY org apache iceberg mr hive HiveIcebergStorageHandler insert数据

随机推荐

  • 入门级题解3. 无重复字符的最长子串

    题目 给定一个字符串 s 请你找出其中不含有重复字符的最长子串的长度 思路 这样一来 我们就可以使用 滑动窗口 来解决这个问题了 我们使用两个指针表示字符串中的某个子串 或窗口 的左右边界 其中左指针代表着上文中 枚举子串的起始位置 而右指
  • Niagara官方示例笔记 - 盘点自带重要模块

    Emitter State life cycle生命周期控制 发射器选择system 所有发射器都在system的state里设置生命周期 选择self 发射器独立控制 可以给发射器创建不同类型变量 使用set parameter模块计算
  • 【Vegas原创】ORA-16040 standby destination archive log file is locked解决

    ORA 16040 standby destination archive log file is locked Cause The target standby destination archive log file is curren
  • serverless与容器优缺点

    容器优势 1 可移植性 使用容器 开发人员可以确保他们的应用程序可以在任何云平台或本地服务器上运行 2 轻量化 容器镜像以层叠加 在本地拥有镜像层缓存 计算资源使用方面 容器也比虚拟机更高效 3 快速启动 容器启动在镜像只读层上叠加一层读写
  • 谈谈我们公司如何做Code Review

    研发中心团队越来越庞大了 开发人员越来越多了 和他们聊天过程中 发现开发人员对代码技能的提升很迷茫 诉求越来越浓厚 只不过一个接一个的项目交付没有给他们太多停留的时间 在这种情况下如何给团队营造浓厚的工程师交流氛围呢 方法有多种 最近进行了
  • 35+老测试员生涯回顾,揭秘无力吐槽的自动化真相…

    不知道从什么时候开始 软件测试行业就和 自动化 这个词联系在一起了 对于如今的测试人来说 几乎没有人不知道 自动化测试 甚至查看各大招聘网站 你从任何一个招聘渠道来看最近两年对测试岗位的要求 几乎都要求会自动化测试 而不少人一直认为手工测试
  • JS获取阴历+阳历时间

    1 阴历 获取阴历 start getLunar var nyear var nmonth var nday 1 var nwday var nhrs var nmin var nsec var lmonth lday lleap 农历参数
  • 海思麒麟985性能简介

    海思麒麟985 SoC由中国台湾积体电路制造有限公司打造 是麒麟980的升级改良版 率先使用7nm工艺制作 是对上一代10nm芯片的改进 主要在功耗和性能上做了较大改进 麒麟985大致参数为1 3 4 CPU架构 8核Mali G77 GP
  • mali GPU 官网指南

    1 简介 GPU 图形处理单元 是一种专门在个人电脑 工作站 游戏机和移动设备上图形运算工作的微处理器 以前GPU主要用于图形处理 现在GPU的通用计算技术也得到了飞速发展 事实证明在浮点运算 并行计算等部分计算方面 GPU可以提供数十倍乃
  • 【python】python如何从一个文件中引入另一个文件中的变量

    直接和导入python的函数一样导入变量名即可 十分方便 from target file import variant name
  • STM32学习笔记五、RST复位

    1 STM32硬复位 STM32片内已经有复位电路了 可以不外接复位电路 复位引脚一般不宜悬空 所以STM32在NRST引脚内接了一个上拉电阻 典型值为40K 为了防止外部干扰 STM32数据手册上建议外接一个对地电容 如果用户认为内部上拉
  • java后端接入微信小程序登录功能

    java后端接入微信小程序登录功能 前言 此文章是Java后端接入微信登录功能 由于项目需要 舍弃了解密用户信息的session key 只保留openid用于检索用户信息 后端框架 spring boot 小程序框架 uniapp 流程概
  • 【ROS】虚拟机VMware 安装ROS 一条龙教程+部分报错解决

    前言 Linux下安装ROS真是太多坑了 如何在Linux下安装ROS呢 博主带你少走弯路 目录 前言 第一步 配置软件源 1 打开设置 2 打开软件与更新 3 选源 第二步 设置sources list 第三步 设置密钥 第四步 正式安装
  • C#中断点不能调试问题(当前不会命中断点,还没有为该文档加载任何资料 )

    1 winform 程序中 经常会出现的一个错误 断点不可调试 1 当前不会命中断点 还没有为该文档加载任何资料 问题原因 窗口所在的类库或者项目在应用程序目录中 release或者debug 中只生成了dll文件 没有生成pdb文件 例如
  • css如何实现盒子在鼠标点,掌握CSS定位,才能让“盒子”飞得更高更远更稳

    众所周知 前端CSS中 盒模型 浮动 定位为必须掌握的三座大山 今天就来聊聊定位的那些事 定位是什么 先来看看哪些场景用到定位 如下图所示 凡是有盒子压住另一个盒子的地方都可定位 因为用浮动做不了 如果盒子浮动 会并排但不会出现有层级的观感
  • STM32F4 IAP

    功能实现 正常上电或复位后运行用户Bootloader程序 检查变量存储区的标志位 如果标志位为APP FLAG则跳转到APP程序运行 如果标志位为BOOT FLAG 则运行用户Bootloader程序 等待接收文件并准备IAP升级后跳转到
  • (数据挖掘-入门-8)基于朴素贝叶斯的文本分类器

    主要内容 1 动机 2 基于朴素贝叶斯的文本分类器 3 python实现 一 动机 之前介绍的朴素贝叶斯分类器所使用的都是结构化的数据集 即每行代表一个样本 每列代表一个特征属性 但在实际中 尤其是网页中 爬虫所采集到的数据都是非结构化的
  • Android界面设计:Material Design之下拉刷新

    目录 下拉刷新的核心类 SwipeRefreshLayout 下拉刷新的核心类 SwipeRefreshLayout 下拉刷新这种功能并不是什么新鲜的东西 所有的应用里都会有这个功能 把想要实现下拉刷新功能的控件放置到SwipeRefres
  • 【每日一题】字符串中找出连续最长的数字串(字符串、贪心)

    题目来源 牛客网 链接 字符串中找出连续最长的数字串 题目描述 读入一个字符串str 输出字符串str中的连续最长的数字串 输入描述 测试输入包含1个测试用例 一个字符串str 长度不超过255 输出描述 在一行内输出str中里连续最长的数
  • 数仓建模理论——高质量数据建模

    数仓质量 数据模型的概念和意义 DIKW 低质量数据模型十宗罪 低质量数据模型的影响 数仓必备技能 1 建模基础 实体 2 建模基础 属性 Attribute 3 域 Domain NULL值的处理 规范化 范式 第一范式 原子性 没有重复