详细级别表达式,又叫LOD表达式,或者LOD计算,是tableau最强大的功能之一,是很多分析场景中,能够把不可能变为可能的那只神奇“画笔”。不过,LOD的灵活性使它学起来很不容易,特别是要做到完全理解、灵活运用就更不容易。本节记录要点:
- 什么是详细级别
- 如何定义详细级别
- 为什么要使用LOD表达式
- LOD表达式的基本语法
什么是详细级别
要理解LOD表达式,首先要弄清楚什么是详细级别。
详细级别:就是数据集合度或者数据颗粒度的层次,英文名就是Level Of Detail,缩写为LOD。所谓级别,即Level,代表着不同的数据聚合度或者颗粒度。
这里使用tableau自带的超市示例数据集举个例子。该数据集有产品名称、国家、地区、城市、子类别等维度字段,以及销售额、利润、数量等度量字段。
当需要分析超市的经营情况时,不同的部门、岗位、领导层,关心的数据是完全不同的,比如:
-
有人关注各个省/自治区的销售情况,有人关注各个城市的销售情况,有人关注每个客户的平均销售额情况;
-
有人关注类别的销售情况,有人关注子类别的销售情况,有人关注产品的销售情况
-
有人关注年度销售情况,有人关注月度销售情况,有人关注每天的订单情况
所关注内容的不同层次,体现在tableau中,就是详细级别。
- 关注的层次越高,如国家、类别、年度等,数据的细化层度就越低,聚合度就越高,数据颗粒度就越低
- 关注的层次越低,如客户、产品、天等,数据的细化层度就越高,聚合度就越低,数据颗粒度就越高
如何定义详细级别
在tableau中,所有能够影响当前视图构成的字段中,所涉及到的最详细的级别,就是该视图当前的详细级别。目前,tableau定义详细级别的方式有三种:
- “行”和“列”功能区
- “标记”卡
- LOD表达式
“行”和“列”功能区
将维度字段拖放到“行”或“列”功能区中,就会直接改变视图中的详细级别。这里建立“地区”和“销售额”的交叉表,表中聚合了各地区的销售额。
在上表中,将“类别“字段拖放到”地区“字段的后面,交叉表中就增加了“类别”一列,获得了更高的数据颗粒度,更低的聚合度。如果有需要,还可以继续将“子类别”、甚至“产品”字段添加到“行”功能区,这样可以将数据颗粒度继续变高,聚合度继续降低。
“标记”卡
在“标记”卡区域,颜色、大小、标签、详细信息、形状都可以对视图的详细级别造成改变。
这里建立“销售额”和“数量”字段的散点图,当处于最高聚合度时,即所有销售额和数量都分别汇总成为一个数字的时候,视图中只有一个点。
此时,将“省/自治区”字段拖放到“标记”卡的“颜色”,视图中就会出现许多散点,每个点代表了1个省/自治区。
如果将“客户名称”字段继续拖放到“标记”卡的“详细信息”,视图中就会出现更多的圆点,每个点代表了一个客户,这个时候的数据颗粒度很高,聚合度也处于很低水平。
LOD表达式
第三种改变视图详细级别的方法就是LOD表达式,这里就不再进行举例说明,后面会有很多例子来深刻感知它的强大。
为什么要使用详细级别表达式
在上一部分,介绍了改变视图详细级别的三种方法,但本文开头就说了LOD表达式不好学,为什么不用另外两种方法,而偏要选择它呢?
那是因为在tableau中,一个视图只能默认使用一种详细级别,当需要在一个视图中展现两个详细级别时,就只能通过LOD表达式实现,而且LOD表达式既可以改变原有视图形态,也可以保持视图形态不变。
这里简单举个例子,当前建立了“地区”字段和“销售额”字段的条形图,反映了各地区的销售额情况,该视图的聚合度处于“地区”级别。
现在想在视图中同时展现每个地区最大销售额客户的具体销售额情况,但由于聚合度需要降低到“客户”级别,与原视图的聚合度不处于同一级别(原视图是“地区”级别),因此只能使用LOD表达式来改变视图的详细级别。相关LOD表达式的创建就不在这里描述,后面的学习记录中会有该示例的具体体现。
当然,如果不想改变原视图形态,也可以通过“标记”卡的各种样式,将LOD表达式的结果在原视图中体现出来,如工具提示等等。
LOD表达式的基本语法
LOD表达式有三种范围关键字,分别是Include、Exclude、Fixed,他们都使用同样的表达式语法,即:
{[FIXED | INCLUDE | EXCLUDE] <维度声明> : <聚合表达式>}
- [FIXED | INCLUDE | EXCLUDE]:三选一,界定了当前使用的LOD表达式的范围关键字
- <维度声明> :指定表达式要联接到的一个或多个维度。多个维度可使用逗号分隔
- <聚合表达式>:需要执行的计算。
(全文完)