数据仓库面试总结

news2025/1/16 16:02:16

文章目录

  • 1.什么是数据仓库?
  • 2.ETL是什么?
  • 3.数据仓库和数据库的区别(OLTP和OLAP的区别)
  • 4.数据仓库和数据集市的区别
  • 5.维度分析
    • 5.1 什么是维度?
    • 5.2什么是指标?
  • 6.什么是数仓建模?
  • 7.事实表
  • 7.维度表
  • 8.维度建模的三种模型
  • 9.缓慢渐变维(SCD)
  • 10.数据仓库分层
    • 10.1为什么要分层?
    • 10.2数仓分层
    • 10.3什么叫做维度退化?
  • 11.构建数据仓库相关组件
    • 11.1oozie
    • 11.2sqoop

1.什么是数据仓库?

  1. 概念
    存储数据的仓库, 主要是用于存储过去既定发生的历史数据, 对这些数据进行数据分析的操作, 从而对未来提供决策支持
  2. 四大特征
  • 面向于主题的: 面向于分析, 分析的内容是什么 什么就是我们的主题
  • 集成性: 数据是来源于各个数据源, 将各个数据源数据汇总在一起
  • 非易失性(稳定性): 存储在数据仓库中数据都是过去既定发生数据, 这些数据都是相对比较稳定的数据, 不会发生改变
  • 时变性: 随着的推移, 原有的分析手段以及原有数据可能都会出现变化(分析手动更换, 以及数据新增)

2.ETL是什么?

抽取 转换 加载

从数据源将数据灌入到ODS层, 以及从ODS层将数据抽取出来, 对数据进行转换处理工作, 最终将数据加载到DW层, 然后DW层对数据进行统计分析, 将统计分析后的数据灌入到DA层, 整个全过程都是属于ETL范畴

狭义上ETL: 从ODS层到DW层过程

3.数据仓库和数据库的区别(OLTP和OLAP的区别)

OLTP:联机事务处理
OLAP:联机分析处理

  • 数据库(OLTP): 面向于事务(业务)的 , 主要是用于捕获数据 , 主要是存储的最近一段时间的业务数据, 交互性强,一般不允许出现数据冗余
  • 数据仓库(OLAP): 面向于分析(主题)的 , 主要是用于分析数据, 主要是存储的过去历史数据 , 交互性较弱 ,可以允许出现一定的冗余

在这里插入图片描述

4.数据仓库和数据集市的区别

  • 数据仓库其实指的集团数据中心: 主要是将公司中所有的数据全部都聚集在一起进行相关的处理操作 (ODS层),此操作一般和主题基本没有什么太大的关系

  • 数据的集市(小型数据仓库): 在数据仓库基础之上, 基于主题对数据进行抽取处理分析工作, 形成最终分析的结果

    一个数据仓库下, 可以有多个数据集市

5.维度分析

5.1 什么是维度?

维度一般指的分析的角度, 看待一个问题的时候, 可以多个角度来看待, 而这些角度指的就是维度

比如: 有一份2020年订单数据, 请尝试分析
可以从时间, 地域 , 商品, 来源 , 用户…

  1. 维度的分类:
    - 定性维度: 指的计算每天 每月 各个的维度 , 一般来说定性维度的字段都是放置在group by 中
    - 定量维度: 指的统计某一个具体的维度或者某一个范围下信息, 比如说: 2020年度订单额, 统计20~30岁区间人群的人数 ,一般来说这种维度的字段都是放置在where中

维度的下钻和上卷: 以某一个维度为基准, 往细化统计的过程称为下钻, 往粗粒度称为上卷
比如: 按照 天统计, 如果需要统计出 小时, 指的就是下钻, 如果需要统计 季度 月 年, 称为上卷统计

5.2什么是指标?

指标是衡量事务发展的标准,也叫度量,如价格,销量等;指标可以求和、求平均值等计算。
指标的分类:

  • 绝对指标: 计算具体的值指标
    count() sum() max() min() avg()
  • 相对指标: 计算比率问题的指标
    转化率, 流失率, 同比

6.什么是数仓建模?

数仓建模指的是如何在hive中构建表, 数仓建模中主要提供两种理论来进行数仓建模操作: 三范式建模维度建模理论

  • 三范式建模: 主要是存在关系型数据库建模方案上, 主要规定了比如建表的每一个表都应该有一个主键, 数据要经历的避免冗余发生等等

  • 维度建模: 主要是存在分析性数据库建模方案上, 主要一切以分析为目标, 只要是利于分析的建模, 都是OK的, 允许出现一定的冗余, 表也可以没有主键

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

