-
坏小孩 初学数据Lv2
发表于2018-6-28 09:52
楼主
应用场景一:需求说明:某些报表有很多列,但是某些列需要根据登录的用户id来决定是否显示,例如表中的“总成本”一列,用户33可以看到,但是用户03需要对其隐藏。
实现方式:通过if判断用户id来指定列宽(如下图)
那么当需求涉及的login.id变更时,每张表都需要调整,费时费力不好维护。所以是否有办法可以在统一的入口控制修改表达式中的login.id,而不用一张表一张表的改if表达式?
实现方式:通过if判断用户id来指定列宽(如下图)
那么当需求涉及的login.id变更时,每张表都需要调整,费时费力不好维护。所以是否有办法可以在统一的入口控制修改表达式中的login.id,而不用一张表一张表的改if表达式?
1个回答
我的思路:BI的自定义函数是对BI中所有报表都能生效,或许可以充当这个全局变量。
实现方法:Step1:创建自定义函数如下:
函数标题:yc
函数定义:yc()
函数体:if(login.id in "11,22,33".split(","),72,1-1)
函数体解析:
整体是一个if()判断表达式,其中.split(",")是将字符创转化为数组的格式
Step2:分析表上设置列宽表达式:
实现效果:当登录用户ID为11、22或33时,C列显示,其他用户登录访问时,C列隐藏。
实现方法:Step1:创建自定义函数如下:
函数标题:yc
函数定义:yc()
函数体:if(login.id in "11,22,33".split(","),72,1-1)
函数体解析:
整体是一个if()判断表达式,其中.split(",")是将字符创转化为数组的格式
Step2:分析表上设置列宽表达式:
实现效果:当登录用户ID为11、22或33时,C列显示,其他用户登录访问时,C列隐藏。