计算的类型
- 版本 :2022.1 及更高版本
适用于: Tableau Desktop, Tableau Online, Tableau Server
本文介绍了您可以在 Tableau 中使用的计算类型。您将了解每个计算和计算方法之间的区别。
可以使用以下三种主要类型的计算在 Tableau 中创建计算字段:
基本表达式
基本表达式允许您在数据源详细信息级别(行级别计算)或可视化项详细信息级别(聚合计算)转换值或成员。
例如,请考虑下面的示例表,其中包含两个奇幻片的作者和他们的书籍的数据。也许您想创建一个只有作者姓氏的列,以及一个显示每个系列中有多少本书的列。
书籍 ID | 书籍名称 | 系列 | 发行年份 | 作者 |
1 | 《狮子、女巫和衣橱》 | 纳尼亚传奇 | 1950 | C.S.Lewis |
2 | 《凯斯宾王子:重返纳尼亚》 | 纳尼亚传奇 | 1951 | C.S.Lewis |
3 | 《黎明踏浪号》 | 纳尼亚传奇 | 1952 | C.S.Lewis |
4 | 《银椅》 | 纳尼亚传奇 | 1953 | C.S.Lewis |
5 | 《奇幻马和传说》 | 纳尼亚传奇 | 1954 | C.S.Lewis |
6 | 《魔法师的外甥》 | 纳尼亚传奇 | 1955 | C.S.Lewis |
7 | 《最后的战役》 | 纳尼亚传奇 | 1956 | C.S.Lewis |
8 | 《森林的女儿》 | Sevenwaters | 1999 | Juliet Marillier |
9 | 《阴影之子》 | Sevenwaters | 2000 | Juliet Marillier |
10 | 《预言之子》 | Sevenwaters | 2001 | Juliet Marillier |
11 | 《七水之继承人》 | Sevenwaters | 2008 | Juliet Marillier |
12 | 《七水之先知》 | Sevenwaters | 2010 | Juliet Marillier |
13 | 《七水之火》 | Sevenwaters | 2012 | Juliet Marillier |
行级计算
若要创建一个显示数据源中每行的作者姓氏的列,可以使用以下在空格上拆分的行级别计算:
SPLIT([Author], '', 2 )
可以在下面看到结果。标题为“作者姓氏”的新列显示在最右侧。颜色显示了执行计算的详细级别。在本例中,计算是在数据源的行级别执行的,因此每个行都单独着色。
书籍 ID | 书籍名称 | 系列 | 发行年份 | 作者 | 作者姓氏 |
1 | 《狮子、女巫和衣橱》 | 纳尼亚传奇 | 1950 | C.S.Lewis | Lewis |
2 | 《凯斯宾王子:重返纳尼亚》 | 纳尼亚传奇 | 1951 | C.S.Lewis | Lewis |
3 | 《黎明踏浪号》 | 纳尼亚传奇 | 1952 | C.S.Lewis | Lewis |
4 | 《银椅》 | 纳尼亚传奇 | 1953 | C.S.Lewis | Lewis |
5 | 《奇幻马和传说》 | 纳尼亚传奇 | 1954 | C.S.Lewis | Lewis |
6 | 《魔法师的外甥》 | 纳尼亚传奇 | 1955 | C.S.Lewis | Lewis |
7 | 《最后的战役》 | 纳尼亚传奇 | 1956 | C.S.Lewis | Lewis |
8 | 《森林的女儿》 | Sevenwaters | 1999 | Juliet Marillier | Marillier |
9 | 《阴影之子》 | Sevenwaters | 2000 | Juliet Marillier | Marillier |
10 | 《预言之子》 | Sevenwaters | 2001 | Juliet Marillier | Marillier |
11 | 《七水之继承人》 | Sevenwaters | 2008 | Juliet Marillier | Marillier |
12 | 《七水之先知》 | Sevenwaters | 2010 | Juliet Marillier | Marillier |
13 | 《七水之火》 | Sevenwaters | 2012 | Juliet Marillier | Marillier |
聚合计算
要创建一个列来显示每个系列中有多少本图书,可以使用以下聚合计算:
COUNT([Series])
可以在下面看到结果。标题为“系列丛书数量 - 在系列详细级别”的新列介绍了如何在视图的系列详细级别执行该计算。颜色帮助显示了执行计算所在的详细级别。
系列 | 系列丛书数量 - 在系列详细级别 |
纳尼亚传奇 | 7 |
纳尼亚传奇 | |
纳尼亚传奇 | |
纳尼亚传奇 | |
纳尼亚传奇 | |
纳尼亚传奇 | |
纳尼亚传奇 | |
Sevenwaters | 6 |
Sevenwaters | |
Sevenwaters | |
Sevenwaters | |
Sevenwaters | |
Sevenwaters |
在 Tableau 中,数据如下所示:
但是,如果拖动“书籍 ID”(这是一个更精细的字段),则计算会根据该新粒度进行更新,因为会在可视化项详细级别执行聚合计算。
详细级别 (LOD) 表达式
就像基本表达式一样,LOD 表达式允许您在数据源级别和可视化项级别计算值。但是,LOD 表达式可以让您更好地控制要计算的粒度级别。它们可以在较高粒度级别(包括)、较低粒度级别(排除)或完全独立级别(固定)执行。
有关详细信息,请参见在 Tableau 中创建详细级别表达式。
例如,考虑与上面相同的示例表。如果您想计算书籍系列的启动时间,则可以使用以下 LOD 表达式:
{ FIXED [Series]:(MIN([Year Released]))}
可以在下面看到结果。标题为“系列启动时间”的新列显示了每个系列的最早年份。颜色帮助显示了应用计算所在的详细级别。
书籍 ID | 书籍名称 | 系列 | 发行年份 | 作者 | 系列启动时间 |
1 | 《狮子、女巫和衣橱》 | 纳尼亚传奇 | 1950 | C.S.Lewis | 1950 |
2 | 《凯斯宾王子:重返纳尼亚》 | 纳尼亚传奇 | 1951 | C.S.Lewis | 1950 |
3 | 《黎明踏浪号》 | 纳尼亚传奇 | 1952 | C.S.Lewis | 1950 |
4 | 《银椅》 | 纳尼亚传奇 | 1953 | C.S.Lewis | 1950 |
5 | 《奇幻马和传说》 | 纳尼亚传奇 | 1954 | C.S.Lewis | 1950 |
6 | 《魔法师的外甥》 | 纳尼亚传奇 | 1955 | C.S.Lewis | 1950 |
7 | 《最后的战役》 | 纳尼亚传奇 | 1956 | C.S.Lewis | 1950 |
8 | 《森林的女儿》 | Sevenwaters | 1999 | Juliet Marillier | 1999 |
9 | 《阴影之子》 | Sevenwaters | 2000 | Juliet Marillier | 1999 |
10 | 《预言之子》 | Sevenwaters | 2001 | Juliet Marillier | 1999 |
11 | 《七水之继承人》 | Sevenwaters | 2008 | Juliet Marillier | 1999 |
12 | 《七水之先知》 | Sevenwaters | 2010 | Juliet Marillier | 1999 |
13 | 《七水之火》 | Sevenwaters | 2012 | Juliet Marillier | 1999 |
在 Tableau 中,由于使用了 FIXED 函数,因此计算保持在系列详细级别。
如果向视图添加另一个字段(这会增大粒度),则与聚合计算不同,计算值不会受到影响。
表计算
表计算仅允许您在可视化项详细级别转换值。
有关详细信息,请参见使用表计算转换值。
例如,考虑与上面相同的示例表。如果您想要计算自作者发布上一本书以来的年数,则可以使用以下表计算:
ATTR([Year Released]) - LOOKUP(ATTR([Year Released]), -1)
结果如下所示。标题为“自上一本书以来的年数”的新列显示了该行中发行的书与上一行(列的最右侧)中发行的书之间的年数,并(在列的左侧)演示了如何计算表计算。
颜色有助于演示表计算如何运算。在本例中,系统按每个窗格进行表计算。
注意:根据表计算以及如何在整个表中进行计算,结果可能会有所不同。有关详细信息,请参见使用表计算转换值。
书籍 ID | 书籍名称 | 系列 | 发行年份 | 作者 | 自上一本书以来的年数 | ||
1 | 《狮子、女巫和衣橱》 | 纳尼亚传奇 | 1950 | C.S.Lewis | Null | ||
2 | 《凯斯宾王子:重返纳尼亚》 | 纳尼亚传奇 | 1951 | C.S.Lewis | 1951- | 1950 | 1 |
3 | 《黎明踏浪号》 | 纳尼亚传奇 | 1952 | C.S.Lewis | 1952- | 1951 | 1 |
4 | 《银椅》 | 纳尼亚传奇 | 1953 | C.S.Lewis | 1953- | 1952 | 1 |
5 | 《奇幻马和传说》 | 纳尼亚传奇 | 1954 | C.S.Lewis | 1954- | 1953 | 1 |
6 | 《魔法师的外甥》 | 纳尼亚传奇 | 1955 | C.S.Lewis | 1955- | 1954 | 1 |
7 | 《最后的战役》 | 纳尼亚传奇 | 1956 | C.S.Lewis | 1956- | 1955 | 1 |
8 | 《森林的女儿》 | Sevenwaters | 1999 | Juliet Marillier | Null | ||
9 | 《阴影之子》 | Sevenwaters | 2000 | Juliet Marillier | 2000- | 1999 | 1 |
10 | 《预言之子》 | Sevenwaters | 2001 | Juliet Marillier | 2001- | 2000 | 1 |
11 | 《七水之继承人》 | Sevenwaters | 2008 | Juliet Marillier | 2008- | 2001 | 7 |
12 | 《七水之先知》 | Sevenwaters | 2010 | Juliet Marillier | 2010- | 2008 | 2 |
13 | 《七水之火》 | Sevenwaters | 2012 | Juliet Marillier | 2012- | 2010 | 2 |
在 Tableau 中,数据如下所示:
但是,如果以影响布局的方式更改可视化项,例如从视图中移除维度,则计算值会发生变化。
例如,在以下图像中,从可视化项中移除了“作者”。由于表计算是按窗格计算的,因此移除“作者”会更改可视化项的粒度和布局(这里只有一个窗格,而不是两个窗格)。因此,表计算会计算介于 1956 年到 1999 年之间的时间。