7.事实表

事实表: 事实表一般指的就是分析主题所对应的表,每一条数据用于描述一个具体的事实信息, 这些表一般都是一坨主键(外键)和描述事实字段的聚集
在这里插入图片描述
事实表的分类:

  1. 事务事实表:
    保存的是最原子的数据,也称“原子事实表”或“交易事实表”。沟通中常说的事实表,大多指的是事务事实表。
  2. 周期快照事实表:
    周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,时间间隔如每天、每月、每年等等
    周期表由事务表加工产生
  3. 累计快照事实表:
    完全覆盖一个事务或产品的生命周期的时间跨度,它通常具有多个日期字段,用来记录整个生命周期中的关键时间点

7.维度表

维度表: 指的在对事实表进行统计分析的时候, 基于某一个维度, 这个维度信息可能在其他表中, 而这些表就是维度表

维度表并不一定存在, 但是维度是一定存在:
比如: 根据用户维度进行统计, 如果在事实表只存储了用户id, 此时需要关联用户表, 这个时候就是维度表
比如: 根据用户维度进行统计, 如果在事实表不仅仅存储了用户id,还存储用户名称, 这个时候有用户维度, 但是不需要用户表的参与, 意味着没有这个维度表

维度表的分类:

  • 高基数维度表: 指的表中的数据量是比较庞大的, 而且数据也在发生的变化
    例如: 商品表, 用户表

  • 低基数维度表: 指的表中的数据量不是特别多, 一般在几十条到几千条左右,而且数据相对比较稳定
    例如: 日期表,配置表,区域表

8.维度建模的三种模型

  1. 星型模型
  • 特点: 只有一个事实表, 那么也就意味着只有一个分析的主题, 在事实表的周围围绕了多个维度表, 维度表与维度表之间没有任何的依赖
  • 反映数仓发展初期最容易产生模型
  1. 雪花模型
  • 特点: 只有一个事实表, 那么也就意味着只有一个分析的主题, 在事实表的周围围绕了多个维度表, 维度表可以接着关联其他的维度表
  • 反映数仓发展出现了畸形产生模型, 这种模型一旦大量出现, 对后期维护是非常繁琐, 同时如果依赖层次越多, SQL分析的难度也会加大
  • 此种模型在实际生产中,建议尽量减少这种模型产生
  1. 星座模型
  • 特点: 有多个事实表, 那么也就意味着有了多个分析的主题, 在事实表的周围围绕了多个维度表, 多个事实表在条件符合的情况下, 可以共享维度表
  • 反映数仓发展中后期最容易产生模型

9.缓慢渐变维(SCD)

缓慢渐变维,即维度中的属性可能会随着时间发生改变

解决办法:

  • SCD1: 直接覆盖, 不维护历史变化数据
    主要适用于: 对错误数据处理
  • SCD2:不删除、不修改已存在的数据, 当数据发生变更后, 会添加一条新的版本记录的数据, 在建表的时候, 会多加两个字段(起始时间, 截止时间), 通过这两个字段来标记每条数据的起止时间 , 一般称为拉链表
    好处: 适用于保存多个历史版本, 方便维护实现
    弊端: 会造成数据冗余情况, 导致磁盘占用率提升
  • SCD3: 通过在增加列的方式来维护历史变化数据
    好处: 减少数据的冗余, 适用于少量历史版本的记录以及磁盘空间不是特别充足情况
    弊端: 无法记录更多的历史版本, 以及维护比较繁琐

10.数据仓库分层

10.1为什么要分层?

分层可以使数据层次清晰、依赖关系直观

数据分层却可以给我们带来如下的好处:

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

10.2数仓分层

  • ODS层: 源数据层
    作用: 对接数据源, 和数据源的数据保持相同的粒度(将数据源的数据完整的拷贝到ODS层中)
    注意:
    如果数据来源于文本文件, 可能会需要先对这些文本文件进行预处理(spark)操作, 将其中不规则的数据, 不完整的数据, 脏乱差的数据先过滤掉, 将其转换为一份结构化的数据, 然后灌入到ODS层

  • DW层: 数据仓库层
    作用: 进行数据分析的操作

    • DWD层: 明细层
      作用: 用于对ODS层数据进行清洗转换工作 , 以及进行少量的维度退化操作
      少量:
      1) 将多个事实表的数据合并为一个事实表操作
      2) 如果维度表放置在ODS层 一般也是在DWD层完成维度退化
    • DWM层: 中间层
      作用: 1) 用于进行维度退化操作 2) 用于进行提前聚合操作(周期快照事实表)
    • DWS层: 业务层
      作用: 进行细化维度统计分析操作
  • DA层: 数据应用层
    作用: 存储DW层分析的结果, 用于对接后续的应用(图表, 推荐系统…)

    例如:
    比如DWS层的数据表完成了基于订单表各项统计结果信息, 但是图表只需要其中销售额, 此时从DWS层将销售额的数据提取出来存储到DA层

  • DIM层: 维度层
    作用: 存储维度表数据

