亿信ABI
当前版本:BI4.7

复选下拉框,如何展示对应指标列字段sum(指标列值)

1.需求说明


已知参数:复选维下拉框,如下图:



数据库表:下拉框每一个item对应一个主题表字段列,如下图:



展示效果:如果勾选了两个指标列 gas、gasoline,择浮动展示内容如下(浮动展示的行数和复选内容强关联):



2.实现思路


1)首先考虑生成sql内容:select sum(gas),sum(gasoline) from can_signal

2)考虑勾选内容如何浮动(该处使用到数组)

3)如何在浮动勾选内容后,展示对应指标的sum()值


3.实现步骤


第一步:使用sql数据源的方式,达到所需sql的目的,具体sql数据源内容为(具体 sum的列,使用数组方式得到字符串sum(gas),gum(gasoline)):

select  <#=if(len(@car_base_infoa)=0,"0 aa",asstr(@car_base_infoa).split("|").select(true,"sum("^mid(@,2)^")").join(","))#>  from  can_signal

先强制转换成字符串asstr是考虑到如果单选的情况,使用@car_base_infoa.value这无法调用select函数,所以先转字符,再转数组,然后利用select给每一项拼接"sum(" ,")"


第二步:第一步中已经使用过数组,第二步和第一步区别在于第一步最后需要的是字符串,第二步只需要得到浮动的数组即可,内容如下:


           


            表元表达式内容:asstr(@car_base_infoa).split("|").select(true,mid(@,2)),该处浮动出了英文名称列,中文名称列的 获取只需要在BI表元中写表达式内容:diminf("行车指标分类","1$"^GRID1.A1)即可。


第三步:sql数据源中列的获取方式有:(1) rs1.gas  (2)rs1.1 (3) sel1("rs1",1)  (4)sel1("rs1","gas")

              此处我们使用第三种方式,利用row()得到列号

              所以最后我们在C1表元中表达式中输入内容为:sel1("rs1",row()+1)

              显示表达式输入if(len(@car_base_infoa)=0,"--",@txt),此处设置如果未勾选内容情况下显示内容


4.发散思考


上面讲述的是在未勾选的情况下,不展示任何 指标列,如果我们在未勾选的情况下需要展示全部内容,需要如何实现?? 

切记不要直接在if中设置当len=0的情况下 拼接"*",因为无法获取正确的指标列顺序,所以此处可以使用隐藏参数,该参数内容和上面 所用的参数相同,默认全部勾选。

附件列表

0

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

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

上一篇数据分析中序号/排名/排序/top分析

下一篇ardb函数在参数联动中的应用

请先登录