欢迎光临
我们一直在努力

3-dw_缓慢变化维


上次我们理解了维度表,哪什么是缓慢变化维呢,比如我们有这样的一个场景,

A

客户在

4

月份的时候归属于

X

部门,在

5

月的时候归属于

Y

部门,如果

A

客户的销售额需要体现归属部门的变化关系。此时就需要用到缓慢变化维了。如下图就是对客户表的一个缓慢变化。


上面设计就是对每个月把客户生成一份数据,但如果我们的客户有

100

万个呢,每月生成一份,一年后就有

1200

万了,这样导致数据量会很大,在关联的时候会严重影响性能。哪么我们就需要用缓慢变化维的设计方案了,采用代理键方案来达到最少数据量。如下图:


我们通过对客户表的开始日期和结束日期框定每个客户的当前版本,然后落地数据时把客户的代理键带上,这样以后在做数据分析时,如果结果表带的客户维度信息不全,就可以直接用代理键关联客户维表带出需要的维度,如果此时没有代理键做关联,采用客户代码做关联,就会出现数据笛卡尔积,如下图,当我们需要对结果表增加客户的“归属部门名称”时,有“代理键”信息时,则直接按代理键做关联条件带出客户维表里的“归属部门名称”信息,如果按“客户代码”关联,则会导致数据翻倍,见红色数据记录,

4

月的由

100

变化到

200

了,

5

月份的

200

变化到

400

了,不然就需要重新计算每个月的数据才能达到增加“归属部门名称”信息的目的。


生成缓慢变化维的

SQL

代码见

:


https://github.com/blt328/dw_blt




更多技术文章请关注公众号


(


长按后点识别图中二维码


):

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。