1.创建参数的操作页面

当我们来到Tableau的左上角, 点击Create Parameter之后, 就会出现Parameter的创建界面

Parameter的设置页面非常简单:

最上边手动输入一个Parameter的Name

Properties 属性:

Data Type: 数据类型

小数, 整数, 字符串,布尔值,日期和日期时间. 几乎所有的数据类型你都可以选.

Display Format: 显示格式

这个选项主要是针对日期的, 毕竟日期根据不同的地区, 所要求的格式也不一样. 对于数字来讲, 可以显示成货币, 也可以显示成百分比%

Current Value: 当前数值

Value when workbook opens: 当这个workbook打开时, 该Parameter的数值为什么. 在这下边会出现一个列表, 在这个列表里有你能所选取的成为默认值的选项

Allowable Values: 该Parameter可以选取的值.
All: 任意值
List:只能在列表当中选取一个值
Range: 只能在限定的范围内选取一个值

可选取的值可以进一步分为两种限制方式. 一种是通过列表, 一种是通过范围.


2. 透过参数的创建来加深对参数的理解

参数的属性:
Parameter只能选择一种数据属性就意味着所有引用了这个参数的参数的计算Calculated Field, 你的函数必须要跟这个参数的类型匹配. 如果说人话, 你创建了一个日期参数, 然后你在计算中写个我要给这个日期参数+2, 那Tableau不报错才怪. 你的函数必须跟你所选择的参数数据属性相匹配

参数属性和参数格式的分离:

这个话题本质上不属于参数, 而是应该放在格式那. 但是在这个部分也非常有必要强调一下.

分不清属性和格式的区别是很多Tableau新人经常容易犯错的一个点. 如果我换种方式来解释, 那就是你所看到的显示的这个数值和这个数值在后台是如何存储的是两回事.

假设我们看到在Tableau中, sales显示成$180, 那么在我们的脑海里, 它是不是通过我们给sales这个column添加一个$来实现的呢? 答案是No, 这个180 可以显示成180.00, 18000%, 0.18K等等格式, 但是在它的背后,其实是二进制的0101. 如果我们创建一个参数,而这个参数比如是一个百分比, 我们最正确的做法是应该是选择float这个格式, 然后让其显示成百分比.

3. Current Value当前值

到这可就就有点绕了哈, 一个个都给我支棱起来哈.

我们先从current value开始讲, current value就是此时此刻这个参数等于啥. current value有两个作用, 第一就是告诉你当前这个参数等于多少. 想象一下, 如果没有这个选项,我们把Current Value在设置页面盖住, 然后你其他的都选好, allowable values选all. 你全选完了, 那这个参数等于啥呢, 你不知道. Current value的第二个作用就是测试. 有时候你想使用的那个值未必在你定义的范围里边. 假设你在current value里边输入20, 然后你再去Allowable values选择Range, 然后minimum选1, maximum选择10, 这时候你会发现你的current value会被强制reset成10,原来的20就没了. 这个current value永远是满足你设置的条件的.如果不满足, 那它就会修改current value.

4. Value when workbook opens 当报告打开时的值

Value when workbook opens就是它字面的意思当Tableau打开时,这个参数等于什么.

在最最简单的情况下, 我们这个参数永远也不变, 我把它设置成1, 然后我们把Tableau workbook保存起来, 再次打开的时候还是1, 这种情况就是Value when workbook opens的第一个选项: Current Value. 但是你也知道,那不可能永远是这么简单的情况. 要不我也不费这么大劲写这了

我以左边这三个截图为例, 当我们设置这个百分比参数的时候

我们选的是float,浮点数也就是小数, 格式选择百分. 当这个参数在Tableau中显示的时候, 它显示的是80%, 但是当你想要尝试去修改这个80%, 你会发现在修改界面,它开始显示背后真正的数值0.8, 而你如果要改成70%, 你需要输入的0.7而不是70%. 如果你输入70%, 这个参数不会做任何更改

现在我们看打开value when workbook opens之后, 除了current value的另外两个选项

一个Profit Bin Size

一个是Top Customers

现在我要灵魂拷问了, 为什么是Profit Bin Size和Top Customers出现在了这里, 我们数据源里有那么多其他的column, 我怎么一个都没看见呢?

这就引出了我们这个真正的难点, 如何设置这种动态的默认值.

第二种默认值才是真正的难点所在. 我们需要这个默认值是动态的, 比如每一次打开Tableau的时候, 选中的Region必须是整个数据集里销售额最高的Region.
我再举一个例子, 当报告打开的时候, 我想要默认的显示日期就是整个数据集里的最新日期. 这样的值你在创建这个参数是预料不到的, 它是一天一变的.
再或者, 我想要显示的默认日期就是打开报告的当天, 哪天打开那这个日期就是哪天.

所有上述的这些要求是每个专业Tableau Developer在创建Dashboard时所必须要满足的需求. 而且这些需求非常常见

1. 报告的截止日期以数据当中所存在的最新日期为准. 这个要求不过分吧?

2. 或者报告的截止日期以打开报告的当天日期为准.

既然这些选项不像current value一样作为默认选项提供给你, 你就必须通过创建计算的方式把它们加入到数据源当中, 然后成为下拉菜单当中的一个选项.

