亿信ABI
当前版本:BI4.7

ardb函数在参数联动中的应用

1. 需求说明

场景概述:客户的分析表表格数据来源于数据库表B,页面上需要有三个参数,其中有两个参数内容希望可以直接获取另外一张数据库表A中的两个字段的内容,同时,这三个参数需要有联动效果,具体如下: 

1)数据存储情况说明:

电力公司,任务id,以及该任务对应的数据期,存储在数据库表A中,具体如下图。


 

 

2)分析表样说明

     分析表中设置的3个参数分别是【电网企业】、【任务号】和【年份】,其中【电网企业】参数直接使用的维表内容,但【任务号】和【年份】参数需要分别获取数据库表A中对应的2个字段的数据,【任务号】参数的下拉内容要根据【电网企业】参数决定,【年份】参数的下拉内容要根据前两个参数决定,即3个参数间需要联动的效果。


 

 

2. 问题分析

实现【电网企业】,【任务号】,【年份】三个参数联动。过程中主要解决两个问题:

1)由于【任务号】【年份】参数内容来源于数据表A,所以需要通过SQL先将可选的【任务号】、【年份】查询出来。

2)客户在表A中的数据期的存储方式比较特殊,最终应用于参数中时要以下拉列表的形式展示,故要将表A中存储的数据期解析成数组,通过枚举下拉形式显示在下拉列表中,同样,任务id也需要解析为数组。


3. 解决方案

STEP1:电网企业联动任务号

方法:【电网企业】内容直接来源维表,故设置为维下拉框,【任务号】设置为枚举下拉,设置电网企业参数行为,属性部分选择枚举值,任务号值通过sql查询,再使用ardb函数引用。


 


    参数值如下:变量@gwgs为电网企业

      ardb("SELECT TASKNAME(任务名称) || ":" || TASKNUM(任务id)

               FROM 表A

               WHERE REGIONID(电网企业) = ""+@gwgs+""

               ORDER BY CREATEDATE(年份) DESC

     ").join(";")

 

说明:枚举下拉参数中枚举值的写法是:A:aaa;B:bbb;C:ccc(显示值:实际值)所以在sql中要在任务名称和id之间拼一个冒号“:”,另外还要在每一个可选项后加分号,由于SQL返回一个结果集,ardb函数把它处理成数组格式,所以在ardb函数使用时通过join属性连接分号。

Ps:上述sql中的变量引用也可直接使用宏表达式,即<#=@gwgs#>,如果ardb函数还将通过宏表达式引用,由于宏不能嵌套使用,则采用上述写法。


STEP2:电网企业+任务号联动年份

    方法:【年份】参数设置为枚举下拉,同step1中的方法,设置【电网企业】和【任务号】的参数行为,联动【年份】参数的枚举值。


 


 

年份参数值如下:变量@tnum为任务id,@gwgs为电网企业

ardb("SELECT REPLACE((YR || "年:" || YR), ",", ";") YR

          FROM (SELECT REGEXP_SUBSTR(YR, "[^,]+", 1, ROWNUM) YR

                        FROM (SELECT CURRENTWATERMARKYEAR(A.数据期) YR

                                     FROM 表A   

                                     WHERE TASKNUM(任务id) = ""+@tnum+""

                                     AND REGIONID(电网企业) = ""+@gwgs+"")

        CONNECT BY ROWNUM <= LENGTH(YR) - LENGTH(REPLACE(YR, ",", "")) + 1)

  ").join(";")

 

说明:上述sql主要是将表A中的数据期字段“2005,2006,2007,2008”,处理为如下结果,枚举值的处理方法参考step1中的说明。

 

2005年:2005

2006年:2006

2007年:2007

2008年:2008


如此便可实现年份参数内容根据电网企业和任务id参数动态获取,再通过定义过滤条件使得年份参数对分析表中数据生效即可。

附件列表

2

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

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

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

下一篇echarts炫酷统计图

请先登录