在学习LOD表达式的过程中,我们频繁的遇到计算的相关问题。LOD表达式和表计算什么区别?如何选择合适的计算?操作顺序(查询管道)到计算的影响是什么?只有全面的了解了计算的相关知识,才能更好的用好LOD表达式和表计算。
本文中,会结合Tableau官方文档,总结三种计算的区别与使用建议。
1、Tableau的计算
Tableau有三种计算:基本计算、LOD表达式计算和表计算。每种计算适合于不同的情形,最难的是如何选择正确的计算方式。
三种计算的区别
- 通过“计算字段”增加的新字段,会作为数据源的一部分;
- “表计算能够为每个数据分区(单元格、区、表)输出多个值,而基本和 LOD 表达式则只能为每个数据分区或分组输出单一值。”比如total计算,根据分区和寻址,返回多个值。
计算在数据源和分析中的位置
- 基本计算和LOD表达式是向数据源查询的计算,返回一个结果集,是在数据源层面计算的。统称为custom calculation, 生成的结果是custom filed(自定义字段) ,字段在哪里?字段是在数据源层面的。
- 基本计算和LOD计算是在数据源层面的计算,部分字段具有全局意义,比如创建一个成本字段,[cost]=[sales]-[profits],这个行级别字段在商品明细行级别是有意义的,在聚合后也有意义;但是大部分不像维度或度量字段具有全局的意义,这些自定义字段的意义受限于视图。计算字段,比如sum([cost])=sum([sales])-sum([profits]),通过把聚合计算加入视图,可以让Tableau自己决定在哪个层面执行聚合;再比如创建LOD计算字段,{fixed [customer ID]: avg([sales])},虽然也会在数据源层面创建,但是行级别的这个字段是没有意义的,只有在会员详细级别或相关的视图级别上才有意义。
- 表计算table calculation 是对视图详细级别(viz level of detail )聚合结果的二次计算,既然是视图详细级别,它要求的数据必须是聚合计算。它生成的是什么?是结果集,而且立刻在视图上显示。并没有在数据源层面创建字段或者有所影响。
表计算的独特用法。
某些方案下只有表计算有效。这些方案包括:
- 排名
- 递归(例如,累计总计)
- 移动计算(例如,移动平均)
- 内部行计算(例如,期间对照计算)
我们用一个思维导图来表示三种计算的区别,可以如下:
2、如何选择计算
最难的地方,最重要的地方,是如何选择适合的计算方法,在Tableau的博客中给出了详细的指南。简单的说,如下三点:
- 特殊用法、数据齐全,则优选表计算,因为表计算更快,与数据源无关;
- 多个数据详细级别,使用LOD表达式;
- 使用基本字段增加新字段,比如比率、达成度等。
在这个基础上,我们详细说明在选择时的思考过程。
A、判断是否属于特殊计算,如果属于以下特别计算,只能使用表计算
表计算和其他计算最大的区别,在于它能以一个表达式,在每个数据分区(单元格、区、表)返回多个数值。清晰地理解这一点,才能明白为什么只有表计算才能满足下列特别需求:
- 排序 ranking
- 递归 Recursion
- 移动计算 Moving Calculation
- 行内计算 Inter-row calculation
这几个计算,都是返回多个值,最简单的比如排序,一个rank()可以为视图中的一百行数据返回100个数值,这是基本计算和LOD计算做不到的。
什么是递归(recursion)?就是在计算中自己引用自己,大家可以看这个“德罗斯特效应”示例图。比较典型的使用就是累计求和,total。
更多介绍,可以参考这篇英文博客,Cumulative Total
移动计算Moving Calculation,包括移动平均计算,更多介绍,可以参考Wikipedia。
B、没有A的情况,如果视图详细级别具有所有的相关数据,那么就直接使用表计算。
在判断是否视图具有所有数据时,一定要区分聚合数据和非聚合数据,比如我们有一个各个子分类销售额的散点图,需求是计算各子分类的总额百分比,貌似我们拥有相关的数据,其实不在一个详细级别,总额百分比需要计算聚合的占比,散点图的数据不是聚合,需要先执行聚合(颗粒度降低)。
如果视图层面没有需要的数据,怎么办?其实应该首先把相关的数据字段拖入视图,如果数据颗粒度完整,重新尝试表计算。常见的表计算已经在快速表计算预设了。
C、如果拖入现有字段不能解决问题,那么就需要通过增加新字段解决,如果只有一个聚焦点,选择基本计算,或者有两个聚焦点,选择LOD计算。
当然,很多时候,需要在生成新字段之后,返回到表计算。因此上面的简图可以这样表达。
3、总结
根据上述的总结和个人经验,做了一个对比表,后期在不断完善和升级。
另外说明以下,应该在学习LOD之前,先学习如何选择不同的计算。
参考:
推荐阅读英文blog,A Handy Guide to Choosing the Right Calculation for Your Question,或者阅读中文翻译(思维导图未翻译,可以参考上图)
- 官方:选择正确的计算类型
Tableau-TC系列
- 【Tableau】TC- 表计算 (上)_聚合计算与表计算入门
- 【Tableau】TC- 表计算(下)快速表计算
- 【Tableau】TC- 计算学习小结
- 【tableau】TC- 如何选择Tableau计算类型?
3 Oct 2018 update
7 Oct 2018 修改图片错误/感谢 「爱上深呼吸」
了解 喜乐君 的更多信息
订阅后即可通过电子邮件收到最新文章。
Pingback: 【Tableau】TC- 表计算简介与对比 (上) – 喜乐君Healee
Pingback: 【Tableau】TC- 表计算应用 (下)快速表计算 – 喜乐君Healee
Pingback: Tableau 计算学习小结 – 喜乐君Healee
Pingback: 【平民数据科学家】从头开始用Tableau – 喜乐君
评论已关闭。