10.3什么叫做维度退化?

维度退化是为了减少维度表的关联工作

做法: 将数据分析中可能在维度表中需要使用的字段, 将这些字段退化到事实表中, 
这样后续在基于维度统计的时候, 就不需要在关联维度表, 事实表中已经涵盖了维度数据了

例如:	订单表, 原有订单表中只有用户id, 当我们需要根据用户维度进行统计分析的时候, 
此时需要关联用户表, 找到用户的名称, 那么如果我们提前将用户的名称放置到订单表中, 
那么是不是就不需要关联用户表, 而则就是维度退化

好处: 减少后续分析的表关联情况
弊端: 造成数据冗余

11.构建数据仓库相关组件

11.1oozie

  1. 什么是oozie
    Oozie是一个用于管理Apache Hadoop作业的工作流调度程序系统

    Oozie由Cloudera公司贡献给Apache的基于工作流引擎的开源框架,是用于Hadoop平台的开源的工作流调度引擎,是用来管理Hadoop作业,属于web应用程序,由Oozie client和Oozie Server两个组件构成,Oozie Server运行于Java Servlet容器(Tomcat)中的web程序。

  2. 什么是工作流?

    工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。

  3. 能够使用工作流完成的业务一般具有什么特点呢?

  • 整个业务流程需要周期性重复干
  • 整个业务流程可以被划分为多个阶段
  • 每一个阶段存在依赖关系,前序没有操作, 后续也无法执行

如果发现实际生产中的某些业务满足了以上特征, 就可以尝试使用工作流来解决

11.2sqoop

一个用户进行数据的导入导出的工具, 主要是将关系型的数据库(MySQL, oracle…)导入到hadoop生态圈(HDFS,HIVE,Hbase…) , 以及将hadoop生态圈数据导出到关系型数据库中

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

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

相关文章

StarRocks实战——华米科技埋点分析平台建设

目录 前言 一、原有方案及其痛点 二、引入StarRocks 三、方案改造 3.1 架构设计 3.2 数据流程 3.3 性能指标 3.4 改造收益 前言 华米科技是一家基于云的健康服务提供商,每天都会有海量的埋点数据,以往基于HBase建设的埋点计算分析项目往往效率上…

号卡极团分销管理系统 index.php SQL注入漏洞复现

0x01 产品简介 号卡极团分销管理系统,同步对接多平台,同步订单信息,支持敢探号一键上架,首页多套UI+商品下单页多套模板,订单查询支持实时物流信息、支持代理商自定义域名、泛域名绑定,内置敢探号、172平台、号氪云平台第三方接口以及号卡网同系统对接! 0x02 漏洞概述…

在ssh 工具 Linux screen会话中使用鼠标进行上下滚动

经过几次发现 除xshell外, WindTerm finalshell MobaXterm 都是进入会话后,发现其界面无法滚动屏幕向上查看 如果想要在Linux screen会话中使用鼠标进行上下滚动。必须首先进入该screen的回滚(scrollback模式)才能进行上下滚动 第一步&#xff…

RobotFramework测试框架(2)-测试用例

