浅谈离线数仓ADS层

ADS层是由需求指标形成的,也就是由需求决定的,而其他层级的数据大部分是由ADS层来决定的。然后ADS层的数据大部分都是来自于DWD、DWS关联DIM层,一般一个原型图对应着一张ADS层的表,而ADS层的表里面的指标,来源于多张业务事实表,一般都需要从多个DWD或者DWS层的表中获取对应的指标字段,而且一般都需要关联DIM层的维度,所以就需要多个insert从多张事实表中获取原型指标字段。

获取原型指标字段数据的方法是,建一张tmp临时的ADS层表,然后通过多个insert语句从DWD层或者DWS层关联DIM层的表中来获取需要的ADS层的某一个或者多个指标字段,这些字段在bi原型中需要使用到的,插入到临时表中,得到的表会是一层一层的,而且每一层都有null值,且出现维度冗余,因为不可能ADS层的指标数据都从一张业务事实表获取到的,所以只能通过多张事实表来插入。最后就是写总的insert语句,将维度合并,减少冗余,得到最简的ADS层表以提高检索效率。

现在根据原型“征订目录教材教辅-供应链汇总表”,提取到了ads层的需求指标表“ads_subs_chain_sum”,现在需要根据这个ads层的表从dwd或者dws或者关联dim表进行获取ads层中的指标字段。有一些字段可以从某层中直接获取,有一些则需要经过聚合或者分组才能得到对应的指标字段。

现在他做的就是将ads层的表,分多个insert插入到一个tmp表中,然后获取到指标需要的所有字段数据,就是一层一层的拼接到一起,但是有些维度会重合,最后再对此tmp表进行分组合并维度得到对应合并后的数据插入到ads层的表中。

关联到相关的dim维度,然后将维度得到指标表的字段数据。维度都要,因为后续需要通过维度来合并数据。

由多个insert语句从不同的事实表中获取字段插入到tmp表,最后再对临时表进行合并维度得到指标表。

案例代码:

ADS层的表:ads_honry

建一张ADS层临时表tmp_ads_honry

每次采集时都清空一下临时表,最后再将整理好的指标插入到正式指标表中。

truncate table tmp_ads_honry

临时的获取d指标字段的insert语句:

insert into tmp_ads_honry

select

a , -- 维度字段a

b , -- 维度字段b

c , --维度字段 c

sum(d) -- 原型指标d

null e -- 原型指标e

null f  -- 原型指标f

from dwd_honryd left join dim_honry

group by a,b,c

临时的获取e指标字段的insert语句:

insert into tmp_ads_honry

select

a , -- 维度字段a

b , -- 维度字段b

c , --维度字段 c

null d -- 原型指标d

sum(e) -- 原型指标e

null f  -- 原型指标f

from dwd_honrye left join dim_honry

group by a,b,c

临时的获取f指标字段的insert语句:

insert into tmp_ads_honry

select

a , -- 维度字段a

b , -- 维度字段b

c , --维度字段 c

null d -- 原型指标d

null e -- 原型指标e

sum(f)  -- 原型指标f

from dwd_honryd left join dim_honry

group by a,b,c

总的ads表

insert into ads_honry

a , -- 维度字段a

b , -- 维度字段b

c , --维度字段 c

sum(d) -- 原型指标d

sum(e) -- 原型指标e

sum(f)  -- 原型指标f

from dwd_honryd left join dim_honry

group by a,b,c

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
离线数仓的分设计通常包括贴源(ODS)、明细(DWD)、维度(DIM)、轻度聚合(DWS)、主题(DWT)、数据中间(DWM)和结果展示ADS)\[1\]。 贴源(ODS)是数仓中最底次,用于接收和存储原始数据。在这一数据被抽取、清洗和转换为可用于后续处理的格式。 明细(DWD)是在贴源之上的一,用于存储经过处理和加工的原始数据。在这一数据被进行清洗、整合和转换,以满足业务需求。 维度(DIM)是用于存储维度数据次。维度表是基于原始数据提取公共指标进行维度建模的结果\[2\]。在这一,维度数据被提取出来,并与事实数据进行关联。 轻度聚合(DWS)是在明细之上的一,用于存储经过聚合的数据。在这一数据被进行聚合操作,以提高查询性能和减少数据量。 主题(DWT)是在轻度聚合之上的一,用于存储按照业务主题组织的数据。在这一数据被按照业务主题进行组织和汇总,以支持特定的分析和报表需求。 数据中间(DWM)是用于存储数据处理过程中的中间结果的次。在这一数据被用于支持数据处理的各个阶段,例如数据清洗、转换和集成。 结果展示ADS)是数仓中最顶次,用于存储最终的分析结果和报表数据。在这一数据被用于生成各种分析报表和可视化展示。 离线数仓的分设计可以根据具体业务需求和数据处理流程进行灵活调整,但通常遵循以上的基本分结构\[1\]。 #### 引用[.reference_title] - *1* *2* [离线数仓(基础)](https://blog.csdn.net/wind96/article/details/127641942)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [离线数仓 (八) --------- 数仓](https://blog.csdn.net/m0_51111980/article/details/127491547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值