Ken Flerlage:Tableau Zen大师和大使|分析架构师,战略家和传播者|数据分析助理总监
Kevin Flerlage:Tableau Zen Master | Tableau公共大使| TUG的共同负责人| Unifund的高级分析师和Tableau开发人员
另本文由Tableau爱好者——向十五对原文进行翻译,若有问题,欢迎讨论。
在Tableau创意论坛的历史中,动态参数(经常被称作Hooperized Parameters,以original Zen Chuck Hooper命名)是最受欢迎的功能请求。幸运的是,Tableau开发团队已经在发布的桌面版本2020.1中为我们提供了此功能!!!!我最近花了一些时间测试它们。我个人是在一个地方被难到了,所以让我花几分钟告诉你设置动态参数的目的,它们如何起作用,以及使它们起作用的关键,然后为你提供好的用例。
动态参数与标准参数基本相同,但多了两个优点:
第一,当打开工作簿时,你可以使用数据源里字段的值更新你的参数。比如,你每个月更新一次你的数据提取,以包含之前的月份。如果你使用日期参数,你可以让日期字段中的所有值(包括最新月份的值),来更新该参数列表。这些参数值不再是静态的,也不再需要手动更新。
第二,你可以将参数设置成使用你选择的值自动填充。以之前的日期举例,当用所有值更新日期参数列表时,你可以将日期参数设置成自动选择最近的日期。(请注意,我的例子主要关注日期,但是动态参数可以被应用到任意参数数据类型,而不仅仅是日期类型)。
自动填充
我们首先聊聊如何使用特定字段填充你的参数。为此,我自己创建了一个包含2019年每月数据的数据集——我鼓励你下载样本数据源并紧跟本博客文章。如果你无法通过Google云端硬盘访问此文件,请通过flerlagek@gmail.com向我发送电子邮件,然后我会将其发送给你。(或者非常简单地重新创建它)。
仿制样本数据在此例中,我们假设我们使用了多份数据源并使用日期参数来简单地筛选这些数据源。
首先,我们看看在旧版Tableau里,这些参数长啥样。在Tableau 2019.4或更早的版本里连接这个数据集。创建参数并命名“Date Parameter”。把“Date Type”设置成“Date”,“Allowable values”选择“List”。如下图所示,点击“Add from Filed”,“Date”(从数据源)。这样做之后,将用数据源的所有日期填充该列表参数。
问题是……也就这样了。这些值被硬塞到参数中,除非手动更新它们(我定期在我的工作仪表盘中做的事),否则它们不会改变。那么问题来了。我们怎么解决这个问题呢?相信你已经知道了问题的答案——动态参数。
现在,让我们来用Tableau 2020.1(或更高)连接数据源并创建参数。像之前一样,把数据类型设置成”日期“,允许的值选择”列表“。在下面的选项中,你会注意到与老版里面的不一样。第一个选项是“固定”。在这里你可以从你的数据集中添加值,让它保持固定,就像在老版本里一样。如果你选择固定,此参数的特性将会像在2019.4等版本里一样。
不过,我们可以通过勾选“工作簿打开时”把它改成动态参数。这样做时,你会得到和以前一样的提取选项,意思是你可以从数据源的字段中添加值,同时将它填充到参数列表中。需要注意的是,使用这个选项时,你的参数会随着数据字段的更新而自动更新。比如,数据源展示了2019年每个月的数据;假设我新增了2020年1月的数据。如果我勾选了此选项,2020年1月的数据会在工作簿下次打开时自动添加到参数列表中。请务必注意,参数只有当工作簿在desktop或者public里再次打开时才会更新,参数列表值不会随着刷新而更新(但是数据源会)。这一点,要用小本本记下来哦。(下面的截图来自2020.2版本)。
下面,增添2020-01-01的数据到数据源表格中然后保存。保存并关闭你的Tableau工作簿。重新打开工作簿,观察Date Parameter你会看到2020年1月被添加到了列表底部。(如果失败了,确保你连接到了正确的数据源而不是数据的临时版本)。有一点值得注意的是,如果不重新打开工作簿,而只是刷新,数据源确实会出现刚刚添加的值,但是参数不会。只有重新打开工作簿参数才会自动更新。
默认值
看前面的截图时,你也许已经注意到在老版本里没有的另一个选项——“工作簿打开时的值”。你可以设置你的动态参数在工作簿打开时默认为一个特定的值。点击下拉菜单,你能看到的目前的唯一选项是“当前值”。如图:
Ok,我们可以将它设置成当前值,发现并没什么用。这种情况下,我们可以创建一个计算字段,将这个计算字段设置为参数的默认值。所以,我们继续前面的例子。我们有2019年每个月的数据以及新添加的2020年1月的数据。我们的目的是,在任何时候,使参数默认为最近的日期——此情况中,最近日期为2020年1月。如果我们想得到最近的日期,我们可能想的是从日期列表中获取MAX日期,对不?所以我们通过“MAX(Date)”的公式。创建名为“Most Recent Date”的计算字段。
然后单击以编辑参数。在“打开工作簿时的值”字段中,选择“最近的日期”。那么问题来了……仅显示“当前值”。怎么回事?“Most Recent Date”字段在哪里?好吧,我第一次尝试就是这么做的,失败了。值得庆幸的是,我从Filippos Lymperopoulos(Tableau的产品经理)那里了解到,该字段必须是“独立于视图可视化”的(这就是我在本博文标题中提到的“关键”)。MAX(Date)将依赖于可视化,因此我们可以使用fixed LOD计算来解决此问题。因此,让我们将“最近日期”计算更改为 fixed LOD: {FIXED : MAX(Date)}。另外,也可以表示为{MAX(Date)}。( 虽然“工作簿打开时的值”必须是独立于视图可视化的,但它不是一定要是fixed LOD。你可以创建TODAY()的计算,由于它也是独立于视图可视化的,因此也可以起作用。)现在再次编辑日期参数,选择“工作簿打开时的值”的下拉菜单,你就可以看到“Most Recent Date”了,把它选上。这个设置会让你的参数在每次工作簿打开时使用这个计算,也就是说它会自动从日期字段里选择最近的日期。小朋友你是否有很多问号???……
好的,我们继续,把参数当前值设置为一个任意的过去的日期,保存工作簿修改,关闭,重新打开。你会发现参数的值自动设置为最近日期。然后你可以将参数与计算结合起来来过滤你的视图可视化啦。
综上所述,动态参数不仅仅应用于日期。你可以对任意参数数据类型(这个可以在编辑页面里“数据类型“的下拉菜单中看到哦)做相同操作。
好的用例
筛选日期范围
我认为日期会是动态参数最常用的地方。前面说了怎么对单独一个日期使用动态参数,但如果是要对一个日期范围呢?问题不大,我们可以用前面的方法,加上一些额外的参数和计算,就能做到了。
操作:首先,在之前所做的基础上,再设置两个参数: “Time Frame”、“Time Frame Value” 。“Time Frame”参数是[“day”,”month”,”year”]字符串列表(如下图,可手动输入)。这个参数可以固定,因为我们不需要它随着数据更新。“Time Frame Value”参数是一列从1到31的整数(可以在excel中复制),同样也作为静态参数。
接着,创建“Date Filter Time Frame”计算字段:
这个计算字段可以利用了“Time Frame”数据中日期与日期参数之间的差。它可以确保日期差大于等于0,且小于选择的“Time Frame Value”。
将“Date Filter Time Frame“改为维度,添加到筛选器中,只勾选“SHOW”。把”Date“拖动到行,选择精确日期、离散。把参数选项卡全部打开,将“Time Frame Value”设置为”6“,“Time Frame”设置为“month”,”Date Parameter“设置为“2019-12-01”。如果你使用前面例子中的数据,你会看到下图:
保存工作簿,再次打开,日期参数会更新到最近的2020年1月,你的视图会显示8/1/2019 – 1/1/2020。
理解这些操作之后,你就可以个性化调整你想要的Time Frame与Time Frame Value参数啦。
网友评论