第56天知识点:自定义展示行列维度,灵活应对报表多样需求!
一般情况下,我们展示的报表结构都是写死的。
什么是写死的?
就是表头展示的行列维度是固定不动的。
举个例子。
比如下面这张常见的学生成绩表。
![](https://hwobs-sq.fanruan.com/shequ_forum/image/76b33f8dc6dbf0560dcdcfca8310179c.png)
我们在添加过滤组件后,无论怎么去组合筛选条件,一般也只能做到展示某个班级,或某个学生或排名在前几的数据。
但表格展示的字段始终都是【班级】、【学生】、【分数】和【年级排名】,没有发生任何变化。
![](https://hwobs-sq.fanruan.com/shequ_forum/image/6ee82cfd900bf20de61582a860ee3da2.gif)
这就是前面提到的报表结构是写死的,其实也就是表格的行维度与列维度都是固定的,无法实现自定义展示。
但有些时候,我们需要灵活一点的展示方式来适应不同的场景需要,比如:
在展示班级成绩信息时,只展示【班级】、【分数】两个字段;
在展示学生成绩信息时,展示【学生】、【分数】、【年级排名】三个字段。
就像下面这样。
![](https://hwobs-sq.fanruan.com/shequ_forum/image/2270bef8ef5bb1250681b0afdbc7463d.gif)
这样的效果该怎么实现呢?
答案就是参数。
接下来,我们就通过一份模拟数据来演示一下如何在FineBI中实现自定义展示行维度与列维度的效果。
首先,我们来看一下如何实现自定义展示行维度。
首先,上传我们准备好的模拟数据。
![](https://hwobs-sq.fanruan.com/shequ_forum/image/feac3d14dc5ff4de103756abaa53d316.png)
结果如下:
![](https://hwobs-sq.fanruan.com/shequ_forum/image/e9b10c3d7a658e9bf67d9216d93a5640.png)
--> 添加参数
--> 参数名称输入:【控制行】
--> 参数类型选择:文本
--> 默认值:为空
--> 点击确定
![](https://hwobs-sq.fanruan.com/shequ_forum/image/d3d9194f6a3ce0a534e3d2a96ac39720.png)
为什么要添加参数呢?
这一步是为了与后面仪表板中的过滤组件做绑定,进行数据传递。
可以简单理解为:
后面我们过滤组件选择什么值,这里的参数就会等于什么值。
即过滤组件的值=参数的值。
![](https://hwobs-sq.fanruan.com/shequ_forum/image/4219db6256f3d061471a2326a5423a9c.png)
这个公示的含义就是如果我们的参数等于班级,那么就展示【班级】字段,否则就展示【学生】字段。
这一步的目的是什么呢?
就是为了实现参数控制展示的行维度。
第2步中我们提到了参数的值=过滤组件的值。
所以,这里就相当于将我们的过滤组件值与需要展示的行维度进行了绑定。
如果不太理解的话,可以简单理解为:
A=B,B=C,所以A=C。
也就是过滤组件控制参数,参数控制展示的行维度,所以最后我们可以通过过滤组件控制展示的行维度。
-->图表类型选择分组表
-->将【展示行维度】放入维度栏,【分数】、【年级排名】字段放入指标栏
![](https://hwobs-sq.fanruan.com/shequ_forum/image/154b254b99a83d1644b7fa766e06d5f4.png)
结果如下:
![](https://hwobs-sq.fanruan.com/shequ_forum/image/4eae1888a1709a18643d566d3de181ef.png)
-->添加过滤组件—文本过滤组件—文本下拉
-->过滤方式:单选
-->自定义值列表:输入:班级、学生
-->绑定参数:绑定第2步添加的参数值【控制行】
![](https://hwobs-sq.fanruan.com/shequ_forum/image/a3cab55a094af870043fc343ec9e524d.png)
结果如下:
![](https://hwobs-sq.fanruan.com/shequ_forum/image/e355d4957b16b5cf763d53daec4e8064.gif)
这样我们就实现了行维度只展示【班级】或【学生】了。
但列维度仍然无法实现自定义,只能通过组件中去掉某一指标来实现。
![](https://hwobs-sq.fanruan.com/shequ_forum/image/7b41bcc324a4d90e424249263e6fe6c0.gif)
这和我们的目标还相差甚远。
那如何实现列维度自定义显示呢?
其实很简单。
我们只需要对数据集进行一步【列转行】的预处理。
【列转行】:列转行字段选择:【分数】、【年级排名】
![](https://hwobs-sq.fanruan.com/shequ_forum/image/1c94eea3b5ea310048daddc80cff747b.png)
结果如下:
![](https://hwobs-sq.fanruan.com/shequ_forum/image/aa88042f184b77ecd5392397005fafa2.png)
-->图表类型修改为交叉表
-->行维度放入【展示行字段】,列维度放入【列字段】,指标栏放入【值字段】
![](https://hwobs-sq.fanruan.com/shequ_forum/image/d6db39a2871937c0d3182c825e3cff0a.png)
结果如下:
![](https://hwobs-sq.fanruan.com/shequ_forum/image/a1958554ebad357b2cfc01c84c207e02.png)
-->添加过滤组件—文本过滤组件—文本下拉
-->将数据集中的【列字段】拖入【字段】栏中,与过滤组件绑定
-->其它默认设置,不做修改
![](https://hwobs-sq.fanruan.com/shequ_forum/image/45d442bf701624bf9bb649ea6769732e.png)
最终结果如下:
![](https://hwobs-sq.fanruan.com/shequ_forum/image/7017edee0cf3a33fca07aeef7817f901.gif)
这样就可以实现我们前面提到的效果:
在展示班级成绩信息时,只展示【班级】、【分数】两个字段;
在展示学生成绩信息时,展示【学生】、【分数】、【年级排名】三个字段。
自定义展示行维度与列维度,看似很难实现,但是只要理解其中的逻辑,也能达到我们想要的效果。
比如,如何控制显示【班级】还是【学生】?
这就需要我们把【班级】与【学生】与过滤组件绑定,过滤组件选择哪个就展示哪个?
但怎么让过滤组件选择哪个就展示哪个呢?
中间需要一个媒介,就是添加一个动态参数。
通过将参数与过滤组件绑定。
但参数绑定后,又怎么实现展示字段的动态变化呢?
需要一个新的随参数变化的字段。
所以需要添加计算字段来实现新字段与参数的绑定。
这样一步一步理下来,制作思路自然也就清晰了。
自定义展示【分数】、【年级排名】也是一样的道理。
既然【分数】、【年级排名】2个值字段是固定的,只能通过拖入或拖出指标栏来控制字段的展示,那么我们就可以想一个方式,让其变成可以控制展示的文本字段,那【列转行】自然就是最高效的一种解决办法。
然后,再通过过滤组件去绑定我们的文本字段,这样就能解决不同场景下选择展示【分数】还是【年级排名】的问题了。
但目前【展示行字段】表头的名称无法实现跟随过滤组件的筛选值而动态变化,比如,当【选择需要展示的行维度】过滤组件选择【班级】时,表格中的【展示行字段】会变成【班级】,过滤组件选择【学生】时,会同步变成【学生】。
如果大家有什么好的方法去实现自定义展示行列维度,欢迎评论区留言分享。
感兴趣的小伙伴可以自己动手试试看~ |