当前位置: 仪表板 >> 仪表板优势 >> Tableau小钉子做个翻页
一、背景
#昨天气球跟客户开了一天会,会议中间休息的时候,突然被人
到了一个问题,当时想到了实现方法,但是提问的小伙伴质疑了思路,但是由于当时没时间,所以就放下了;晚上回家之后,有点空闲的时候,突然想起来这件事,就做了一个示例发到了群里,结果感觉好多人都很有兴趣的样子,就把工作簿先分享了,然后现在来记录下来实现的方法;沟通过程如下:
样例长这样,其中中间下方的红框部分是问题所在:
然后,当时想到的实现思路:
最后实现的效果如下:
二、步骤
实现的方法如下:
还是以超市数据集为例,首先设置一个参数,[00.每页行数],假定我们可能会用每页10行、20行或30行的方式查看列表,在这里就设置了三种选项;
接着再创建一个参数,[00.选择页码],为了标记当前想查看的页码号;
接着编写一个计算字段,[01.行号],没什么特殊的,简简单单一个INDEX()
创建好之后,要改成离散
接着创建一个计算字段,[02.页码],目的是为了按每页数据的行数,自动计算出页面值;
INT((INDEX()-1)/[00.每页行数])+1
公式原理,把行号除以一页的行数,会得到一串小数,然后号整数位是一样的,第一个是0.xxx开始的,所以取整之后是第一页是0,需要加上一个1,才符合我们的习惯。列个表示意一下:
创建好之后,同样也需要改成离散
这时,我们创建一个工作表,按[订单ID],列出[销售额]、[数量]、[折扣]、[利润]、[毛利率]等度量;
这时,我们把[01.行号]放到行的最左边,计算依据可以检查一下是否是表向下或者[订单ID]
这时从右边的滚动条可以看出,现在是所有的订单都列出来了,而我们只需要当前工作表显示指定页码的内容,所以我们需要写一个计算字段来进行约束,创建设计字段[03.选中页码]
[02.页码]=[00.选择页码]
然后,把[03.选中页码]放到筛选器,选择”真”,记得,要检查计算依据是否为[订单ID]
这时,工作表就准备好了,不用再处理了,接下来,我们要解决页号显示的问题,我们创建一个工作表,把[订单ID]放到详细信息,把[02.页码]放到标签,标记类型选为”文本”,这时,所有的订单对应的页码号,都会显示出来,记得检查[02.页码]的计算依据是不是[订单ID];
然后,我们需要判断一个范围,就是前选中页码的前2位和后2位,一共5个数字的范围,比如,现在我选择的页码是5,我希望显示出3、4、5、6、7,这5个页码号,所以需要一个判断,创建计算字段[03.选中页码范围],
IF[00.选择页码]=5THEN[02.页码]=5ELSEIFWINDOW_MAX([02.页码])-[00.选择页码]=5THEN[02.页码]=WINDOW_MAX([02.页码])-5ELSEABS([02.页码]-[00.选择页码])=2END解释一下公式,先说第三排,如果页码值与选择页码参数值的偏差在正负2以内,那么就符合条件,就保留这5个值,
但是有两个特殊情况,如果页码参数值在最开始,或者最后的时候,就会出现,只有3个数显示的情况,所以第一排处理的是,如果选择的页码参数值小于等于5的时候,就显示最前面5个;
而第二排处理的是,如果选择的页码参数值此大于等于最大页码数减5,那就显示最后5个;
然后把[03.选中页码范围]放到筛选器,选”真”,并且设置计算依据为[订单ID]
然后,按住Ctrl键,把[02.页码]复制一个到列里,就可以得到一个页码的列表了,;
这时因为有[订单ID]在详细信息的缘故,所以每个页面都显示了10个数,没关系,只需要在”行”里双击,然后敲一个数字0在里头,然后回车,就可以了。
然后,为了强调选中的那个页面,我们可以把[03.选中页码]放到颜色,然后给”真”值设置为黑色,”伪”值设置为灰色,就可以了。这样,页码号的工作表就准备好了
接着我们要来处理翻页的问题,翻页的原理其实很简单,就是给点击的按钮设置一个值,让这个值来生成相对于现在的页码参数值的相对偏移量,比如我现在的页码是5,那我希望点击””号,就减少一个,变成4,如果点击””号,就增加一个,变成6,那我们就可以设置两个计算字段来实现,首先是[04.回退1],因为页码不可能是负数,所以如果参数值在小于等于1的时候,就保持为1,否则,就用当前参数值-1
IF[00.选择页码]=1THEN1ELSE[00.选择页码]-1END
然后是[04.前进1],如果页码参数值大于最大的页码值,就会出现空白的情况,所以我们不能翻过头了,要判断一下,如果参数值与最大页码值的差距小于等于1,那就只能到最后一面,不可以再往后翻了,否则的话,就用参数值+1
IFWINDOW_MAX([02.页码])-[00.选择页码]=1THENWINDOW_MAX([02.页码])ELSE[00.选择页码]+1END好,这时创建工作表,把[订单Id]和[04.回退1]放到详细信息,这里有小伙伴可能会质疑,为什么要放[订单ID],原因后面解释,然后,要创建一个计算字段[05.],内容就是一个文本的””
然后把[05.]放到文本,并且在列敲个0轴,工作表就准备好了;
接着创建一个计算字段[05.],内容就是一个文本的””
接下来创建一个工作表,道理一样,只不过计算字段要放[04.前进1]和[05.]
这样,翻单页的工作表,我们就准备好了,接下来是翻多页,因为我们这里设计的一次只显示5个页码,所以我们翻页一次不能翻多,最多也就是前后翻5页,这样才不会断档;
所以,我们先来设置翻页的计算字段,首先是[06.回退5],有前面的说明,这里应该看得懂了,就不多啰嗦了;
IF[00.选择页码]=5THEN1ELSE[00.选择页码]-5END
然后创建计算字段[06.前进5]
IFWINDOW_MAX([02.页码])-[00.选择页码]=5THENWINDOW_MAX([02.页码])ELSE[00.选择页码]+5END接下来创建计算字段[06.],平平无奇两个””号
当然还有[06.],也是两个””
接着创建工作表,内容跟之前的工作表基本一样,只是字段换一下。
还要创建工作表,同样也是参照工作表
那么到这里,我们需要的6个工作表都准备好了,就可以在仪表板里进行组合了;
在组合好了仪表板之后,最重要的就是让每个工作表交互起来,要来设置仪表板动作,选择顶部菜单中的”仪表板”-“操作”-”添加动作”-”更改参数”,这里,我们一共要添加5次动作;
参数1
参数2
参数3
参数4
参数5
这样,就可以了,再来看一遍效果:
Public地址如下: