BIEE 11G 逻辑层针对属性列的case when造成“事实表都不与查询请求***兼容”的错误提示解决方法

浏览: 1843

环境: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,直接用函数的表达式派生逻辑列呢?

推荐 0
本文由 百分百 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册