-
yangqh 数据老手Lv5
发表于2019-7-25 10:50
楼主
需求场景:
思路解析: 实现方法:
维下拉参数组件,绑定多级维,并设置允许多选,现希望勾选属于不同层级的维节点后,分析表上按照勾选的维节点对应的级次来展示数据。
比如说,有多级维行政区划(省-市-区县),下拉选择河北省、太原市、密云县,那么分析表中就计算出来 河北省、太原市、密云县这三行数据,如下图:
ps:如果有某分组节点下,下级节点被全选,那么按照勾选了这个分组节点处理。
比如说,北京市下有两个节点:“市辖区”和“县”,那么当同时勾选“市辖区”和“县”时,效果同直接勾选“北京市”,所以此时分析表中只需要显示一条北京市数据,而不是显示市辖区和县两条数据。
一个浮动维表元上,只能固定选择一个下钻级次,那么是不是可以先用三个浮动维数据行,把省、市、区县三级都浮动出来,然后隐藏掉没有勾选的对应维数据行呢?
Step1、添加维下拉参数,设置参数名称、参数标题、维表,并勾选允许多选
Step2、添加分析表格,设置三行浮动行,均按照行政区划字段浮动,且分别设置下钻级次为:省、市、区县,如下图:
Step3、分析表格上增加一列辅助列,用来帮助判断当前行的行政区划,是否是维下拉中勾选过的行政区划节点。表元表达式为:
asstr(@cs).split("\|").select(true,diminf("行政区划",@)).find(self.leftcell(2).txt)
公式解析:
[size=10.5000pt]1、多级维下拉多选,参数返回值是110228|130000|140100这样的多个维ID用“|”符号隔开的字符串的格式。asstr(@cs).split("\|") 表示将@cs返回值根据“|”拆分成数组中的项并以数组格式返回,即[“110228”,”130000”,”140100”]
2、.select(true,diminf("行政区划",@))表示将数组中的每一项用diminf返回name值,组成一个新数组,比如[“河北省”,”太原市”,”密云县”],其中@表示数组中的每一项;
3、.find(self.leftcell(2).txt)表示在数组中寻找是否有本行行政区划列的值,有则返回这一项在数组中的序号,没有则返回-1;
相关wiki:http://192.168.1.200/wiki/pages/viewpage.action?pageId=590506
Step4、分别在三个浮动行的“显示”属性上设置表达式,当辅助列表元值为-1时行隐藏,否则行显示。比如第一行,省的浮动行,行显示属性上设置表达式为<#=if(C2=-1,0,1)#>
最后,将辅助列设置隐藏就大功告成啦~
3个回答
biubiu 发表于 2019-8-1 13:50
我按照步骤来的,为什么还没选择就全部都显示了呢
你这里两个浮动行,截图看不出来算出来的数据是属于哪个浮动行的。两个浮动行分别给个背景色看下结果里面数据到底是不是第一个浮动行的