-
1505121235 数据老手Lv5
发表于2019-7-9 00:18
楼主
本帖最后由 1505121235 于 2020-2-24 14:15 编辑
复制代码
实现方法:
第一步:组件的取数设置,一般分两种情况:取固定值或者是动态值。
如果取固定值是需要写成一个二维数组的格式,如下图所示:
如果希望动态取表元的值,那么组件取数可以设置为:<#=[[GRID3.A2$],[GRID3.B2$]].matrix()#>,与[[1,"CA"], [2,"MU"], [3,"HU"], [4,"3W"]]等价
ps:数组行列转换用.matrix()
ps:数组行列转换用.matrix()
第二步:参数单选/多选
(1)参数单选过滤条件及报表设计如下:
参数单选时,表格的过滤条件很容易,<#=mkfilter("FY.BBQ_ in @cs")#>或者<#=mkfilter("FY.BBQ_=@cs")#>
(2)1.清楚参数多选返回的对象格式,利用宏表达式获取参数多选的返回值,定义事件实现参数组件联动表格计算并获取宏表达式的值
选中下拉框组件,右侧属性事件中定义
- function dochange(data) {
- calc_Special_Widget(new Map("calc_widget_id=GRID2;@cs="+data));
- }
2.参数多选时表格的过滤条件
因为参数多选返回的数据格式为201409,201410,201411,所以需要利用函数split('\,')
PS:asstr(*):将某个值转换成字符串类型
split():字符串可以通过split函数返回一个数组,下拉维多选或下拉枚举多选时,参数多选返回值通常格式为value1|value2|value3|value4,即用竖线作为分隔符。在BI中使用字符串.split分隔它时,"|"是一个特殊字符,需要在前面加个转义符"\",则@cs.value.split("\|")可得到已选参数值的数组格式
join():join把数组对象用指定连接符连接为字符串,@cs.value.split("\|").join(","),可修改其中的分隔符为逗号,得到逗号分隔的普通字符串
知识点扩展:BI报表模板中维下拉参数多选,通过宏表达式获取的对象格式与酷屏中有所不同,报表模板中参数多选的返回对象格式为201409|201410|201411,酷屏中参数多选的返回对象格式为201409,201410,201411,所以要特别注意函数中需要转义的字符到底是|还是,
4个回答
-
1505121235 数据老手Lv5
沙发
ps:字符串可以通过split函数返回一个数组,分隔符为特殊字符时,要在分隔字符参数值前面加转义符"\"("|"和“,”是一个特殊字符,需要在前面加个转义符"\")
非常棒的文章,可以参加我们的额有奖征文活动哟~
附上活动链接
http://bbs.esensoft.com/thread-132185-1-1.html