-
jiangss 初学数据Lv2
发表于2018-8-14 14:08
悬赏1
已解决
楼主
1)主题表报表期设置:A表数据期字段bbq:6位(年月),B表数据期load_date:8位(年月日)
2)在BI分析表关联关系中设置,A表和B表内连接,连接表达式:A表.CONT_NO=B表.CONT_No and left(A表.load_date,6)=left(A表.load_date,6)
3)在BI分析表制作中,设置报表参数@bbq 为日期型(年月日),计算时选择'20180813'
4)BI分析表 A列依据A表.dept_no 浮动,B列取值为:=if(A表.five_type='01',B表.balance,0)
5)在数据期条件或过滤条件中写:B表.load_date=@bbq
而在计算时,生成的sql里会有:A表.load_date='20180813',而没有B表.load_date='20180813' ,可是条件里明明写的是B表.load_date=@bbq?
2)在BI分析表关联关系中设置,A表和B表内连接,连接表达式:A表.CONT_NO=B表.CONT_No and left(A表.load_date,6)=left(A表.load_date,6)
3)在BI分析表制作中,设置报表参数@bbq 为日期型(年月日),计算时选择'20180813'
4)BI分析表 A列依据A表.dept_no 浮动,B列取值为:=if(A表.five_type='01',B表.balance,0)
5)在数据期条件或过滤条件中写:B表.load_date=@bbq
而在计算时,生成的sql里会有:A表.load_date='20180813',而没有B表.load_date='20180813' ,可是条件里明明写的是B表.load_date=@bbq?
最佳答案
jiangss 发表于 2018-8-14 14:17
可是条件中并未写A表.load_date=@bbq 呀,写的是B表.load_date=@bbq,sql为什么会使用A.load_date呢? ...
当遇到了这类问题,第一时间我们就应该想到一致性维度规则。
我们先了解下一致性维度规则:
一致性维度规则
当主题表A中字段zb1和主题表B中字段zb1构成了一致性维度,则程序会认为A表的zb1等同于B表的zb1,
1.出于优化sql的考虑,程序会尽量减少表间的关联,而在解析维和过滤条件的表达式时尽量从当前表取字段;
2.如果不能避免表间关联,则解析维和过滤条件的表达式时,优先从主源表取字段,主源表中找不到,才会从指定的表取。
注,"维"是指报表展示角度,即浮动表元或者固定维表元等
3.不同主题表中的字段如何构成一致性维度
比较其"名称"、"别名"、"标题"、"对应维"等信息,如果大部分信息一致,则认为他们构成了一致性维度,是相同的。特别需要注意,"对应维"权重很大,一旦这个属性相同,则认为不同主题表中的这两字段构成了一致性维度。
7个回答
方菁 发表于 2018-8-14 14:14
因为A表和B表做了关联关系,所以直接针对A表进行了过滤。
可是条件中并未写A表.load_date=@bbq 呀,写的是B表.load_date=@bbq,sql为什么会使用A.load_date呢?
jiangss 发表于 2018-8-14 14:17
可是条件中并未写A表.load_date=@bbq 呀,写的是B表.load_date=@bbq,sql为什么会使用A.load_date呢? ...
当遇到了这类问题,第一时间我们就应该想到一致性维度规则。
我们先了解下一致性维度规则:
一致性维度规则
当主题表A中字段zb1和主题表B中字段zb1构成了一致性维度,则程序会认为A表的zb1等同于B表的zb1,
1.出于优化sql的考虑,程序会尽量减少表间的关联,而在解析维和过滤条件的表达式时尽量从当前表取字段;
2.如果不能避免表间关联,则解析维和过滤条件的表达式时,优先从主源表取字段,主源表中找不到,才会从指定的表取。
注,"维"是指报表展示角度,即浮动表元或者固定维表元等
3.不同主题表中的字段如何构成一致性维度
比较其"名称"、"别名"、"标题"、"对应维"等信息,如果大部分信息一致,则认为他们构成了一致性维度,是相同的。特别需要注意,"对应维"权重很大,一旦这个属性相同,则认为不同主题表中的这两字段构成了一致性维度。
一般一致性维度的问题可以通过修改分析表改变主源表或冗余一个维度,修改其名称,让两个主题表对应的维度名称不一样来解决
解决方法:
方案一:先试试将B列设置为指标,在B列的数据期条件里写B表.load_date=@bbq;
方案二:将浮动维后一个表元设置为B表的任意一个表元(这样做的目的是将主源表设置为B表)
方案三:在主题表里对应的维度修改为不一致的,如果对应一样的维度,增加一个维度,修改其名称就可以了。