Tableau有三种计算:① 基本计算、② LOD表达式、③ 表计算
一、LOD表达式(详细级别表达式)
1. 什么是详细级别?
详细级别(Level of detail)是数据聚合度/颗粒度的层次。不同的详细级别代表的是不同的数据聚合度、颗粒度。tableau通过将维度字段、系统自定义的表达式加入到视图,从而决定视图数据的详细级别,之后通过预设的视图表现出来。
提问:什么是聚合度和颗粒度?
不同于面向行数据的excel,tableau面向大数据的数据分析和展示,因此我们所看见的数据绝大多数都是聚合的,这就需要我们非常熟悉每个视图代表的数据的聚合程度。这个聚合程度在tableau中用聚合度aggregation或者是颗粒度granularity表示。
提问:如何理解详细级别?
维度字段、系统自定义的表达式(比如表计算)、用户自定义的表达式(比如集、LOD表达式)三者本质上返回的都是一个数据集合,这些数据集合的详细级别,通过不同的视图表达出来。
具体的形象:一座冰山
提问:如何判断操作能引起“视图详细级别”的变化?
最简单的方法就是看视图中标记的数量
2. 有哪些详细级别?
表计算详细级别 table calc level of detail
视图详细级别 viz level of detail (viz=visualization视图)
行详细级别 row level of detail
这些详细级别和数据的聚合度/颗粒度对应。越往上,对应的聚合度越高/颗粒度越低。
提问: 为什么没有详细级别表达式?
“LOD表达式”不是一种详细级别,而是一种关于LOD的语法表达式。
通过它,在原有的“视图详细级别”的基础上,增加新的详细级别。
3. 什么是详细级别表达式?
简单的问题:看一下各部门年度薪酬总额对比
柱状图==》柱子:每个部门;高度:薪酬总额
1个 level==》部门薪酬总额
困难的问题:看一下各部门中员工平均薪酬的对比
柱状图==》柱子:每个部门;高度:平均薪酬
2个 level==》每个员工的薪酬总额、部门薪酬的平均
一个视图默认的是一个详细级别,当需要展示两个详细级别时,就需要用到详细级别表达式。
4. 总结
详细级别表达式:如果分析过程中需要添加一个维度,其明细程度高于或低于已有视图的可视化明细程度,但又不希望改变现有图形展示内容,可采用详细级别表达式。(反复琢磨)
5. 三类六种LOD表达式
C-6 | 行级别—非聚合 | 行计算运算 | 利润率=[利润]/[销售额],新增字段,计算每一行对应的利润率 |
A-5 | 低于视图级的聚合 | LOD计算 | {include [category]: sum(利润)} 在视图维度中,增加新的category维度,在新的数据层次上计算利润聚合 |
B-4 | 视图级别—聚合 | 聚合计算 | 利润率=sum([利润])/sum([销售额]) |
A-3 | 高于视图的聚合 | LOD计算 | {fixed: sum([利润])} 数据库中所有利润的聚合,最高级别的聚合 {exclude [area]: sum(利润)} 从视图维度中排除area,在新的数据层次上的利润聚合 |
A-2 | 独立于视图的聚合 | LOD计算 | {fixed [不在视图中的维度]: sum([利润])} |
A-1 | 更高-聚合的聚合 | 表计算 | window_sum(sum([利润])) 视图中利润聚合的再次聚合 |
1. 表范围详细级别表达式 table-scoped level of detail expressions
min([利润]):行级别表达式,返回最小颗粒度范围的min数值
{min([利润])}:在视图中所有字段范围,执行min函数,返回最小值
{fixed: min([利润])}:指定所有维度字段范围,效果同上
2. fixed详细级别表达式
表范围详细级别表达式省略了维度的fixed表达式,默认的是从数据源中的所有数据读取最小值。如果我们指定维度,就是完整的fixed详细级别了。
{fixed: min([利润])} = {min([利润])}
{fixed [year]: min([利润])} :返回每个年份下的min([利润])结果
{fixed [year],[area]: min([利润])}:返回每个年份+每个地区下的min([利润])结果
值得注意的是: 详细级别表达式是单独从数据源提取一遍数据,把计算的结果返回给视图,多个数值构成的一个数组。
3. include/exclude详细级别表达式
和fixed特立独行的绝对不同,include和exclude是相对聚合。也就是说,它们如何影响视图详细级别是受视图中的维度影响的。
include详细级别表达式,使用指定的维度和视图维度进行计算聚合。由于是在视图维度中增加新维度,因此该表达式返回的结果颗粒度比视图级别更高(聚合越低)。
exclude详细级别表达式,在现有的视图维度基础上,排除指定的维度进行聚合计算。由于是在视图维度中排除指定维度,因此该表达式返回的结果颗粒度比视图级别更低(聚合越高)。