一、数仓架构设计
ods层:也叫准备区,存储这历史的增量或者全量数据
dw层:数仓的主体内容,hadoop数仓的DW层一般基于Kimball的维度建模理论来构建,通过维度一致性和数据总线来保证各个子主题的维度一致性
o数据平台的下游用户将会直接使用DW层数据
o出于性能、重复计算和便捷性的考虑,DW层会分为两层:
明细层DWD:具有最细粒度的事实表和维度表
汇总层DWS:基于明细层的汇总层(可以和业务方一起沟通确定),一般针对频繁使用的维度进行汇总
dm层:基于dw层,也就是数据集市(Data Mart),或者说应用层,一般由下游数据用户拥有维护,数仓提供咨询和支持
采用这种分层的好处:
屏蔽源头系统业务变更、系统变更对于下游用户的影晌
屏蔽源头业务系统的复杂性
避免重复计算和存储: 通过汇总层的引人,避免了下游用户逻辑的重复计算, 节省了用户的开发时间和精力,同时也节省了计算和存储。
数据仓库的可维护性: 分层的设计使得某一层的问题只在该层得到解决,无须更改下一层的代码和逻辑
二、hadoop数仓规范设计
对于一个公司或者组织来说,使用数据的用户可能成百上千,如何降低大家对于数据使用的沟通成本、如何通过规范大家的行为来降低使用数据的风险,这些问题是必须加以考虑的。一般可以通过规范来达到目的
- 命名规范
1.1 表命名规范
一般包含4部分:
o属于哪一层:ODS、DWD、DWS、DML
o哪个业务领域:销售(sls)、存储(inv)、客户服务(srv)、促销(prmt)等
o哪个维度:商品(item)、买家(byr)、卖家(slr)、类目等
o哪个时间跨度:天d、月m、年y、实时
o增量di还是全量df
比如一个汇总层、商品维度的月度销售汇总表可以命名为:dws_sls_item_m
1.2 字段命名规范
一般是易于理解、能够表达字段含义的英文字母,比如:
数量型的字段一般以cnt结尾
数值型的字段一般以amt结尾
标签性的字段一般以is开头
2. 开发规范
主要用于规范和约束数据开发人员和使用人员的习惯,以最大限度减低数据使用风险,同时保证用户遵守最佳实践
主要包含几个方面:
数据任务的分类和存放(即目录结构的划分),以很方便找到对应项目、产品或者各层次的代码
o公共代码、个人代码如何存放
o项目和产品的代码如何分类存放
代码的编程规范:比如任务注释的规范必须包含哪些部分、代码的对齐规范、代码的开发约定等
最佳实践,比如:
o货币金额统一用“分”来表示
o如何灵活运用时间分区
o数据类型定义规范等
3. 流程规范
用于规范开发流程行为,以保证数据交付进度和质量,降低交付风险
分为需求流程规范和开发流程规范
注意开发流程规范中,要有数据初步验证、发布后要配置数据质量监控
三、数据平台新架构——数据湖
作为新的大数据架构,数据湖采集和存储一切数据,既包含结构化的数据也包含非结构化(如语音、视频等)和半结构化的数据(如JSON 和XML 等),既包含原始数据又包含经过处理的、集成的数据。
数据湖鼓励分析师和数据科学家对原始数据在分析沙箱中进行探索、研究、实验,对于有价值的数据,再和数据开发、管理团队一起将其转为更容易操作和使用的数据
核心区别:
数据湖存放所有数据,而数仓一般存放的都是经过处理、结构化的数据
schema-on-Read:被使用时才转换,而数仓一般都是在写入之间就必须定义好结构和形态(schema-on-write)
更容易适应变化:数据湖允许用户跳出数仓的限制来使用全新的方式去浏览数据、使用数据。有价值的再配置个日常任务去转换,没价值的就不需要在花费人力和时间成本
更快的洞悉能力:数据湖能让用户在经过ETL和结构化之前就访问到数据,比数仓更快得到结果
总的来说,数据湖collect everything ,然后鼓励用户自助、自由分析数据,其核心思想正好可以解决上述提到的产品和项目自助分析的问题,当然这还需要相关自动化数据采集、元数据管理和自动化数据解析以及处理技术的支撑。
第10张 维度表技术
第11章 事实表技术
事实表中的数字度量值可划分为可加、半可加、不可加三类
比如消费金额。任何维度都可加
余额是常见的半可加度量,除了时间维度外,其他维度可加
比例是完全不可加的度量。处理方法是,一般保留分子和分母,留到最终结果的时候再计算。常见于BI和OLAP中
事实表中可以存在空值度量。
sum、count(字段名)、min、max、avg会忽略空值,而count(1)或count(*)在计数时会将空值包含在内
三种不同类型的事实表:
事务事实表:以每个事务或事件为单位,例如一个销售订单记录、一笔转账记录等,作为事实表里的一行数据
这类事实表可能包含精确的时间戳和退化维度键,其度量值必须与事务粒度保持一致
周期快照事实表:保存固定时间间隔的数据(记录给定时间点),比如月底账户余额、库存、销售额,一般是半可加的
累积快照事实表:累积快照用于跟踪事实表的变化。所以是有两类?
o记录给定时间点的聚合事实,如当月总销售额。 ??
o非常适用于具有工作流或者流水线形式业务的分析,是从全流程的角度对业务状态的拍照。比如保险公司理赔过程
无事实的事实表
迟到的事实
累计度量
版权归原作者 程序员面试笔记 所有, 如有侵权,请联系我们删除。