本文主要包括:
- 数据仓库面试题总结
1. 全量表(df),增量表(di),追加表(da),拉链表(dz)的区别及使用场景?
2. 星型模型和雪花模型?
3. 缓慢变化维如何处理,几种方式?
- 直接覆盖历史数据
- 采用拉链表,把记录的过程都记录下来
- 增加预留资源,每次变化,把新变化的数据放到备用字段
- 字段透传,把变化的纬度透传到上层的事实表,这样就不用关联了
4. 说说你从0-1搭建数仓都做了什么?你觉得最有挑战的是什么?
5. 流批一体有什么好处?为什么要搞流批一体?
传统数仓Lambda架构,数据分析需求基于流、批两套计算引擎产出,这种分离的架构不仅会带来两套开发成本,也导致数据逻辑和口径难以对齐
为什么阿里云要做流批一体?
流批一体首先是架构上的流批一体,不仅仅是计算引擎流批一体,存储引擎也需要流批一体,计算引擎可以使用flink,存储引擎,现在常用的可以使用Hudi,Iceberg
6. left semi join和left jion区别?
left semi join
左半连接,是 in(keySet) 的关系,遇到右表重复记录,左表会跳过;
当右表不存在的时候,左表数据不会显示; 相当于SQL的in语句,注意,结果中是没有B表的字段的
LEFT SEMI JOIN 是 IN/EXISTS 子查询的一种更高效的实现。left join
:当右表不存在的时候,则会显示NULL
数仓面试题可以参考
2020大厂面试题-数仓篇