数仓思想、数仓建模、维度建模理论、数仓面试题

news2024/11/17 8:26:36

文章目录

  • 一、数仓建模
    • 1、数仓建模的意义
    • 2、数仓建模方法论
      • 1)ER模型:
      • 2)六范式:
    • 3、维度模型
  • 二、维度建模理论之事实表
    • 1、事务型事实表
    • 2、周期型快照事实表
    • 3、累计型快照事实表
  • 三、维度建模理论之维度表
    • 1、设计步骤
    • 2、设计要点
    • 3、维度变化
    • 4、多值维度和多值属性
  • 四、数仓设计
    • 1、数仓分层规划
    • 2、数仓构建流程


一、数仓建模

1、数仓建模的意义

数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据,以便数据能够高性能、低成本、高效率、高质量的使用

2、数仓建模方法论

1)ER模型:

实体关系模型:

实体关系模型将复杂的数据抽象为两个概念——实体和关系。实体表示一个对象,关系是指两个实体之间的关系。

数据库规范化:

数据库规范化是使用一系列范式设计数据库(通常是关系型数据库)的过程,其目的是减少数据冗余,增强数据的一致性

2)六范式:

1、第一范式(1NF):字段必须是原子的,不能拆分的,比如5台电脑
2、第二范式(2NF):不能存在部分函数依赖,比如学生所在的系跟分数没关系,系单独摘出去
3、第三范式(3NF):不能出现传递依赖,比如学号–> 系名 --> 系主任
4、巴斯-科德范式(BCNF)
5、第四范式(4NF)
6、第五范式(5NF)

3、维度模型

维度模型将复杂的业务通过事实和维度两个概念进行呈现。事实通常对应业务过程,而维度通常对应业务过程发生时所处的环境

事实表: 描述操作的,一般都是动词表,比如订单表 谁在什么时候购买了什么商品。
维度表: 就是名词表 ,比如 用户表 国家表 商品分类

二、维度建模理论之事实表

1、事务型事实表

事务事实表用来记录各业务过程,它保存的是各业务过程的原子操作事件,即最细粒度的操作事件。粒度是指事实表中一行数据所表达的业务细节程度。
事务型事实表可用于分析与各业务过程相关的各项统计指标,由于其保存了最细粒度的记录,可以提供最大限度的灵活性,可以支持无法预期的各种细节层次的统计需求

设计流程:

选择业务过程→声明粒度→确认维度→确认事实

不足:

存量型指标,例如商品库存,账户余额等,需要对两张事务型事实表进行聚合,且需要区分两者对余额或库存的影响(加或减),需要对两张表的全表数据聚合才能得到统计结果,不论是从逻辑上还是效率上考虑,事务型事实表都不是一个好的方案
– 解决方案:可以使用周期快照事实表解决

多事务关联统计(大表join大表)-- 解决方案:累计型快照事实表

2、周期型快照事实表

周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,主要用于分析一些存量型(例如商品库存,账户余额)或者状态型(空气温度,行驶速度)指标

3、累计型快照事实表

累计快照事实表是基于一个业务流程中的多个关键业务过程联合处理而构建的事实表,主要用于分析业务过程(里程碑)之间的时间间隔等需求。例如用户下单到支付的平均时间间隔,使用累积型快照事实表进行统计,就能避免两个事务事实表的关联操作,从而变得十分简单高效

三、维度建模理论之维度表

1、设计步骤

确定维度表 --> 确定主维表和相关维表 --> 确定维度属性(字段)

2、设计要点

规范化是指使用一系列范式设计数据库的过程,其目的是减少数据冗余,增强数据的一致性。
反规范化是指将多张表的数据冗余到一张表,其目的是减少join操作,提高查询性能

在设计维度表时,如果对其进行规范化,得到的维度模型称为雪花模型
如果对其进行反规范化,得到的模型称为星型模型

数据仓库系统的主要目的是用于数据分析和统计,所以是否方便用户进行统计分析决定了模型的优劣。采用雪花模型,用户在统计分析的过程中需要大量的关联操作,使用复杂度高,同时查询性能很差,而采用星型模型,则方便、易用且性能好。所以出于易用性和性能的考虑,维度表一般是很不规范化的

3、维度变化

维度属性通常不是静态的,而是会随时间变化的,数据仓库的一个重要特点就是反映历史的变化,所以如何保存维度的历史状态是维度设计的重要工作之一。保存维度数据的历史状态,通常有以下两种做法,分别是全量快照表和拉链表。

全量快照表:

离线数据仓库的计算周期通常为每天一次,所以可以每天保存一份全量的维度数据。这种方式的优点和缺点都很明显。
优点是简单而有效,开发和维护成本低,且方便理解和使用。 缺点是浪费存储空间,尤其是当数据的变化比例比较低时。

拉链表:

记录每条信息的生命周期,一旦一条记录的生命周期结束,就重新开始一条新的记录,并把当前日期放入生效开始日期。
拉链表适用于数据发生变化频率不高的维度,能够更加高效的保存维度信息的历史状态。

4、多值维度和多值属性

如果事实表中一条记录在某个维度表中有多条记录与之对应,称为多值维度。例如,下单事实表中的一条记录为一个订单,一个订单可能包含多个商品,所以商品维度表中就可能有多条数据与之对应
维表中的某个属性同时有多个值,称之为多值属性,例如商品维度的平台属性和销售属性,每个商品均有多个属性值

四、数仓设计

1、数仓分层规划

[图片]

2、数仓构建流程

[图片]

原子指标:

原子指标基于某一业务过程的度量值,是业务定义中不可再拆解的指标,原子指标的核心功能就是对指标的聚合逻辑进行了定义。我们可以得出结论,原子指标包含三要素,分别是业务过程、度量值和聚合逻辑,例如订单总额就是一个典型的原子指标

派生指标:
派生指标基于原子指标,其与原子指标的关系如下图所示:
[图片]

衍生指标:
衍生指标是在一个或多个派生指标的基础上,通过各种逻辑运算复合而成的。例如比率、比例等类型的指标
[图片]

退货率,就是退货订单次数/下单次数,假如要是改为投诉率,就是投诉订单次数/下单次数,此时下单次数这个派生指标被使用了两次,每次都统计一遍,浪费时间,被重复利用的派生指标可以将结果保存起来,以备后面使用,从而形成了dws层
ads层需要统计的指标,一般都是衍生指标,衍生指标拆分,可以拆分为多个派生指标,哪些派生指标被重复利用,就把这些指标的数据专门创建一个表放在dws层,供ads层重复利用

事实表存储在DWD层,维度表存储在DIM层
公共的派生指标统一保存在数据仓库的DWS层

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2167293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 9.25

手动实现栈、和队列 stack #include <iostream> using namespace std; class Stack { private: int* arr; // 存储栈元素的数组 int top; // 栈顶索引 int capacity; // 栈的容量 public: Stack(int size) { arr new int[size]; c…

uni-app+vue3开发微信小程序使用本地图片渲染不出来报错[渲染层网络层错误]Failed to load local image resource

我把图片放在assets里面页面通过相对路径引入。结果一直报错。 最后我把图片放在static文件夹下面。然后修改路径指向static就可以了 或者是我们必须先import 这个图片然后在使用 import banner1 from ../../assets/images/banner/banner1.png; <image :src"banner…

戴尔迅速应对疑似信息泄露事件,强化数据保护措施|硬盘文件数据销毁 文件销毁 数据销毁

在全球数字化转型的浪潮中&#xff0c;数据已成为企业最宝贵的资产之一&#xff0c;而数据安全则是这一进程中的基石。近期&#xff0c;戴尔公司遭遇了一起疑似大规模信息泄露事件&#xff0c;涉及约4900万用户的信息&#xff0c;这一事件迅速引发了全球范围内的广泛关注。面对…

【开源】 mRemoteNG 一键搞定!推荐一款强大的.NET多协议远程连接管理器

今天给大家推荐一款.NET开发的多协议、选项卡式远程连接管理器mRemoteNG。 mRemoteNG 是 mRemote 的一个分支&#xff1a;一个开源的、标签式的、多协议的、用于 Windows 的远程连接管理器。 mRemoteNG是一个开源的Windows远程连接管理器&#xff0c;它支持多种协议&#xff0c…

交通锥检测系统源码分享

交通锥检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

Python 使用selenium 4.25 进行爬虫(1)

都说python做爬虫比较好&#xff0c;于是我跟着大家的脚步学习python进行爬虫&#xff0c;但是调试了半天&#xff0c;出现各种各样的问题&#xff0c;最终都得到实现了&#xff0c;下面我们来看具体的代码&#xff1a; from selenium import webdriver from selenium.webdriv…

模拟银行操作

设计实现一个银行新用户现金业务办理程序&#xff0c;使其模拟新用户到银行办理现金存取业务时的场景。要求如下&#xff1a; (1)有对于用户到来的欢迎动作、用户离开的提醒动作 (2)有用户的开户、存款和取款动作&#xff0c;在完成开户存款和取款操作后&#xff0c;要提示用…

Godot C# 自定义摄像机

前言 说起来&#xff0c;Unity的社区环境跟插件支持确实要比Godot好很多&#xff0c;比如我们Unity最喜欢的Cinemachine插件&#xff0c;只需要动动手指就能轻松实现很多高级的摄像机动效。 所以一转到Godot就有一种力不从心的感觉&#xff0c;于是既然动不了手指我们就动手。自…

凤凰模拟器V6中无人机如何设置“有头模式”

