数仓 面试题(离线)实战解答

无意间翻到以前的数仓面试题,今天把它整理出来,方便你我他。

数仓分层:

在这里插入图片描述

为什么要对数仓进行分层?

在这里插入图片描述

1、说说对数据仓库的理解

数据仓库是面向主题进行组织的,数据是集成的、不可更新的、随时间变化的的。
数据仓库经历了这样三个阶段:简单报表阶段、数据集市阶段、数据仓库阶段。

2、数据库和数据仓库的区别

数据库:是一种逻辑概念,用来存放数据的仓库,通过数据库软件来实现。数据库由很多表组成,表是二维的,一张表里可以有很多字段。
数据仓库:是数据库概念的升级。从逻辑上理解,数据库和数据仓库没有区别,都是通过数据库软件实现存放数据的地方,但是从数据量来讲数据仓库比数据库更庞大些。数据仓库的主要作用用于数据挖掘、数据分析,辅助领导来做决策的。
区别:实际上二者之间讲的是OLTP和OLAP

操作型处理 OLTP:它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。
分析型处理 OLAP:一般针对某些主题的历史数据进行分析,支持管理决策。

3、为什么叫星型模型和雪花模型

星型模型是:多维表的数据关系,它由一个事实表和一组维表组成,每个维作为主键
雪花模型是:当一个或多个维没有直接连接到事实表上,而是通过其他维表连接到事实表上的时候,其图解就像雪花模型连接在一起、

使用场景:
雪花模型使得维度分析更加容易,比如“针对特定的广告主,有哪些客户或者公司是在线的?”
星形模型用来做指标分析更适合,比如“给定的一个客户他们的收入是多少?”

4、星型模型和雪花模型各自的优点

一待思考的。。。。

5、什么是缓慢变化维

缓慢变化维
1.缓慢变化维在数据仓库中,有个概念叫缓慢变化维,经常简写为SCD,
2.缓慢变化维的提出是因为现实世界中,维度的属性并不是静态的,它会随时间的流失发生缓慢的变化。
这种随着时间变化的我们称之为缓慢变化维。。。

6、如果现在有一千张表从一个库到另外一个库的ODS层,你会怎么做?

利用消息队列做数据订阅发布()

7、‘2019-04-12’ 取 周几
weekofyear
8、数仓三层架构,具体每层作用

1:数据访问层:主要是对非原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据库的操作,而不是数据,具体为业务逻辑层或表示层提供数据服务。
2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3:界面层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。

9、拉链表知道么?

拉链表就是随着时间变迁产生历史数据。

拉链表的含义:就是记录历史。记录一个事务从开始一直到当前状态的所有变化信息。
10、in exists 的区别 not in 和 not exists的区别

in 是一个集合运算符.
a in {a,c,d,s,d…}
这个运算中,前面是一个元素,后面是一个集合,集合中的元素类型是和前面的元素一样的.
而exists是一个存在判断,如果后面的查询中有结果,则exists为真,否则为假.
——————————————————
not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;
而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。

总之:
尽量使用not exist ,避免使用not exist
not in 会默认调用子查询
not exist 会调用关联子查询
11、增量处理的时候,源数据库删除的数据是怎么处理

– 谁知道的话,回复下,这个问题,多谢。。。
 
zhì zhī sǐ dì ér hòu shēng
置 之 死 地 而 后 生

【转载注明出处,尊重原创 】

【作者水平有限,如有错误欢迎指正 .】

在这里插入图片描述

原创文章 61 获赞 79 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_46163590/article/details/106057768
今日推荐