那么下边这个问题其实就来到了: 我如何确保我创建的Calcualted Field所计算的结果出现在这Value when workbook opens的下拉菜单里呢? 为什么上边那么多column一个都没出现呢?

5.创建什么样的计算,它才能成为一个Parameter?

为了回答这个问题, 那么我们不得不call back了各位. 什么是一个合格的parameter? 答案就是它只有一个值, 有且仅有一个值. 更确切的说, 在同一时间内, 它有且仅有一个值.

我创建一个Parameter, 这个parameter可以选1, 可以选2, 可以选3, 但是它能同时等于1, 2,3 吗 不,不行, 它要么等于1, 要么等于2,要么等于3. 单选

在上边的动图当中, 我首先创建了一个叫做Date Parameter的参数. 然后我创建了一个使用Today( )函数的计算命名为Today. 当创建完之后, 我们回到Date Parameter的编辑界面, 然后在Value when workbook opens下边, 我们就找到了我们新创建的这个计算Today. 换句话说, 我们新建的这个计算Today所返回的结果确实是一个常数.

接下来我创建了另一个计算, Max Order Date = MAX([order date]). 我想在我的报告打开的时候, Date Parameter的值是Order Date里最新的日期. 让我们看看效果如何.

与Today不同的是, 这一次Max Order Date并没有出现在我们的列表里, 换句话说, Max Order Date所返回的结果并不是一个常数. 而是一个动态的数值.

但是, 老师, 为什么Max Order Date 是动态的啊, 我数据源里的最大日期是固定的啊, 我就这么多数据, 那最大的那个order date一定是固定的啊.

如果你能有这个觉悟, 那说明你开始接触到一些更深层次的东西了. 我这里先解释为什么Max(Order Date) 不行. 最直接的原因就是这个Max Order Date没有限制范围, 它会变. 如果你把Max Order Date, 拖拽到Tableau中, 你添加一个country filter, 让国家等于加拿大, 那它就变成了加拿大的Max Order Date, 你选美国,它就是美国的Max Order Date, 你选Customer Name = 小帅, 它就是小帅的Max Order Date. 而你要让它固定成所有数据里最大的那个order date的话, 你必须用别的方法, 这个计算方法我们现在还没讲, which is LOD. 是的就是辣个LOD.

我先告诉你们答案, 你需要使用 {FIXED: MAX([Order Date])} 这种方法来创建计算, Max是行不通的. 没办法只能后边填LOD这个坑了

6. 如何判断我创建的计算能否当Parameter?

右键Today, 选择Describe选项

Describe Field页面

8. Display As 显示为

Display As是Parameter里一个非常重要但是容易被忽视的选项. 当我们选择Fixed List. 有一块区域可以供我们编辑. 而这块区域有两列分别叫Value和Display As

在Describe Field页面的最下方,有一个选项叫做Domain 而Domain里显示当前只有一个Member.

Domain是数学里的值域的概念. 代表这个变量数值范围. 而Domain(1 members))意味着 Today 这个计算只有一个值, 而它就是常数的定义.

接下来我们看看Max Order Date

左侧是Max Order Date的Describe选项. 你可以清晰的看到, 在这个页面里边没有给你提供Domain的这个选项. 这也就意味着, 它不是一个常数


7.Allowable Values 允许值

允许值就是当用户想要改变Parameter的时候, 它们的可选范围. 这种可选范围有的时候好界定, 比如我就限制你只能选1到10. 有的时候这种范围不好界定, 因为它需要结合你数据当中有的值来判断. 而我们的数据又是在不断变化的. 因此这种动态的范围是现在想要讨论的话题.

List列表

List列表是Parameter- Allowable Values中第二个选项, 也就是你自己创建一个列表, 用户只能从这里边选. 右侧的Fixed选项, 代表List中的值是固定的, 不会有任何的变动. 而When workbook opens就是动态列表了. 根据你所选定的数据类型, Tableau会帮你列出所有可能使用的field和calcualted field.

当我在下边选中Order Date作为list的时候. Tableau会自动导入Order Date这个Field里的所有值

当List使用来自数据中的数值的时候, 你会发现你是不能做任何更改的.

所有的数值都变成了灰色.

左侧的这个截图里, 就是Display As一个非常经典的应用.

用户在选项里看到的是各个月份的名字, 但是真正返回的值其实是数字1 2 3 4.

这种'表里不一'的方法能让许多计算以非常轻松的方式来设计从而绕开一些非常麻烦的转换.

比如我们判断月份是否等于January和Month([Calendar Date]) =1

第二种往往最常见, 但是我们又希望把月份显示成January的时候就可以使用这种方法


9. Range范围

Parameter范围的设定和列表非常接近, 以同样可以以手动或者自动的方式来设定. 但是在选择Fixed选项时, 有一个新的选项叫做Step Size我需要来解释以下.

Step Size是结合Minimum最小值和Maximum最大值来理解的. 比如我的最小值设置为1, 最大值设置为10, step size设置为1. 那么用户在从0开始调整Parameter的时候, 只能是从0到1, 从1到2这么增加, 你是不能每次只增加0.5的.


10. Show Parameter 显示参数

Show Parameter是参数设置之后的最后一步. 它和Show Filter过程一样. 这一部分你看下边的动图就一目了然了.