凤凰模拟器是一款专为航模新手设计的飞行模拟器&#xff0c;它能够模拟大疆无人机、各种穿越机、固定翼等多种飞行器&#xff0c;提供逼真的飞行体验。该软件的操作简单易懂&#xff0c;适合新手练习使用。 一般来说&#xff0c;打开凤凰模拟器&#xff0c;选择好机型&#xf…

快速上手 Hugging Face Transformers:完整模型微调训练步骤全攻略

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;模型微调&#xff08;Fine-Tuning&#xff09;是提升预训练模型在特定任务上表现的关键步骤。本文将详细介绍如何使用 Hugging Face Transformers 库进行模型微调训练&#xff0c;涵盖数据集下载、数据预处理、训练配…

Python发送邮件教程:如何实现自动化发信?

Python发送邮件有哪些方法&#xff1f;如何利用python发送邮件&#xff1f; 无论是工作汇报、客户通知还是个人提醒&#xff0c;邮件都能快速传递信息。Python发送邮件的自动化功能就显得尤为重要。AokSend将详细介绍如何使用Python发送邮件&#xff0c;实现自动化发信&#x…

Mysql 删除表的所有数据

在 MySQL 中&#xff0c;如果你想要删除一个表中的所有数据&#xff0c;可以使用 TRUNCATE TABLE 命令或者 DELETE 语句。下面是两种方法的对比以及如何使用它们&#xff1a; 使用 TRUNCATE TABLE TRUNCATE TABLE 是一个非常快速的方法来删除表中的所有记录&#xff0c;并且它…

我的领域-关怀三次元成长的二次元虚拟陪伴 | OPENAIGC开发者大赛高校组AI创作力奖

在第二届拯救者杯OPENAIGC开发者大赛中&#xff0c;涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到&#xff0c;我们特意开设了优秀作品报道专栏&#xff0c;旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者&#xff0c;希望能带给…

【从0开始自动驾驶】用python做一个简单的自动驾驶仿真可视化界面

【从0开始自动驾驶】用python做一个简单的自动驾驶仿真可视化界面 废话几句废话不多说&#xff0c;直接上源码目录结构init.pysimulator.pysimple_simulator_app.pyvehicle_config.json 废话几句 自动驾驶开发离不开仿真软件成品仿真软件种类多https://zhuanlan.zhihu.com/p/3…

介绍篇| 爬虫工具介绍

什么是网络爬虫 网络爬虫工具本质上是自动化从网站提取数据的软硬件或服务。它简化了网络爬虫&#xff0c;使信息收集变得更加容易。如今是数据和智能化时代, 如何快速、自动化获取数据, 成了个人或者企业进入智能化时代的第一步. 选择最佳网络爬虫工具时的关键因素 在选择最…

Apache DolphinScheduler-1.3.9源码分析(一)

引言 随着大数据的发展&#xff0c;任务调度系统成为了数据处理和管理中至关重要的部分。Apache DolphinScheduler 是一款优秀的开源分布式工作流调度平台&#xff0c;在大数据场景中得到广泛应用。 在本文中&#xff0c;我们将对 Apache DolphinScheduler 1.3.9 版本的源码进…

[uni-app]小兔鲜-02项目首页

轮播图 轮播图组件需要在首页和分类页使用, 封装成通用组件 准备轮播图组件 <script setup lang"ts"> import type { BannerItem } from /types/home import { ref } from vue // 父组件的数据 defineProps<{list: BannerItem[] }>()// 高亮下标 const…

2000-2022年上市公司人工智能词频统计(年报词频统计)/上市公司人工智能水平

2000-2022年上市公司人工智能词频统计&#xff08;年报词频统计&#xff09;/上市公司人工智能水平 1、时间&#xff1a;2000-2022年 2、来源&#xff1a;上市公司年报 3、范围&#xff1a;A股上市公司 4、指标&#xff1a;股票代码、股票简称、年报标题、年份、行业名称、…

火车票有电子发票吗?没纸质火车票怎么报销?

火车票有电子发票吗&#xff1f; 火车票、高铁票目前没有电子发票&#xff0c;但是现在已经实行电子客票&#xff0c;车票即购票证件&#xff0c;乘车时&#xff0c;只需购票证件原件&#xff08;如身份证、护照、临时身份证等&#xff09;即可乘车。 没纸质火车票怎么报销&am…

【视频讲解】非参数重采样bootstrap逻辑回归Logistic应用及模型差异Python实现

全文链接&#xff1a;https://tecdat.cn/?p37759 分析师&#xff1a;Anting Li 本文将深入探讨逻辑回归在心脏病预测中的应用与优化。通过对加州大学欧文分校提供的心脏病数据集进行分析&#xff0c;我们将揭示逻辑回归模型的原理、实现过程以及其在实际应用中的优势和不足…