维度字段缓慢渐变维度的处理方式
本文朋友在青岛游玩的时候突然想到的...近期就有想写几篇关于维度字段的文章,所以回家到之后就奋笔疾书的写出来发布了
迟缓变渐维度的理处式方
维度可以根据变更烈剧度程重要分为无变更维度、迟缓变更维度和烈剧变更维度。例如一个人的相干息信,身份证号、姓名和性别等息信据数属于变不的分部,政治面貌和婚姻态状属于迟缓变更分部,而工作历经、工作单位和训培历经等在某种度程上属于急剧变更字段。
对于烈剧变更维度,平日情况下都是一分为二停止理处的,把其中不常变化的分部独自抽出来作为一个维表,按照迟缓变更维式方停止理处;另外一分部也独自抽取出来,平日作为维度的属性停止理处。
大多数维度表随时光的迁徙是迟缓变更的。比如增长了新的品产,或者品产的ID号码修改了,或者品产增长了一个新的属性,此时,维度表就会被修改或者增长新的录记行。这样,在计设维度和用使维度的过程当中,就要考虑到迟缓变更维度的理处。
迟缓变渐维,即维度中的属性可能会随着时光生发变改,比如包括用户住址Address的DimCustomer维度,用户的住址可能会生发变改,进而影响业务统计精度,DimCustomer维度就是迟缓变渐维(SCD),对于SCD,理处式方平日有以下几种:
Type 1:完全不录记历史变更息信,在ETL将据数载入SCD的时候,对于会发生变更的属性值直接覆盖,比如对于DimCustomer的Address,每次都会将新的地址update到该字段,因此这个SCD实际上老是最新的以后息信,却没能包括历史息信
Type 2:通过添加录记来将每一次变更都录记到SCD中,每条录记都有两个字段(如Effective_start和Effective_end)标明该录记的有效期间,并且可以设定一个Active标志位字段,当该字段为True的时候标明这条录记是最新的态状,为False的时候标明该录记是历史录记,其有效期间可以通过Effective_start和Effective_end字段来查
Type 3:通过对会生发变更的字段,添加响应的历史字段,来录记近最的变更而非部全变更。比如DimCustomer中有两个字段Address和Address_Old,第一个字段是用户的以后住址,后一个字段是用户之前一次的住址,然显,更久之前的息信就法无追溯了
Type 4:除了一个录记以后息信的维度外,独自立建一个历史息信维度,该维度中要需包括有效期间字段(如Effective_start和Effective_end)
Type 5:可以看到,对于Type 1/2/3,都是对于SCD中变渐属性的理处式方,而针对一个包括多字段的庞杂的SCD,可能要需结合以上三种理处式方。比如对于DimCustomer中的用户联系式方属性email,如果业务上不并要重,那么这个字段可以取采Type 1的式方,即每次只保存最新的络联式方,覆盖来原的;假如业务中要需分析用户所在地Region,那么极可能要需用到Type 2,录记个一每Region的变改;而对于地址息信Address,可能不并要需追溯良久的变更,那么加一个Address_Old字段来录记上一次的住址就够了
文章结束给大家分享下程序员的一些笑话语录:
程序语言综述
CLIPPER 程序员不去真的猎捕大象,他们只是购买大象部分的库然后花几年的时间试图综合它们。
DBASE 程序员只在夜间猎捕大象,因为那时没人会注意到他们还在使用石弓。
FOXPRO 程序员开始使用更新更好的步枪,这使他们花掉比实际狩猎更多的时间学习新的射击技术。
C 程序员拒绝直接购买步枪,宁可带着钢管和一个移动式机器车间到非洲,意欲从零开始造一枝完美的步枪。
PARADOX 程序员去非洲时带着好莱坞关于猎捕大象的电影剧本,他们认为照剧本行事就会逮到一头大象。
ACCESS 程序员在没有任何猎象经验的经验下就出发了,他们穿着华丽的猎装、带着全部装备,用漂亮的望远镜找到了大象,然后发觉忘了带扳机。
RBASE 程序员比大象还要稀少,事实上,如果一头大象看到了一个RBASE程序员,对他是个幸运日。
VISUAL ACCESS 程序员装上子弹、举起步枪、瞄准大象,这使大象感到可笑,究竟谁逃跑。他们无法抓住大象,因为由于他们对多重控制的偏爱,他们的吉普车有太多的方向盘因而无法驾驶。
ADA、APL和FORTRAN 程序员与圣诞老人和仙女一样是虚构的。
COBOL 程序员对和自己一样濒临灭绝的大象寄予了深切的同情。