数据仓库面试题

1 思维导图&数仓常见面试题

在这里插入图片描述

2 题目

1. 数据仓库是什么?

  数据仓库是一个面向主题的(订单、支付、退单等)、集成的(整合多个信息源的大量数据)、非易失的(一般不会进行删除和修改操作)且随时间变化(不是数据会变,而是数据量随着时间增加)的数据集合,主要用于存储历史数据,然后通过分析整理进而提供数据支持和辅助决策。

2. 数据仓库和数据库有什么区别

  1. 数据库中主要存放在线数据,数据仓库中主要存放历史数据,并且存放的数据量比数据库要多的多。
  2. 数据库主要用于业务处理(比如支付系统),数据仓库主要用于数据分析。
  3. 数据库的设计要避免冗余,而数据仓库通常会引入冗余,减少后面分析时的join操作。

3. 为什么要对数据仓库分层

  1. 将复杂的需求简单化(我们通过将复杂的问题分解为多个步骤来完成,每一层只处理单一的步骤,比较容易和理解)
  2. 提高数据的复用性,比如需要中间层的数据,可以直接查询中间层的数据,不必从头开始计算。
  3. 补充说明:数据仓库就是一种以空间换时间的架构

4. 为什么需要数据建模

  随着数据的爆发式增长,如何对数据进行有序、有结构地分类组织和存储是一大挑战。数据建模是对数据存储和组织的一种方法,它强调从业务数据存储和使用角度合理存储数据。有了适合业务的数据模型之后,那么大数据就可以获得以下好处:性能、成本、效率、质量

5. 经典的数据仓库建模方法论有哪些

  • ER模型,这个模型是符合3范式的,它的出发点就是整合数据,将各个系统中的数据按主题进行分类,但是不能直接用于分析决策。
  • 维度模型,维度建模以数据分析作为出发点,为数据分析服务,因此它关注的重点的用户如何更快的完成需求分析以及如何实现较好的大规模复杂查询的响应性能,现在大多数数仓的搭建都是基于维度模型进行搭建的。
  • 区别:ER模型冗余少,在大规模数据跨表分析中,会存在多表关联,大大降低了执行效率。

6. 数仓相关的名词术语解释,比如数据域、业务过程、衍生指标

  • 数据域:将业务过程或者维度进行抽象的集合,例如交易域、商品域等都是数据域。
  • 业务过程:一个不可拆分的行为事件,例如下单、支付、退款等都是业务过程。
  • 维度:用于分析事实所需要的环境,比如时间维度,地理维度等。
  • 维度属性:维度属性属于一个维度,比如地理维度中的国家名称、身份名称都是维度属性
  • 原子指标:原子指标基于某一业务过程的度量值,是业务定义中不可再拆解的指标,原子指标的核心功能就是对指标的聚合逻辑进行了定义。原子指标包含三要素,分别是业务过程度量值聚合逻辑
  • 派生指标:基于原子指标,其与原子指标的关系如下图所示。与原子指标不同,派生指标通常会对应实际的统计需求
    在这里插入图片描述
  • 衍生指标:衍生指标是在一个或多个派生指标的基础上,通过各种逻辑运算复合而成的。例如比率、比例等类型的指标。衍生指标也会对应实际的统计需求。
    在这里插入图片描述

7. 派生指标的种类

  • 事务型指标:对业务活动进行衡量的指标。比如订单支付金额、新发商品数、新增注册会员数。
  • 存量型指标:对实体对象(比如商品、会员)某些状态的统计。
  • 复合型指标:就是衍生指标

8. 经典数仓分层架构

  • ODS层:把业务系统、日志等数据几乎无处理地同步到ODS层中
  • 明细数据层(DWD层):该层存储维度模型的事实表
  • 数据汇总层(DWS层):
  • 公共维度层(DIM层):该层存储维度模型的维度表
  • 应用数据层(ADS层):

9. 模型设计的基本原则

  • 高内聚低耦合:将业务相关、粒度相同地数据设计为同一个物理模型,将高频率同时访问地数据放在一起,将低频率同时访问地数据分开存储。
  • 核心模型于扩展模型分离:核心模型包括地字段支持常用地核心业务,扩展模型包括地字段支持个性化或少量应用的需要。
  • 公共处理逻辑下沉:越是公用的处理逻辑,越应该在数据调度依赖的底层进行封装于实现,不要让公共逻辑多出同时存在。
  • 成本与性能平衡:适当的数据冗余可以换取查询和刷新性能,但不要过度冗余。
  • 数据可回滚:处理逻辑不变,在不同时间多次运行,数据结果确定不变。
  • 一致性:具有相同含义的字段在不同的表中命名必须相同

10. 模型实施的具体步骤

