hive数仓要点总结

1.OLTP和OLAP区别

OLTP(On-Line Transaction Processing)即联机事务处理,也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一,特点是事务操作频繁,数据量小。

OLAP(On-Line Analytical Processing)即联机分析处理,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。这类系统的特点是没有事务性操作,主要是查询操作,数据量大。

对比项目

OLTP

OLAP

功能

面向交易的事务处理

面向分析查询

设计

面向业务

面向主题

数据

最新数据,二维数据

历史数据,多维数据

存储

M,G ( 存储单位 )

T、P、E

响应时间

用户

业务操作人员

管理决策人员

2.什么是数据仓库

      数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、数据集成的(Integrated)、相对稳定(非易失)的(Non-Volatile)、反映历史变化(时变)(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。

3.什么是维度分析

3.1什么是维度

维度就是看问题的角度,给你一个数据表,怎么分析,怎么看就是属于维度范畴

比如2025年的订单数据,怎么分析,可以从时间(月份)分析,商品质量分析,用户分析,这个就是维度

维度分为定性维度定量维度两种,定性维度就是字符类型的特征,比如区域维度包括全国各省份;定量维度就是数值类型的特征,如价格区间、销量区间等,如价格区间维度分为0--100、100-1000两个区间,可以按价格区间维度来对指标进行分析.

3.2什么是指标

指标就是从维度方向得到的数据进行进一步考量产生的度量值,常见的比如count(),sum(),max()等等.

指标分为绝对数值相对数值,绝对数值反映具体的大小和多少,如价格、销量、分数等;相对数值反映一定的程度,如及格率、购买率、涨幅等。

综上:维度分析就是针对一个主题,,从不同维度进行统计分析,从而得到各种指标的过程

4.什么是维度分层

通常在分析结果中首先看到的是一个总数,比如全年课程购买量,然后会详细去看每个季度、每个月的课程购买量,全年、季度、月这些属于时间维度的一个层次,年、季度、月是这个层次的三个级别;再比如按地区分析课程购买量,全国、省、市、县属于地区维度的一个层次,层次中共有四个级别。

相当于将维度进行细分。细分两层,则维度包含一个层次,多个级别。 细分三层,则维度包含多个层次,多个级别。

eg:

时间维度:

一个层次四个级别:年、月、天、小时

课程维度:

课程名称:只有一个级别,每门课程的名称

课程分类:两个级别,大类和小类

课程难度:只有三个级别,简单、一般、难

课程等级:只有三个级别,初、中、高

地区维度:

一个层次三个级别:省、市、县

5.什么是下钻,上卷

获取高级别的汇总信息的过程叫上卷,把获取低级别的明细信息的过程叫下钻,比如:课程访问量分析,时间维度有四个级别,分别是年、月、天、小时,现在我们某个级别分析每天的课程访问量,比如按天分析课程访问量,此时我们可以按小时下钻分析,得出一天内每小时的课程访问量,也可以按月上卷,得到月度的课程访问量。

下钻维度:

天、小时

上卷维度:

年、月

6.什么是数仓建模?建模种类有哪些?

数仓建模简单来讲就是在hive中建表,建表思路和数仓怎么去设计的方案。两种:

三范式建模法:基于减少数据冗余

     定义:要求一个数据库表内的每一个数据项都是不可再分割的原子数据项,并确保每一个表只围绕一个主题,且表中的字段都依赖于主键。

  • 优点
    • 减少数据冗余
    • 提高数据一致性:由于数据的更新只需在一个地方进行,然后通过关联关系自动反映到其他相关表中,从而保证了数据的一致性。例如,当员工的部门发生变更时,只需在员工部门信息表中更新一次,其他相关表中的员工部门信息就会通过关联关系自动更新。

维度建模法:基于分析

      维度数据模型应用于自下向上的数据仓库架构。简称DM(Dimensional modeling),维度数据模型是一种趋向于支持最终用户对数据仓库进行查询的设计技术,是围绕性能和易理解性构建的。维度模型是按照用户看待或分析数据的角度来组织数据。

      维度建模的两个核心概念:事实表和维度表

7.什么是事实表和维度表?

事实表:

      记录了特定事件的数字化信息,一般由数值型数字和指向维度表的外键组成。事实表的设计依赖于业务系统,事实表的数据就是业务系统的指标数据。数据分析的实质就是基于事实表开展的计算操作。

分类:

  1. 事务事实表:记录的事务层面的事实,保存的是最原子的数据,也称“原子事实表”或“交易事实表”。事务事实表中的数据在事务事件发生后产生,数据的粒度通常是每个事务一条记录。一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新。沟通中常说的事实表,大多指的是事务事实表。
  2. 周期快照事实表:(加快查询速率)

    Periodicsnapshot fact table,周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,时间间隔如每天、每月、每年等等。典型的例子如销售日快照表、库存日快照表等。

    想象以下场景,需要统计一个季度的商品成交量怎么去做?如果用一个季度内的事实事务表进行计算,虽然可以得出结果但是效率太低,在实际生产中并不可行,因此,需要定期对指定的度量进行整合,作为周期快照表用于下游应用。一般设计事实表时,事务事实表和周期快照表是成对设计的,大部分的周期表由事务表加工产生,还有部分特殊数据是直接应用系统产生(如订单评价)。

  3. 累积快照事实表:

    Accumulatingsnapshot fact table,累积快照事实表和周期快照事实表有些相似之处,它们存储的都是事务数据的快照信息。但是它们之间也有着很大的不同,周期快照事实表记录的确定的周期的数据,而累积快照事实表记录的不确定的周期的数据。

    累积快照事实表代表的是完全覆盖一个事务或产品的生命周期的时间跨度,它通常具有多个日期字段,用来记录整个生命周期中的关键时间点。例如订单累计快照事实表会有付款日期,发货日期,收货日期等时间点。

特点

事务事实

周期快照事实

累积快照事实

时间/时期

时间

时期

时间跨度较短的多个时点

粒度

每行代表一个事务事件

每行代表一个时间周期

每行代表一个业务周期

事实表加载

新增

新增

新增和修改

事实表更新

不更新

不更新

新事件产生时更新

时间维

业务日期

时期末

多个业务过程的完成日期

事实

事务活动

时间周期内的绩效

限定多个业务阶段内的绩效

维度表:

     在进行事实表的统计分析时,用到的外键(其他表的主键),这个其他表就是维度表,维度表不一定存在,而维度一定存在。

    分类:

  1. 高基数维度数据:数据量大,而且表数据经常变化,一般是用户资料表、商品资料表类似的表。
  2. 低基数维度数据:数据量小,而且不经常变化一般是配置表,比如枚举值对应的中文含义,或者日期维表、地理维表等。

注:基数指的是一个字段中不同值的个数,比如主键列具有唯一值,所以具有最高的基数,而性别枚举值(日期、地区等)这样的列的基数就很低。

8.有哪些维度建模中建模方法?

1.星型模型:

          是一种多维的数据关系。一个事实表为中心,多个维度表环绕周围。一个星型模型中可以有一个或多个事实表,每个事实表可以引用任意数量的维度表。

2.雪花模型:(维护不便,sql分析难度加大)(生产中尽量减少,去优化它们)

         当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展,它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。

模型之间共享,维度一样的可以合成一个

9.什么是渐变维(SCD)

      维度可以根据变化剧烈程度主要分为无变化维度变化维度。例如一个人的相关信息,身份证号、姓名和性别等信息数据属于不变的部分;而婚姻状态、工作经历、工作单位和培训经历等属于可能会变化的字段。

      为了减少维度变化带来的分析误差,出现了SCD

分类:

1.SCD1(缓慢渐变类型1)

    通过更新维度记录直接覆盖已存在的值。不维护记录的历史。一般用于修改错误的数据,即历史数据就是错误数据,除此没有他用

总结:将错误数据重写

2.SCD2(缓慢渐变类型2)

    在源数据发生变化时,给维度记录建立一个新的“版本”记录,从而维护维度历史。SCD2不删除、不修改已存在的数据。SCD2也叫拉链表

    通过起始时间(valid From)来标识,Valid To(封链时间)为 NULL 的标识当前数据,也可以用2999,3000,9999等等比较大的年份。数仓内部需要保持统一。每个版本都会产生一行新的数据。eg:

总结:形成拉链表维护数据,适用保存历史,会造成冗余

3.SCD3(缓慢渐变类型3)

    修改数据时去增加列(修改的字段),弊端为维护麻烦,需次次修改表结构(增加列)

10.为什么要数仓分层?怎么分

      为了自己的数据能够有秩序地流转,数据的整个生命周期能够清晰明确被设计者和使用者感知到。

  1. 清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解。
  2. 复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题。
  3. 便于维护:当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
  4. 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少重复开发的工作量。
  5. 高性能:数据仓库的构建将大大缩短获取信息的时间,数据仓库作为数据的集合,所有的信息都可以从数据仓库直接获取,尤其对于海量数据的关联查询和复杂查询,所以数据仓库分层有利于实现复杂的统计需求,提高数据统计的效率。

分层方法:

  1. 源数据ODS)

