环境:BIEE 11.1.1.7...
背景:
前几日,开发过程中发现某逻辑表的某逻辑列设置从表达式派生后拖至表示层,在前端分析中展示报错“事实表都不与查询请求***兼容”
该属性列C逻辑非常简单,公式伪代码如下:
CASE WHEN A IS NOT NULL AND B IS NOT NULL THEN TIMESTAMPDIFF(DAY,A,B) END
其中A在逻辑层直接映射为物理列,B在逻辑层映射为CASE WHEN D='Y' then E end
逻辑属性列A,B,C均拖至表示层
分析:
在前端如果拖A\B都可以正常执行,若拖C列则报前述错误,若根据C列逻辑在前端在公式中根据A、B重新编写则可以正常执行。
初步怀疑因为用表达式派生会造成找不到逻辑表源,但用表达式派生的指标列则一切正常;
测试用表达式派生的case when指标列也正常,怀疑是仅仅针对表达式派生的逻辑列独有;
那是否是因为B列引用的D和E列未拖至逻辑层引起的?拖至逻辑层,表示层,再次测试,报错依旧,排除之;
其它逻辑层指标也有过case when和函数映射,为什么不报错?是因为没有映射物理列所致?
修改属性列C由表达式派生为映射逻辑表源后再次测试,错误排除。
若逻辑属性列根据其它逻辑属性列派生,建议直接设置物理列映射;
课后疑问:
若不用case when,直接用函数的表达式派生逻辑列呢?