在这里插入图片描述

  1. 数据调研:业务调研和需求分析
    • 业务调研目标是熟悉业务流程熟悉业务数据,需要将该业务所包含的每个业务过程一一列举出来。
    • 需求分析需要明确需求所需的业务过程维度
  2. 明确数据域: 根据业务情况进行纵向划分数据域。划分数据域的意义是便于数据的管理和应用。下面是电商离线数仓所需的所有业务过程及数据域划分详情
    在这里插入图片描述
  3. 构建业务总线矩阵:业务总线矩阵中包含维度模型所需的所有事实(业务过程)以及维度,以及各业务过程与各维度的关系。矩阵的行是一个个业务过程,列是一个个维度,行列的交点表示业务过程与维度的关系。
    在这里插入图片描述
    一个业务过程对应一张事务型事实表,一个维度对应一张维度表。
  4. 明确统计指标:原子指标、派生指标、衍生指标
    • 原子指标:原子指标基于某一业务过程度量值,是业务定义中不可再拆解的指标,原子指标的核心功能就是对指标的聚合逻辑进行了定义。包含三要素:业务过程度量值聚合逻辑
    • 派生指标:派生指标 = 原子指标 + 统计周期 + 业务限定 + 统计粒度。与原子指标不同,派生指标通常会对应实际的统计需求。
      在这里插入图片描述
    • 衍生指标:衍生指标是在一个或多个派生指标的基础上,通过各种逻辑运算复合而成的。例如比率、比例等类型的指标。衍生指标也会对应实际的统计需求。
      在这里插入图片描述
  5. 维度模型设计:维度模型的设计参照上得到的业务总线矩阵即可。事实表存储在DWD层,维度表存储在DIM层。
  6. 汇总模型设计:汇总模型的设计参考指标体系(主要是派生指标)即可。汇总表与派生指标的对应关系是,一张汇总表通常包含业务过程相同、统计周期相同、统计粒度相同的多个派生指标。
  7. 开发
  8. 调度

11. 维度建模有哪几种模型

  • 星型模型:最常用的维度建模方式,核心就是以事实表为中心,所有的维度表直接连接在事实表上。
    在这里插入图片描述

  • 雪花模型:维度表可以再连接其他维度表,有点类似于3NF模型
    在这里插入图片描述

12. 维度建模中表的类型

  • 维度表:一张维度表就表示对一个对象的一些描述信息。每个维度表都包含单一的主键列,和一些对该主键的描述信息,通常维度表会很宽。
  • 事实表:一个事实表就表示对业务过程的描述,比如下单、支付。每个事实表都包含若干个维度外键,若干退化维度(维度属性存储到事实表中,减少关联),和数值型的度量值,通常事实表都是细长(记录数多,列数少)。

13. 维度表的设计过程

维度表是维度建模的基础和灵魂。事实表围绕业务过程进行设计,维度表围绕业务过程所处的环境进行设计。维度表主要包含一个主键和各种维度字段,维度字段称为维度属性。

  1. 选择维度
  2. 确定主维表
  3. 确定相关维度
  4. 确定维度属性

14. 维度表的设计中有哪些值得注意的地方

  • 尽可能生成丰富的维度属性
  • 尽可能详细的对维度属性进行文字解释
  • 尽量沉淀通用的维度属性

15. 维表整合的两种表现形式

  1. 垂直整合
  2. 水平整合

16. 如何处理维度的变化

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

  1. 全量快照表:离线数据仓库的计算周期通常为每天一次,所以可以每天保存一份全量的维度数据。
    • 优点是简单而有效,开发和维护成本低,且方便理解和使用。
    • 缺点是浪费存储空间,尤其是当数据的变化比例比较低时。
  2. 拉链表:拉链表的意义就在于能够更加高效的保存维度信息的历史状态。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

17. 事实表设计的八大原则

  1. 尽可能包含所有与业务过程相关的事实
  2. 只选择与业务过程相关的事实
  3. 分解不可加事实为可加事实
  4. 在选择维度和事实之前必须先声明粒度
  5. 在同一个事实表中不能有不同粒度的事实
  6. 事实的单位要保持一致
  7. 对事实的null值要处理
  8. 使用退化维度提高事实表的易用性

18. 事实表的设计过程

  1. 选择业务过程以及确定事实表类型
  2. 声明粒度
  3. 确定维度
  4. 确定事实:声明度量值