创建测试数据 测试数据语法 这里的测试数据就是指的测试用例。 测试文件组织 测试用例的组织层次结构如下: 在测试用例文件( test case file )中建立测试用例 一个测试文件自动的建成一个包含了这些测试用例的测试集( test s…

TCP/IP协议、HTTP协议和FTP协议等网络协议包简介

文章目录 一、常见的网络协议二、TCP/IP协议1、TCP/IP协议模型被划分为四个层次2、TCP/IP五层模型3、TCP/IP七层模型 三、FTP网络协议四、Http网络协议1、Http网络协议简介2、Http网络协议的内容3、HTTP请求协议包组成4、HTTP响应协议包组成 一、常见的网络协议 常见的网络协议…

A First Course in the Finite Element Method【Daryl L.】|PDF电子书

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

STM32 PWM方式读取AS5600磁编码器数据

HAL STM32 PWM方式读取AS5600磁编码器获取角度例程 📍相关篇《STM32 软件I2C方式读取AS5600磁编码器获取角度例程》 📌《HAL STM32 硬件I2C方式读取AS5600磁编码器获取角度例程》 🍁先通过IIC读取的角度值和逻辑分析仪抓取的AS5600 OUT引脚…

超越聊天机器人:语言模型揭秘

原文:More than a Chatbot 译者:飞龙 协议:CC BY-NC-SA 4.0 致谢 我要感谢激励我写这本书的跨学科项目合作伙伴,特别是“BIAS:减轻劳动力市场 AI 多样性偏见”地平线欧洲项目,以及我的研究小组和其他研究同…

MySQL-逻辑架构:逻辑架构分析、SQL执行流程、数据库缓冲池

逻辑架构 1. 逻辑架构剖析 1.1 第1层:连接层 系统(客户端)访问MySQL服务器前,做的第一件事就是建立TCP连接。 经过三次握手建立连接成功后,MySQL服务器对TCP传输过来的账号密码做身份认证、权限获取。 用户名或密码…

玩转ChatGPT:Kimi测评(图片识别)

一、写在前面 ChatGPT作为一款领先的语言模型,其强大的语言理解和生成能力,让无数用户惊叹不已。然而,使用的高门槛往往让国内普通用户望而却步。 最近,一款由月之暗面科技有限公司开发的智能助手——Kimi,很火爆哦。…

【Latex】参考文献标号未对齐解决方案

Latex写论文时发现最后参考文献标号出现如下没有对齐的情况: 解决方案: 将参考文献开始出的序号1改为99(或者其他大点的数字也可以) ⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇

非关系型数据库-----------探索Redis支持五种数据类型

目录 一、Redis支持五种数据类型 1.String(字符串) 2.Hash(哈希) 3.List(列表) 4.Set(集合) 5.sorted set(有序集合) 二、Redis的字符串类型string 1、 SET/GET/APPEND/STRL…

【考研经验贴】24考研860软件工程佛系上岸经验分享【丰富简历、初复试攻略、导师志愿、资料汇总】

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文讲解24考研860软件工程佛系上岸经验分享【丰富简历、初复试攻略、导师志愿、资料汇总】,期待与你一同探索、学习、进步,一起卷起来叭! 目…

动态多目标优化:进化动态约束多目标优化测试集DCP1-DCP9的TruePF(提供MATLAB代码)

一、Evolutionary Dynamic Constrained Multiobjective Optimization Test Suite 以最小化为例,带约束的动态多目标优化问题(Evolutionary Dynamic Constrained Multiobjective Optimization )的数学描述如下: min ⁡ x ∈ S ( t ) ⊂ R n f ( x , t ) …

腾讯云4核8G服务器性能怎么样?能用来干什么?

腾讯云4核8G服务器多少钱?腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月,活动页面 txybk.com/go/txy 活动链接打开如下图所示: 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器,详细配置为:轻量4核…

【Linux】vim 编辑器

Linux 系统自带了 gedit 和 vi 编辑器,gedit 是图形化界面的操作,而 vi 由比较难用,所以建议安装 vim 编辑器,vim 是从 vi 发展出来的一个文本编辑器,相当于增强版的 vi ,其代码补完、编译及错误跳转等功能…

python-django物流仓储进销存配送管理系统flask_1ea2k

实现了一个完整的物流管理系统,其中主要有站点信息模块、物流进度模块、用户表模块、司机模块、入库信息模块、签收信息模块、类型模块、快递信息模块、客户模块、客服模块、公告信息模块、服务类型模块、配置文件模块、出库信息模块、车辆信息模块、仓管模块、账户…

【蓝桥杯选拔赛真题55】C++最长路线 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解

目录 C最长路线 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C最长路线 第十四届蓝桥杯青少年创意编程大赛C选拔赛真题 一、题目要求 1、编程实现 有一个N*M的矩阵,且矩阵…

【Java基础】Java基础知识整合

文章目录 1. 转义字符2. 变量2.1 字符串与整型相加2.2 byte和short的区别2.3 float和double的区别2.4 char类型2.5 boolean类型2.6 自动类型转换及运算2.7 强制类型转换2.8 String的转换2.9 除法运算2.10 取模规则 3. 自增4. 逻辑运算符5. 赋值运算 6. 三元运算符:7…

golang设计模式图解——模板方法模式

设计模式 GoF提出的设计模式有23个,包括: (1)创建型(Creational)模式:如何创建对象; (2)结构型(Structural )模式:如何实现类或对象的组合; (3&a…