此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。

     2.数据仓库层DW)

DW 层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。

此层可以细分为三层:

明细层DWD(Data Warehouse Detail):存储明细数据,此数据是最细粒度的事实数据。该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。

中间层DWM(Data WareHouse Middle):存储中间数据,为数据统计需要创建的中间表数据,此数据一般是对多个维度的聚合数据->(周期快照事实表),此层数据通常来源于DWD层的数据。

业务层DWS(Data WareHouse Service):存储宽表数据,此层数据是针对某个业务领域的聚合数据,应用层的数据通常来源与此层,为什么叫宽表,主要是为了应用层的需要在这一层将业务相关的所有数据统一汇集起来进行存储,方便业务层获取。此层数据通常来源与DWD和DWM层的数据。

在实际计算中,如果直接从DWD或者ODS计算出宽表的统计指标,会存在计算量太大并且维度太少的问题,因此一般的做法是,在DWM层先计算出多个小的中间表,然后再拼接成一张DWS的宽表。由于宽和窄的界限不易界定,也可以去掉DWM这一层,只留DWS层,将所有的数据在放在DWS亦可。

     3.数据DA)

前端应用直接读取的数据源;根据报表、专题分析的需求而计算生成的数据。

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

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

相关文章

【实战手册】8000w数据迁移实践:MySQL到MongoDB的完整解决方案

