Tableau有几个特别关键的地方,一个是理解视图和详细级别,另一个是理解计算和表达式。视图构建我们看得见的框架,计算是构建骨架所需要的材料。
1,数据源与虚拟表
数据源对应一个实际的数据表,视图也对应一个虚拟表,虚拟表表结构受限于视图的详细级别。
计算字段和LOD表达式计算是基于数据源的,因此不会完全受限于视图详细级别生成的虚拟表;而表计算则不同,表计算完全是基于视图结果而运行。
Specifically, the virtual table is determined by the dimensions within the “level of detail,” which means the dimensions on any of the following shelves or cards in a Tableau worksheet:
2、与数据源相关的计算
关于数据源与计算的关系,有一个很好的观察的视角,就是Tableau的数据源文件 .tds (Tableau data source),我们看一下这个文件中包含的内容:
数据源( .tds) – 包含连接到数据源所需的信息,包括以下内容:
- 数据源类型
- 在数据源页面中指定的连接信息,例如,数据库服务器地址、端口、本地文件的位置、 表
- 组、集、计算字段、数据桶
- 默认字段属性,例如,数字格式、聚合和排序顺序
你会发现,在数据源文件中,与数据源相关的设置和字段,特别是数据连接;以及数据源字段相关的所有用户自定义设置,包括组group、集set、计算字段calculated fields、数据桶bins,还有字段属性,都会把保存。
为什么表计算不在数据源文件中?因为它和数据源没有关系,它是基于视图的。同样,筛选器、参考线、预测线,也都是基于视图的。它们在Tableau的操作顺序中,都排在视图筛选器之后。
因此,在选择计算时,可以从这个角度考虑。
— 与数据源相关的用户自定义
— 与视图相关的用户自定义
3、如何选择计算
从计算性能的角度看,任何时候,都优先选择表计算;其次才考虑计算字段和LOD表达式。LOD表达式就像视图中的筛选器,是要运行时直接访问数据源的,所以多个LOD和多个筛选器一样都会影响性能。
可以把LOD表达式和筛选器都理解为独立的SQL操作。
具体如何选择,参考另一篇博客 :【tableau】如何选择Tableau计算类型?
4、【补充】 Spotlighting calculation 聚焦计算
在可视化分析中,我们经常需要使用计算区分不同的数据,比如利润为负数的商品标记为红色,或者把80后会员单独标记出来,这就需要计算字段实现聚焦数据。
常见的办法就是使用if类型的函数创建自定义字段,相当于按照特定的标准给所有数据库数据打标签,比如说: IIF(SUM([profits])>0,’盈利’,’亏损’) 然后我们把这个字段拖入到标记卡的颜色中,就可以区分两类产品。
当然,如果只是区分两种情况,可以用更加简单的办法,直接输入“临时计算字段”返回布尔值就好,一正一负两个布尔值会对应两个不同的颜色。
5、Ad-Hoc Calculations 临时计算
临时计算是Tableau“所见即所得”的一大特色功能,随时输入计算字段,就会直接给予可视化的反馈,特别适合于测试想法、尝试假设时。
- 双击现有字段以开始编辑。
- 也可以双击空功能区或功能区上的空白部分以创建新计算。
- 键入以更新表达式,或将新字段从“数据”窗格或视图中的其他位置拖到表达式中。
- 按 Enter、Tab 或在表达式外部单击以提交表达式,关闭计算,并更新视图。按 Ctrl+Enter(或在 Mac 上按 Command+Enter)以提交表达式并更新视图,而不关闭计算。
特别好用的一个地方时,临时计算可以代替标题,仅需要在首行添加“//”表示这是注释即可。多行语句中首行会被默认显示。比如说,输入以下计算语句到临时计算中:
//营业时间
DATEDIFF(‘day’,MIN([order date]),MAX([order date])
Tableau计算系列
7 Oct 2018 更新
Nov 6, 2018
Nov 25, 2018 update 4/5