1. 应用场景一
1.1 需求说明
客户某些报表有很多列,但是某些列需要根据登录的用户id来决定是否显示,例如表中的“总成本”一列,用户33可以看到,但是用户03需要对其隐藏。
实现方式:通过if判断用户id来指定列宽(如下图)
那么当需求涉及的login.id变更时,每张表都需要调整,费时费力不好维护。所以是否有办法可以在统一的入口控制修改表达式中的login.id,而不用一张表一张表的改if表达式?
1.2 解决思路
BI的自定义函数是对BI中所有报表都能生效,或许可以充当这个全局变量。
1.3 实现方法
Step1:
创建自定义函数如下:
函数标题:yc
函数定义:yc()
函数体:if(login.id in "11,22,33".split(","),72,1-1)
函数体解析:
整体是一个if()判断表达式,其中.split(",")是将字符创转化为数组的格式。
Step2:
分析表上设置列宽表达式:
实现效果:
当登录用户ID为11、22或33时,C列显示,其他用户登录访问时,C列隐藏。
2. 应用场景二
2.1 需求说明
某个表达式或者参数的返回值是1-7的数字,如何对应的转化成星期一、星期二、星期三、星期四、星期五、星期六、星期天?
2.2 实现方法
添加自定义函数如下
函数标题:xq
函数定义:xq(N i)
函数体:["星期一","星期二","星期三","星期四","星期五","星期六","星期天"][i-1]
2.3 报表效果
请先登录