🔥 本文将带你深入解析大规模数据迁移的实践方案,从架构设计到代码实现,手把手教你解决数据迁移过程中的各种挑战。 📚博主其他匠心之作,强推专栏: 小游戏开发【博主强推 匠心之作 拿来即用无门槛】文章目录 一、场景引入1. 问题背景2. 场景分析为什么需要消息队列?为…

运行小程序需要选择什么配置的服务器

主要是看有多少人浏览,如果是每天有几十个人浏览,通常2核或者4核就可以满足需求,内存的话建议4g或者8g,足够的内存可以使服务器同时处理多个请求,避免因内存不足导致的卡顿或程序崩溃。 硬盘存储方面,50GB…

基于SpringBoo的地方美食分享网站

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

Solidity私有函数和私有变量区别,私有变量可以被访问吗

web3面试题 私有函数和私有变量区别,私有变量可以被访问吗 ChatGPT said: 在 Web3 开发,尤其是使用 Solidity 编写智能合约时,关于私有函数和私有变量的区别是常见的面试题。下面是详细解析: ✅ 私有函数(Private Fu…

mongodb 安装配置

1.下载 官网下载地址:MongoDB Community Download | MongoDB 2.使用解压包 解压包安装:https://pan.baidu.com/s/1Er56twK9UfxoExuCPlJjhg 提取码: 26aj 3.配置环境: (1)mongodb安装包位置: &#xf…

多模态大语言模型arxiv论文略读(十九)

MLLMs-Augmented Visual-Language Representation Learning ➡️ 论文标题:MLLMs-Augmented Visual-Language Representation Learning ➡️ 论文作者:Yanqing Liu, Kai Wang, Wenqi Shao, Ping Luo, Yu Qiao, Mike Zheng Shou, Kaipeng Zhang, Yang Yo…

[LeetCode 45] 跳跃游戏2 (Ⅱ)

题面: LeetCode 45 跳跃游戏2 数据范围: 1 ≤ n u m s . l e n g t h ≤ 1 0 4 1 \le nums.length \le 10^4 1≤nums.length≤104 0 ≤ n u m s [ i ] ≤ 1000 0 \le nums[i] \le 1000 0≤nums[i]≤1000 题目保证可以到达 n u m s [ n − 1 ] nums[…

前端面试宝典---闭包

闭包介绍 使用闭包: 在函数内声明一个变量,避免外部访问在该函数内再声明一个函数访问上述变量(闭包)返回函数内部的函数使用完毕建议闭包函数null;译放内存 function createCounter() {let count 0;return function () {coun…

GPT4O画图玩法案例,不降智,非dalle

网址如下: 玩法1:吉卜力(最火爆) 提示词:请将附件图片转化为「吉卜力」风格,尺寸不变 玩法2:真人绘制 提示词:创作一张图片,比例4:3,一个20岁的中国女孩…

4.12~4.14【Q】cv homework6

我正在写GAMES101作业6,在这段代码中,我十分想知道inline Intersection Triangle::getIntersection(Ray ray) 是由哪个函数,哪段代码调用的?什么是Inline?详细解释,越细节越好 我正在写GAMES101作业6&…

MATLAB双目标定

前言: 现在有许多双目摄像头在出厂时以及标定好,用户拿到手后可以直接使用,但也有些双目摄像头在出厂时并没有标定。因而这个时候就需要自己进行标定。本文主要介绍基于matlab工具箱的自动标定方式来对双目相机进行标定。 1、MATLAB工具箱标…

visual studio 常用的快捷键(已经熟悉的就不记录了)

以下是 Visual Studio 中最常用的快捷键分类整理,涵盖代码编辑、调试、导航等核心场景: 一、生成与编译 ​生成解决方案 Ctrl Shift B 一键编译整个解决方案,检查编译错误(最核心的生成操作)​编译当前文件 Ctrl F…

Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.

今天写项目的时候碰到一个报错,在网上查找到了解决方法,这里备份一下。防止下次再次遇到 原文章链接:Sass import rules are deprecated and will be removed in Dart Sass 3.0.0. 报错内容如下: Deprecation Warning: Sass i…

【QT】QWidget 概述与核心属性(API)

🌈 个人主页:Zfox_ 🔥 系列专栏:Qt 目录 一:🔥 控件概述 🦋 控件体系的发展阶段 二:🔥 QWidget 核心属性 🦋 核心属性概览🦋 用件可用&#xff08…

Redis 在处理并发请求时,如何保证高效性和数据一致性

1. 单线程模型(核心命令处理) 单线程优势:Redis 的核心命令处理是单线程的(基于内存操作,避免多线程竞争),所有命令按顺序执行,天然避免了多线程的锁竞争和上下文切换开销。非阻塞 …

flutter-Text等组件出现双层黄色下划线的问题

文章目录 1. 现象2. 原因3. 解决方法 1. 现象 这天我正在写Flutter项目的页面功能,突然发现我的 Text 文字出现了奇怪的样式,具体如下: 文字下面出现了双层黄色下划线文字的空格变得很大,文字的间距也变得很大 我百思不得其解&a…

cursor+高德MCP:制作一份旅游攻略

高德开放平台 | 高德地图API (amap.com) 1.注册成为开发者 2.进入控制台选择应用管理----->我的应用 3.新建应用 4.点击添加Key 5.在高德开发平台找到MCP的文档 6.按照快速接入的步骤,进行操作 一定要按照最新版的cursor, 如果之前已经安装旧的版本卸载掉重新安…

使用 IP 代理改 IP 后注意事项如何防封号

在使用一键换IP软件辅助网络营销账号切换时,需注意以下关键事项以确保账号安全并降低封号风险。 一、IP有效性及质量验证 确保更换的IP地址有效且质量高,低质量或失效的IP可能导致账号存活时间缩短。优先选择动态住宅IP(如“兔子IP代理”提…

qt designer 创建窗体选择哪种屏幕大小

1. 新建窗体时选择QVGA还是VGA 下面这个图展示了区别 这里我还是选择默认,因为没有特殊需求,只是在PC端使用

数据可视化 —— 折线图应用(大全)

一、导入需要的库 # Matplotlib 是 Python 最常用的绘图库,pyplot 提供了类似 MATLAB 的绘图接口 import matplotlib.pyplot as plt import numpy as np import pandas as pd 二、常用的库函数 plt.plot(x轴,y轴):plot()是画折线图的函数。 plt.xlabe…