OBIEE 设置逻辑表源优先级
在 BIEE 的逻辑层可以配置多个物理表源,这样可以通过一个逻辑表访问到不同粒度的物理事实表。
比如说,可以创建一个以月为粒度的事实表,将之与一个月份维度表关联;再创建一个以日期为粒度的事实表,将之与一个日期维度表关联。如果这两个事实表有大量的字段名称重合,那么就可以将之整合到同一个逻辑表中,这样在 dashboard 中选择不同的时间粒度,BIEE 可以自动匹配与之相关联的物理表源,从而实现查询相应粒度的事实表。这样在按月查询数据的时候就不会走日期粒度的事实表,减少很多聚合,大大提升查询效率。
另外,这种方法可以少创建一些逻辑表,在模型比较复杂的时候会让模型变得更简洁,dashboard 做可视化开发的时候更简单(不用经常去分辨多个含义相同的列),后期维护成本也会在 dashboard 层次和模型层次有所降低。
1. 配置多个物理表源的方法
将一个物理表拖到逻辑层中,RPD 自动生成一个逻辑表;将其他需要的物理表再次拖到这个逻辑表上,直观看上去好像没什么变化,但是点开这个逻辑表的“Source”,可以看到多了一个逻辑表源,就是刚刚新拖入的那个物理表。如果多个物理表源具有相同名称的列,这几个源会自动添加到这个列中;如果新拖入的物理表中含有一个列在原有的逻辑表中是没有的,那么逻辑表会自动创建这个逻辑列,且其列源中只有那一个物理表。
设置逻辑源表.png
2. 查询怎样自动选择逻辑表源
在有多个物理表源的情况下,选择逻辑表源的顺序是:优先级组 > 逻辑表源的粒度 > 同等级包含的元素数量 > 逻辑表源的排列顺序,具体说明见官方文档:
- Logical table source priority group(优先级组). A higher priority logical table source is used before a lower priority logical table source, even if the higher priority source is at a more detailed grain. Note that a lower number indicates higher priority.
- The grain of the logical table source(逻辑表源的粒度). A higher-grain logical table source is used before a lower-grain logical table source, given that the priority group numbers are the same.
- Number of elements at this level(同等级所包含的元素数量). If the grains are not comparable, the number specified for the Number of elements at this level field is considered.
For example, assume you have the following two logical table sources with grains that are not comparable: LTS1(year, city) and LTS2(month, state). If you have 10 years, 100 cities, 120 months, and 9 states, the worst case size of LTS1 is 10 x 100 = 1000, and the worst case size of LTS2 is 120 x 9 = 1080. In this scenario, LTS1 is selected because the source with the lowest estimated number of total elements is assumed to be the fastest.- First logical table source listed(逻辑表源的排列顺序). If all other criteria are equal, the first logical table source listed is selected, as shown in the Business Model and Mapping layer.
3. 物理表源的优先级组
在以上四个选择顺序中,第一项和第二项是最常用的,后面两项一般用到的概率不大,不然这个模型就太复杂了,可能要考虑优化一下。
至于优先级组,“0”是最高的优先级,“1”次之,以此类推。
逻辑表源的优先级组.png
API 中对优先级组等级的描述:
To assign priority group numbers, rank your logical table sources in numeric order, with 0 being the highest-priority source. You can assign the same number to multiple sources. For example, you can have two logical table sources in priority group 0, two logical table sources in priority group 1, and so on. Often, only two priority groups are necessary (0 and 1).
参考文章:
Managing Logical Table Sources in OBIEE
多个逻辑表源时,OBIEE 如何确定访问哪个事实表
看到有另一种设置动态物理表源的方法,通过初始化块来实现:BIEE RPD 物理层动态选择表来源