首页 >

BI从I获取代码组表元数据进行过滤

方式适用于Oracle数据库

需求:

     I表元使用代码组,存储内容格式为1,2,3类似格式,如下图:

   BI有一个多选维下拉框(单层级)和I的代码组内容一直,如果BI中选择 了1|3两项,那么过滤出的数据就是所有包含1和3 的记录(例如1,2,3/1,3,4/3,1,5/)都包含1和3

   如果下拉框为空,显示全部数据

   数据内容不是维表的id字段,是维表的caption内容,例如 如果选择了1|3,择得到结果1,3,4,此时Bi界面需要显示的内容为:北京,广州,武汉

解决方案:

   1、通过sql数据源获取需要的结果集(此处应用到oracle的regexp_substr,将单表元内容 变成多条记录显示 ,在利用mimus的方式获取差集)

    2、通过显示表达式的方式将 id显示为  文本内容(此处应用到数据函数)

具体步骤

 一、sql数据源设置:

select b1 from IXJRW_B01 where b1 in(

select b1 from IXJRW_B01 

minus

select b1 from IXJRW_B01 aa where  exists (

select b1

  from (select REGEXP_SUBSTR("<#=if(len(@dq)=0,ardb("select distinct id from DIM_DQ").join(","),substitute(asstr(@dq),"|",","))#>""[^,]+", 1, level) AS b1

          from dual bb

        connect by level <= LENGTH("<#=if(len(@dq)=0,ardb("select distinct id from DIM_DQ").join(","),substitute(asstr(@dq),"|",","))#>"- LENGTH(REPLACE("<#=if(len(@dq)=0,ardb("select distinct id from DIM_DQ").join(","),substitute(asstr(@dq),"|",","))#>"",")) + 1) b

minus

select REGEXP_SUBSTR(<#=if(len(@dq)=0,"""^asstr(ardb("select distinct id from DIM_DQ").join(","))^""","B1")#>, "[^,]+", 1, level) AS b1

          from IXJRW_B01  where b1 =aa.b1

        connect by level <= LENGTH(<#=if(len(@dq)=0,"""^asstr(ardb("select distinct id from DIM_DQ").join(","))^""","B1")#>) - LENGTH(REPLACE(<#=if(len(@dq)=0,"""^asstr(ardb("select distinct id from DIM_DQ").join(","))^""","B1")#>, ",")) + 1      

 )

)

其中,用到了红表达式:

<#=if(len(@dq)=0,ardb("select distinct id from DIM_DQ").join(","),substitute(asstr(@dq),"|",","))#>

<#=if(len(@dq)=0,"""^asstr(ardb("select distinct id from DIM_DQ").join(","))^""","B1")#>

1、如果为空情况,相当于全选minus全选,所以得到全部结果

2、如果有选项,择把选项内容由于1|3的格式变成  1,3的格式,minus  B1字段(1,3 被变成两条记录  1 一条,3一条, minus B1字段 字段内容也变成了多条记录   )

二、显示表达式设置

@txt.split(",").select(true,diminf("DQ",@,"NAME")).join(",")

先识别‘," 把记录1,3,4变成数组[1,3,4]在利用select遍历数组  把id 通过diminf 获取到name字段,在将数组["北京","广州","武汉"]通过join的方式变成字符串 北京,广州,武汉

附件中内容三个分别是:

维表.zip

分析表模板.zip

数据库表.zip

附件列表

0

文档内容仅供参考
如果您需要解决具体问题,还可以登陆亿信社区
在提问求助板块提问,30分钟内帮您解决问题

如果您认为本词条还有待完善,请编辑

上一篇标签页钻取传参

下一篇浮动面板

请先登录

创建词条

词条信息

admin
admin

超级管理员|词条创建者

1415

浏览次数:432 次

更新时间:2018-10-12