怎样可以做网站站长,广州市财经商贸职业学校,网站正能量点进去就能看,wordpress 菜单 双语文章目录 一. 数仓分层的意义1. 清晰数据结构。2. 减少重复开发3. 方便数据血缘追踪4. 把复杂问题简单化5. 屏蔽原始数据的异常6. 数据仓库的可维护性 二. 如何进行数仓分层#xff1f;1. ODS层2. DW层2.1. DW层分类2.2. DWD层2.3. DWS 3. ADS层 4、层次调用规范 一. 数仓分层… 文章目录 一. 数仓分层的意义1. 清晰数据结构。2. 减少重复开发3. 方便数据血缘追踪4. 把复杂问题简单化5. 屏蔽原始数据的异常6. 数据仓库的可维护性 二. 如何进行数仓分层1. ODS层2. DW层2.1. DW层分类2.2. DWD层2.3. DWS 3. ADS层 4、层次调用规范 一. 数仓分层的意义
1. 清晰数据结构。
每一个数据分层都有它的作用域这样我们能根据自己的需求会快定位到要使用那些层的哪些表。 例如客户信息同时存在于核心系统、信贷系统、理财系统、资金系统取数时该如何决策呢数据仓库会对相同主题的数据进行统一建模把复杂的数据关系梳理成条理清晰的数据模型使用时就可避免上述问题了。 2. 减少重复开发
规范数据分层开发一些通用的中间层数据能够减少数据的重复计算。
数据的逐层加工原则下层包含了上层数据加工所需要的全量数据这样的加工方式避免了每个数据开发人员**都重新从源系统抽取数据进行加工。**极大地减少不必要的数据冗余也能实现计算结果复用极大地降低存储和计算成本。 3. 方便数据血缘追踪
简单来说最终给业务呈现的是一个能直接使用的业务表但是它的数据来源有很多如果有一张来源表出问题了分层后的数仓能够快速准确地定位到问题并清楚它的危害范围。
4. 把复杂问题简单化
将一个复杂的任务分解成多个步骤来完成每一层只处理单一的步骤比较简单和容易理解。而且便于维护数据的准确性当数据出现问题之后可以不用修复所有的数据只需要从有问题的步骤开始修复。 5. 屏蔽原始数据的异常
源头系统可能极为繁杂而且表命名、字段命名 、字段含义等可能五花八门通过 DW 层来规范和屏蔽所有这些复杂性。如果源头系统业务发生变更相关的变更由 DW 层来处理对下游用户透明无须改动下游用户的代码和逻辑。 6. 数据仓库的可维护性
分层的设计使得某一层的问题只在该层得到解决无须更改下一层的代码和逻辑。 二. 如何进行数仓分层
数据分层最基础的分层思想将数据分为三个层数据引入层ODS、数据仓库层DW和数据服务层ADS。可以基于基础分层之上添加新的层次来满足不同的业务需求。 1. ODS层
数据引入层ODSOperational Data Store又称数据基础层是最接近数据源中数据的一层这将原始数据几乎无处理地存放在数据仓库系统中结构上与源系统基本保持一致。
这一层的主要职责是解决数据孤岛问题保证数据集成完整性数据与源系统表一致体现非易失性定期同步增加表同步时间戳体现时变性。 ODS层数据的来源方式
业务库 离线hive、flink批模式、sqoop定时调度。 实时在实时方面 可以考虑用canal监听mysql的binlog实时接入即可。 埋点日志 线上系统会打入各种日志这些日志一般以文件的形式保存 离线用flume定时抽取。 实时用spark streaming或者Flink来实时接入存放到kafka中。 消息队列来自ActiveMQ、Kafka的数据等。 2. DW层
数仓层DW, data warehouse是核心设计的一层本层将从 ODS 层中获得的数据按照主题建立各种数据模型每一个主题对应一个宏观的分析领域数据仓库层排除对决策无用的数据提供特定主题的简明视图。在DW层会保存BI系统中所有的历史数据例如保存10年的数据。
DW存放明细事实数据、维表数据及公共指标汇总数据。 明细事实数据、维表数据一般根据ODS层数据加工生成。公共指标汇总数据一般根据维表数据和明细事实数据加工生成。 2.1. DW层分类
DW层又可以细分为维度层DIM、明细数据层DWD和汇总数据层DWS。
分层作用 通过维度模型方法可以定义维度模型主键与事实模型中外键关系减少数据冗余也提高明细数据表的易用性。在汇总数据层同样可以关联复用统计粒度中的维度采取更多的宽表化手段构建公共指标数据层提升公共指标的复用性减少重复加工。 分类: 维度层DIMDimension以维度作为建模驱动创建各维度表。为了避免在维度模型中冗余关联维度的属性基于雪花模型构建维度表。明细数据层DWDData Warehouse Detail以业务过程作为建模驱动构建最细粒度的明细事实表。汇总数据层DWSData Warehouse Summary以分析的主题对象作为建模驱动基于上层的应用和产品的指标需求构建公共粒度的汇总指标表。为上层提供公共指标建立汇总宽表、明细事实表。 2.2. DWD层
DWD层做了哪些事
1.数据清洗过滤 去除废弃字段,去除格式错误的信息 去除丢失了关键字段的信息 过滤核心字段无意义的数据比如订单表中订单id为null支付表中支付id为空 对手机号、身份证号等敏感数据脱敏 2.数据映射,转换 如boolean,有使用0 1标识,也有使用true false标识的 如字符串空值,有使用,也有使用null,的,统一为null即可 如日期格式,这种就差异性更大,需要根据实际业务数据决定,不过一般都是格式化为YYYY-MM-dd HH:mm:ss 这类标准格式 2.3. DWS
DWS data warehouse service数据服务层汇总层宽表
DWS是根据DWD层基础数据按各个维度ID进行粗粒度汇总聚合如按交易来源交易类型进行汇合。整合汇总成分析某一个主题域的服务数据一般是宽表。
该层数据表会相对比较少大多都是宽表(一张表会涵盖比较多的业务内容表中的字段较多)。按照主题划分如订单、用户等生成字段比较多的宽表用于提供后续的业务查询OLAP分析数据分发等。 比如用户每个时间段在不同登录ip购买的商品数等。这里做一层轻度的汇总会让计算更加的高效在此基础上如果计算7天、30天、90天的行为会快很多。80%的业务都能通过DWS层计算而不是ODS。 公共汇总事实表命名规范 dws_{业务板块缩写/pub}_{数据域缩写}_{数据粒度缩写}[_{自定义表命名标签缩写}]_{统计时间周期范围缩写}。 关于统计实际周期范围缩写缺省情况下离线计算应该包括最近一天_1d最近N天_nd和历史截至当天_td三个表。如果出现_nd的表字段过多需要拆分时只允许以一个统计周期单元作为原子拆分。即一个统计周期拆分一个表例如最近7天_1w拆分一个表。不允许拆分出来的一个表存储多个统计周期。 对于小时表无论是天刷新还是小时刷新都用_hh来表示。对于分钟表无论是天刷新还是小时刷新都用_mm来表示。
举例如下 dws_asale_trd_byr_subpay_1d买家粒度交易分阶段付款一日汇总事实表 dws_asale_trd_byr_subpay_td买家粒度分阶段付款截至当日汇总表 dws_asale_trd_byr_cod_nd买家粒度货到付款交易汇总事实表 dws_asale_itm_slr_td卖家粒度商品截至当日存量汇总表 dws_asale_itm_slr_hh卖家粒度商品小时汇总表—维度为小时 dws_asale_itm_slr_mm卖家粒度商品分钟汇总表—维度为分钟 3. ADS层
数据应用层ADSApplication Data Store存放着数据产品个性化的统计指标数据报表数据。 应用层主要是各个业务方或者部门基于DWD和DWS建立的数据集市(Data Market, DM)一般来说应用层的数据来源于DW层而且相对于DW层应用层只包含部门或者业务方面自己关心的明细层和汇总层的数据。 APP 层为应用层这层数据是完全为了满足具体的分析需求而构建的数据也是星形或雪花结构的数据。如我们经常说的报表数据或者说那种大宽表一般就放在这里。包括前端报表、分析图表、KPI、仪表盘、OLAP、专题等分析面向最终结果用户。 应用层是根据业务需要由前面三层数据统计而出的结果可以直接提供查询展现或导入至Mysql中使用。 4、层次调用规范 禁止反向调用 ODS 只能被 DWD 调用。 DWD 可以被 DWS 和 ADS 调用。 DWS 只能被 ADS 调用。 数据应用可以调用 DWD、DWS、ADS但建议优先考虑使用汇总度高的数据。 ODS-DWD-DWSADS ODS-DWD-ADS 参考 https://dbaplus.cn/news-73-4907-1.html