19. 事实表有哪几种类型

  • 事务事实表:事务事实表用来记录各业务过程,它保存的是各业务过程的原子操作事件,即最细粒度的操作事件。粒度是指事实表中一行数据所表达的业务细节程度。事务型事实表可用于分析与各业务过程相关的各项统计指标
  • 周期快照事实表:周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,主要用于分析一些存量型(例如商品库存,账户余额)或者状态型(空气温度,行驶速度)指标。
  • 累计快照事实表:累计快照事实表是基于一个业务流程中的多个关键业务过程联合处理而构建的事实表,如交易流程中的下单、支付、发货、确认收货业务过程。累积型快照事实表主要用于分析业务过程之间的时间间隔等需求。比如用户下单到支付的平均时间间隔,使用累积型快照事实表进行统计,就能避免两个事务事实表的关联操作,从而变得十分简单高效。

20. 多事务事实表如何对事务进行处理

  主要有两种方法对事实进行处理

  1. 不同业务过程的事实使用不同的事实字段进行存放。比如淘宝交易事务事实表,表中会设置下单度量,支付度量,完结度量等字段。
  2. 不同业务过程的事实使用同一个事实字段进行存放,但增加一个业务过程标签。比如收藏事务事实表,表中会设置收藏删除类型,以及收藏删除度量等字段。

关于上述两种方法如何选择?

  • 当不同业务过程的度量比较相似时,采用第二种方式;反之,当不同业务过程的度量差异比较大时,采用第一种方式。

21. 单事务事实表和多事务事实表哪种设计更好

  主要从五个方面来进行分析

  • 业务过程:
    • 对于单事务事实表,一个业务过程建议一张事实表,只反映一个业务过程的事实;对于多事务事实表,在同一个事实表中反映多个业务过程的事实。多个业务过程是否放到同一张事实表中,首先需要分析不同业务之间的相似性。
  • 粒度和维度
    • 在确定好业务过程后,需要基于不同的业务过程确定粒度和维度,当不同业务过程的粒度相同,同时拥有相似的维度时,此时就可以考虑采用多事务事实表。如果粒度不同,则必定时不同的事实表。比如交易中支付和发货有不同的粒度,则无法将发货业务过程放到淘宝交易事务事实表中。
  • 事实
    • 如果单一业务过程的事实较多,同时不同业务过程的事实又不相同,则可以考虑单事务事实表,处理更加清晰;若使用多事务事实表,则会导致事实表零值或空值较多。
  • 下游业务使用
    • 单事务事实表对于下游用户更容易理解,关注哪个业务员过程就使用哪张事实表;而多事务事实表包含多个业务过程,用户使用往往较为困惑。
  • 计算存储成本
    • 当业务过程来源于同一个业务系统,具有相同的粒度和维度,且维度较多而事实不多时,此时可以考虑多事务事实表,不仅加工计算成本较低,同时在存储上也相对节省。

22. 周期快照事实表的设计过程

  1. 确定粒度
    • 周期型快照事实表的粒度可由采样周期和维度描述,故确定采样周期和维度后即可确定粒度。
    • 采样周期通常选择每日。
    • 维度可根据统计指标决定,例如指标为统计每个仓库中每种商品的库存,则可确定维度为仓库和商品。
    • 确定完采样周期和维度后,即可确定该表粒度为每日-仓库-商品。
  2. 确认事实
    • 事实也可根据统计指标决定,例如指标为统计每个仓库中每种商品的库存,则事实为商品库存。

23. 累计快照表的设计过程

  1. 选择业务过程
    • 选择一个业务流程中需要关联分析的多个关键业务过程,多个业务过程对应一张累积型快照事实表。
  2. 声明粒度
    • 精确定义每行数据表示的是什么,尽量选择最小粒度。
  3. 确认维度
    • 选择与各业务过程相关的维度,需要注意的是,每各业务过程均需要一个日期维度。
  4. 确认事实
    • 选择各业务过程的度量值。

24. 累计快照事实表的特点

  1. 数据不断更新
  2. 对应多业务过程日期

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

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

相关文章

低声下气捧于正,嘉行还“行”不“行”?

随着祝绪丹辞演于正新剧一事愈演愈烈,嘉行传媒又站上了舆论的风口浪尖。 事情的起因是于正的新剧开机,演员阵容和此前透露的有所差别,他声称明明已经与嘉行传媒艺人祝绪丹谈好合作,对方却为了另一部剧的女一号而放了他鸽子。 网…

【Java】十年老司机转开发语言,新小白从学习路线图开始

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《Java》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握…

Elasticsearch各种文档操作

本文来记录下Elasticsearch各种文档操作 文章目录 初始化文档数据查询所有文档匹配查询文档关键字精确查询文档多关键字精确查询文档字段匹配查询文档指定查询字段查询文档 初始化文档数据 在进行各种文档操作之前,我们先进行初始化文档数据的工作 查询所有文档 在 …

SpringMVC参数接收见解4

# 4.参数接收Springmvc中,接收页面提交的数据是通过方法形参来接收: 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参 springmvc接收的参数都是String类型,所以spirngmvc提供了很多converter(转换…

