tableau----LOD(level of detail)详细级别表达式

tableau的的计算维度分类

  • 非视图级别聚合计算或表达式
  • 视图级别聚合计算
  • 行级别计算(颗粒度最细致)

按照颗粒度的从低到高,从整体到详细,分为如下情况:

颗粒度 计算方式 含义
聚合的聚合 表计算 window_sum( sum(利润) ) 利润聚合再聚合
独立于视图的聚合 LOD {fixed [指定的维度] : sum(利润)} 仅使用指定的维度决定详细级别,计算聚合结果
高于视图的聚合 LOD {fixed : sum(利润)} 数据库中所有利润的聚合 / {exclude [指定的维度] : sum(利润)} 如果指定的纬度出现在视图中,排除掉这个维度后,在新层次计算(因为排除了一个维度,分类比原视图少,所以聚合详细度不如原视图)
视图的聚合 聚合计算 利润率=sum(利润) / sum(销量)
低于视图的聚合 LOD {include [指定的维度} : sum(利润) } 在当前视图下,加入指定的维度,在新层次计算利润聚合
行级别(非聚合) 行计算运算 利润率 = 利润/销量,在数据库的行级别下,增加一个计算字段,计算每一行的利润率

行级别表达式

行级别表达式都是非聚合的;它就像Excel中的公式,是基于每一行的数据计算的。如上述的举例:

利润率 = 利润/销量

一般而言,有关比率的行级别表达式只有在行级别才有意义;在tableau中,超过行级别就会执行默认聚合,结果的含义就与行级别的意义大不相同。如下:
在这里插入图片描述
对行级别比率的求和聚合,是没有意义的。当然,我们可以修改这个字段的默认聚合为「平均值」,当然这也要看具体需求的计算逻辑。
在这里插入图片描述

视图级别表达式

视图级别表达式是聚合表达式。
所谓视图级别的表达式,就是在可视化图形界面各个维度的计算关系。通过默认执行聚合计算,可以让Tableau自动判断在何时对哪个详细级别执行聚合运算。
在视图中,聚合表达式有一个特别明显的标记,“聚合”(“AGG”),或者“属性”(“ATTR”),如上举例:

利润率=sum(利润) / sum(销量)

下图中,不正确方法为:先计算每一个行级别的(利润/销售额)然后对所有结果求和; 正确的方式为,先在视图限定纬度下,对行ID的利润和销售额进行汇总,然后求(总计利润/总计销售额)得到最终的结果。
在这里插入图片描述

行级别和视图级别表达式的区别

  • 行级别表达式运算时不能超越行的级别,是数据源层面的计算,结果不是聚合运算,计算针对个体,不针对总体;
  • 视图级别表达式,体现了大数据的特点,是超越个体数据差异的聚合运算,不考虑个体,只计算总体;
  • tableau是以视图级别表达式为基础,聚合运算关注总体的差异;
  • 行级别表达式是可视化之前就计算完成的,是在数据源层面的计算;而视图级别都需要依赖于视图,是基于可视化中维度的计算;

详细级别表达式LOD

理解行级别表达式与视图级别表达式的关系,是理解详细级别表达式的基础。LOD表达式,是单独从数据源提取一遍数据,把计算的结果返回给视图,多个数值构成一个数组。

表范围详细级别表达式

“表范围详细级别表达式”省略了维度限定,其实就是没有维度声明的fixed详细级别表达式。因此,我们可以把“表范围详细级别表达式”视为最简单的详细级别表达式。由此可以举例如下:

  • { Min ([利润额]) } 在视图中所有字段范围,执行min,返回最小值;
  • { FIXED:Min ([利润额]) } 指定所有维度字段范围,效果同上;
  • Min([利润额]) 行级别表达式,返回最小颗粒度范围的min数值;

fixed的限定是在维度筛选之前,否则就会受视图影响。

在这里插入图片描述

详细级别表达式LOD

为了更好的理解fixed的表达式,我们结合上面的表范围做了一个对比。
在最高的颗粒度明细下,我们对比了几个fixed表达式,区别在于维度数量不断增加。

  • { MIN([利润额) } = {fixed: MIN([利润额]) } ,就是上面说的表范围,返回给视图一个数值;
  • {FIXED [订单日期]: MIN([利润额])} 返回每个订单日期-年下的的min(利润额) 结果,返回给视图多个值min;
  • {FIXED [订单日期],[国家]:MIN([利润额])} 返回每个订单日期+每个国家下min(利润额)结果,表达式返回给视图 更多个数值;
  • {FIXED [订单日期],[国家],[产品子类]:MIN([利润额])} 返回每个订单日期+每个国家+每个产品子类下的详细结果

在这里插入图片描述

Include /exclude LOD表达式

和fixed特立独行的绝对不同,include和exclude是相对聚合,也就是说,它们如何影响视图详细级别,是受视图中的维度影响的。

INCLUDE LOD,使用指定的维度和视图维度进行计算聚合。由于是在视图维度中增加新维度,因此该表达式返回的结果颗粒度比视图级别更高(聚合级别更低)。

总结

  • 在使用详细级别表达式时,一定要明确,要在哪个维度上支持聚合
  • 如果聚合维度不能受维度影响,那就用fixed;如果要指定一个视图中没有的维度,同时还要结合视图的维度,那就用include;如果要排除视图的可见维度,使用exclude;
  • 表范围详细级别表达式,可以在不使用任何定界关键字的情况下在表级别定义详细级别表达式。就是省略了维度的fixed
  • 详细级别表达式在除视图级别外的其他维度上支持聚合。利用详细级别表达式,可以将一个或多个维度附加到任何聚合表达式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章