事实表关联非最低粒度的维度会造成数据混乱么?
做了点测试数据测试一下~
测试一
这批测试数据比较简单。
第一张是事实表数据,将会用Level2Code来关联维度表。
第二张是维度表,Level3是最低粒度,level2是爸爸,level1是爷爷。
这边一个level2只对应一个level1,level2是a的记录,虽然本身有两条,但他们的父亲都是AB。
如果撇开Level3不看,那level1和level2是很工整的,
AB-a
AB-b
CD-c
Cube维度中生成三级hierarchy。维度用法关联时候,会有警告:
无视警告,点确定,cube成功process。数据如下,前两级十分合理,没有错误。
点开第二级a,发现无法被第三级切,a1,a2皆为30. 这个在情理之中。
测试二
接下去,把维度测试数据变得更复杂一些。测试数据2 如下:
事实不变,不同点在于维度,一个level2能对应不同的level1了,例如,b的父亲即能是ABC,也能是BCD。看前两级,发现:
ABC-a
ABC-b
ABC-c
BCD-b
BCD-c
BCD-d
改完数据,process,失败。。。报错:
看来AS不允许这种重复的关系,下往上只能一对一?
于是用组合键克服这个层级关系错误。
对于level2,把他的key 设成lv1,lv2的组合。这样,因为保证了唯一性,但process维度是能process过:
然后再去维度用法里,一看,发现这没法对应了。。。
强制需要fact表同样提供两个键,否则不能点确定。
看来父子关系一乱就没法往下走了。
结论:如果要关联不是最低粒度的维度,则一定要求前几级规范。不能出现一个儿子多个爸爸,否则过不了。