环境:BIEE 11.1.1.7...
背景:
某天碰到一个奇葩需求,需要展示这样的报表
2015 /01 指标A 指标B 指标C 指标D 指标E 指标F
。。。。。。
其中,指标A\B\C和时间维有关联,指标D\E\F和时间无关,也就是报表的指标D\E\F列的列值相同。
对于这样的表格展现,开发很是疑惑,到底RPD该怎么设置呢?
指标A\B\C和时间维有关的,常规设置和关联即可。可后面的3个指标D\E\F呢?到底要不要设置物理层连接?逻辑层呢?层级设置呢?
直接上结论:
照常设置事实表和时间维的物理层连接,照样设置逻辑层和时间维的连接关系,照样设置逻辑表源对时间维的层级,在指标D\E\F上设置对时间维的层级为Total即可。
其中:物理层连接和逻辑层连接影响指标走逻辑表源,即从哪个逻辑表源出指标。到出具体指标的sql的时候,指标上的层级关系确定怎么出相关的SQL。
上面的例子中,出指标D\E\F和时间维的时候,是分为2段SQL出的。然后展示的时间和指标D\E\F是通过FULL OUT JOIN 去拼接的。
这个过程出现了一个奇怪的事情,明明事实表有某个月份的数据,但表格未展示,跟踪sql发现走到了另外一个逻辑表源,从另外一个事实表出的时间维数据。
假设有多个逻辑表源都映射了某指标,那最后到底是什么样的规则影响了逻辑表源选择呢?这里要说下选择逻辑表源规则:
首先看优先级组的设置,0高于1
其次,满足所有展示要求的逻辑表源,若优先级相同,则高level的优先于低level的。
再次,若前2者相同,则所有成本最少的逻辑表源出,例如A表源对应有2个维度层级,维度层级数量分别有10个和9个,则成本为9*10,B表源对应有3个维度,维度层级数量分别为3,4,5,则成本为3*4*5,那么B表源优先于A表源
最后若以上条件都满足,则按逻辑表源出现的次序。