【控制篇 / 分流】(7.4) ❀ 02. 对不同运营商IP网段访问进行分流 ❀ FortiGate 防火墙

【简介】公司有两条宽带用来上网,一条电信,一条联通,访问常用的某些网站速度时快时慢。领导要求,根据上网流量的目标运营商IP归属,将流量送到相应的运营商出口去,避免跨运营商上网。那么应该怎么做&#xf…

用julia演示蝴蝶效应:洛伦兹吸引子

文章目录 Lorentz吸引子julia绘图关闭抗锯齿 蝴蝶效应的名字来源于蝴蝶扇动翅膀的动作,虽然这个动作微小,但可能会在数周后引起飓风等极端天气的发生。这种现象表明,微小的变化可能会被放大并产生非线性的结果。这个概念最早由美国气象学家爱…

linux 网络文件共享服务

存储类型 DAS 直连式存储 SAN 存储区域网络 NAS 网络附近存储 FTP文件传输协议 文件传输协议 FTP 早期的三个应用级协议之一,基于c/s架构 数据传输格式:二进制(默认)和文本 tcp 21端口(权限,…

jmeter--8.加密传输

目录 1. Base64加密 2. MD5加密 3. SHA加密(sha1\sha\sha224\sha256\sha384\sha512) 4. RSA加密-公钥加密,私钥解密 1. Base64加密 1.1 在需要加密传输的接口下新增BeanShell 预处理程序,${username}可替换成value值&#xff…

基于springboot的环保网站的设计与实现

🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅一 、设计说明 1.1 研究背景 当…

【UE5】交互式展厅数字博物馆交互是开发实战课程

长久以来,我们总是不断被初学者问到类似这样的问题:如何从头到尾做一个交互式程序开发项目?本套课程尝试对这个问题进行解答。 课程介绍视频如下 【UE5】数字展厅交互式开发全流程 【谁适合学习这门课】 本套课程面向初学者,满足…

Spring使用注解管理Bean

引入lib包 Spring对Bean管理的常用注解 Component组件(作用在类上) Spring中提供了Component的三个衍生注解:(功能在目前为止是一致的) Controller WEB层 Service 业务层 Repository 持久层 属性注入的注解:(使用注解注入的方式,可以不用提供set方法) Value 用于注入普…

【上分日记】第380场周赛(数位dp+ KMP + 位运算 + 二分 + 双指针 )

文章目录 前言正文1.3005. 最大频率元素计数2.3007.价值和小于等于 K 的最大数字3.3008. 找出数组中的美丽下标 II 总结尾序 前言 本场周赛,博主也只写出两道题(前两道, hhh菜鸡勿喷),第三道涉及位运算 ,数位dp,第四道涉及KMP。 下…

“货到人”拣选系统模式|智能四向穿梭车系统如何节约仓储空间优化企业供应链?

随着仓储物流和电商行业的快速发展,自动化立库设备的技术不断完善。“货到人”拣选技术越来越受到行业的重视,且已逐渐成为供需双方关注的焦点。“货到人”拣选系统主要由储存系统,补货系统,输送系统,拣选系统和包装系…

嵌入式软件工程师面试题——2025校招社招通用(二十)

说明: 面试群,群号: 228447240面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但…

C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)

目录 一、#define的基本语法 二、什么是宏 三、#define定义常量用法 基本语法: 思考:在define定义标识符的时候,要不要在最后加上 ; 四、#define定义宏 五、带有副作用的宏参数​ 六、宏替换的规则​ 七、宏与函数的对比​ 一、#def…

tinyxml2

tinyxml2类对象 链接 XMLDocument xml文档(文件)对象。 作用: 加载xml文件,

网页设计(八)HTML5基础与CSS3应用

一、当当网企业用户注册页面设计 当当网企业用户注册页面 改版后当当网企业用户注册页面 <!-- prj_8_1.html --> <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>当当网企业用户注册页面设计</title><s…

【算法Hot100系列】接雨水

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

码云星辰:未来运维的技术交响曲

&#x1f6a9;本文介绍 ​ 随着信息技术的迅猛发展&#xff0c;运维领域正经历着翻天覆地的变革。未来的运维工程师将需要拥有更广泛、更深入的技能&#xff0c;以适应日益复杂和多变的系统环境。本文将深入探讨运维未来的行业发展趋势&#xff0c;并详细分析需要掌握的关键技…

AP上线配置流程

AP工作模式 相应地&#xff0c;AR路由器的WLAN工作模式分为FAT AP和AC两种模式&#xff0c;不同的模式对应不同的使用场景。 FAT AP模式&#xff1a;AR路由器作为FAT AP&#xff0c;独立为用户提供WLAN接入服务&#xff0c;无线网络的配置在FAT AP上单独配置。FAT AP模式主要…