目录
一:一个基本的数据仓库应该包含哪些功能模块
包含数据采集,数仓分层,任务调度,数据可视化,即席查询,权限管理,元数据管理,数据质量监控,集群性能监控等模块。
二:数据搭建过程中遇到哪些问题,如何解决的?
2.1安装配置完某个组件HIve之后发现该组件不能正常工作
解决: 查看运行日志,进行谷歌,定位问题原因,查看HIve配置文件,脚本文件编辑错误,纠正脚本后,组件运行成功。
2.2 Hive进行脚本调度过多的sql代码的时候(创建表,导入数据)的时候,hive会报内存溢出?
解决:重新启动hiveserver2,把sql代码分成好几个sql文件进行执行。
三:数仓建模具体指什么?为什么如此重要?
数仓建模是数据仓库的灵魂。评价一个数仓的好坏,全靠建模。
3.1 ODS 层
- 保持数据原貌,不做仁和修改,起到数据备份的作用;
- 创建分区表,防止后续全表扫描
- 采用压缩,减少磁盘存储空间
3.2 DWD层
采用标准的建模四步
- 选择业务过程
- 声明粒度
- 确定维度
- 确定事实
粒度:
粒度指一行信息代表的含义。比如一行信息代表:一次下单,粒度就是一次;
一天下单,粒度就是一天。一个月下单,粒度就是月;如果粒度是月,那么后续想统计天相关的指标就统计不了了。
故选择粒度的时候,最好选择最小粒度。如果选择最小粒度,保持数据原样,不做聚合操作就可以。
维度:
就是什么时间,什么地点,哪个人,哪个商品,哪个活动,优惠券等名词。
确定事实:
这里指确定度量值。所谓的度量值,通常指,次数,件数,个数,金额等
维度退化:
根据确定的维度和事实,进行维度退化。
当一个维度没有数据仓库需要的任何数据的时候就可以退化此维度,需要把退化维度的相关数据迁移到事实表中,然后删除退化的维度。
即维度属性也可以存储到事实表中,这种存储在事实表中的维度列称为维度退化。
举例:比如说订单id,这种量级很大的维度,没必要用一张维度表来进行存储,
而我们进行数据查询或者数据过滤的时候又非常需要,所以这种就冗余在事实表里面,
这种就叫退化维度,citycode这种我们也会冗余在事实表里面,但是它有对应的维度表,所以它不是退化维度。
比如将商品表,商品SPU表,品类表,商品一级分类,二级分类,商品三级分类退化成商品维度表。
再比如将省份表,地区表退化为地区维度表。
迁移:实际业务中游戏渠道名称和游戏id为例。由于每次报表的时候既需要展示游戏渠道名称和游戏渠道id
所以我们就把游戏名称这个字段直接迁移到事实表中来,虽然字段有冗余,但是不用做join连接,也提高来查询速度。
维度退化优点<