Tableau LOD 功能新手指南与实战应用

Tableau LOD 功能新手指南与实战应用 #

1. 引言:利用 Tableau LOD 表达式解锁更深层次的洞察 #

在 Tableau 的数据分析世界中,详细级别 (LOD) 表达式是一项强大的功能,它允许用户超越视图中当前维度的限制,执行更复杂、更灵活的计算。这些特殊的计算由其标志性的大括号 {} 标识,它们的核心价值在于能够在不同于可视化中当前定义的详细级别(即"视图详细级别"或 Viz LOD)上计算值。

LOD 表达式赋予用户对数据聚合和显示方式更精细的控制权,从而实现更精确、更灵活的分析。它们最早在 Tableau 9.0 版本中引入,旨在解决一些常见但以往难以直接回答的分析问题。例如,“每个客户在所有区域的平均销售额是多少?“或"按客户首次购买年份标记客户"或"计算不受区域筛选器影响的总销售额百分比?"。这些问题通常需要在一个与当前视图不同的粒度级别上进行计算。

为何 LOD 如此重要?轻松应对复杂问题 #

标准的 Tableau 聚合计算(如 SUM、AVG)与视图中存在的维度紧密相关。当您在视图中添加或移除维度时,聚合结果会随之改变。LOD 表达式打破了这种依赖性,允许计算在某种程度上独立于视图的结构。这有助于维持分析的"心流"状态,让用户可以在单个可视化中解决涉及多个粒度级别的问题,而无需复杂的变通方法或创建多个工作表。

从本质上看,LOD 表达式代表了一种从依赖视图的计算(如基本聚合或表计算)到独立于视图或相对于视图的计算的根本性转变。这种抽象层使得在 Tableau 界面内进行复杂分析变得更加容易。然而,这种强大的抽象能力也意味着用户必须深入理解其基本原理,特别是每种 LOD 类型如何与视图详细级别 (Viz LOD) 和筛选器交互。如果对计算的作用域理解不清,可能会导致错误的结论。例如,Tableau 的操作顺序(Order of Operations)变得至关重要,因为它决定了 LOD 计算相对于筛选器发生的时间,从而影响最终值。

本指南涵盖内容 #

本指南将系统地介绍 LOD 表达式的基础知识,包括:理解视图详细级别 (Viz LOD) 的概念,深入探讨三种主要的 LOD 表达式类型(FIXED、INCLUDE 和 EXCLUDE)及其语法,分析它们与筛选器的交互方式(操作顺序),讨论如何选择合适的 LOD 类型,并通过实际案例展示其应用场景。

2. 理解视图中的"详细级别”(Viz LOD) #

在深入了解 LOD 表达式之前,必须先理解 Tableau 中"视图详细级别”(Viz LOD)的概念。Viz LOD 是指在当前工作表中,由放置在行、列功能区以及标记卡(如颜色、大小、标签、详细信息、工具提示)上的所有维度所定义的聚合粒度。

什么决定了 Tableau 中的粒度? #

简单来说,您拖放到视图中的维度越多,视图的粒度就越细(即数据点越多,视图越详细);反之,维度越少,视图的粒度就越粗(即数据点越少,视图越聚合)。例如,如果您只将 SUM(Sales) 放入视图,您会得到一个表示总销售额的单一数值。如果您接着将"Region"(区域)维度拖到行上,SUM(Sales) 就会自动按每个区域进行聚合。如果您再将"Category"(类别)维度拖到行上,“Sales”(销售额)将进一步细分,显示每个区域下每个类别的销售额。

Viz LOD 的局限性 #

虽然 Viz LOD 对于标准的数据探索非常直观,但它在处理某些分析问题时存在局限性。有时,我们需要将当前视图级别的数据与以不同方式聚合的数据进行比较。例如,比较某个区域的销售额与所有区域的平均销售额,或者计算某个产品占固定总销售额的百分比。在没有 LOD 表达式的情况下,实现这些目标可能非常繁琐,可能需要创建单独的工作表、使用复杂的表计算,甚至重构数据源。LOD 表达式正是为了优雅地解决这类问题而设计的。

Viz LOD 是 Tableau 中计算的默认上下文。LOD 表达式则可以看作是明确的指令,用于覆盖或修改特定计算的默认上下文。它们允许在计算公式内部定义聚合的级别,从而在不同程度上将其与视图布局解耦。因此,理解 Viz LOD 的概念是理解 LOD 表达式如何偏离默认行为的基础。用户需要同时意识到 Viz LOD(定义图表/表格结构的因素)和计算 LOD(LOD 表达式计算其值的级别),才能理解它们之间的相互作用。例如,一个 LOD 计算的结果可能在多行中重复出现(如果 LOD 比 Viz LOD 更粗糙,如 EXCLUDE 或基于较少维度的 FIXED),或者需要进一步聚合(如果 LOD 更精细,如 INCLUDE)。只有将计算定义的 LOD 与 Viz LOD 进行比较时,这种行为才有意义。

3. LOD 表达式的三种类型:FIXED、INCLUDE、EXCLUDE 简介 #

Tableau 提供了三种类型的 LOD 表达式关键字:FIXED、INCLUDE 和 EXCLUDE。每种关键字都规定了计算的详细级别与视图详细级别 (Viz LOD) 之间的不同关系。

  • FIXED (固定):计算在仅由表达式中列出的维度定义的级别上进行,通常忽略 Viz LOD。可以理解为:“精确地按照这些维度计算”。
  • INCLUDE (包含):计算在由 Viz LOD 加上表达式中列出的任何维度定义的级别上进行(粒度更细)。可以理解为:“视图中的维度再加上这些维度”。
  • EXCLUDE (排除):计算在 Viz LOD 减去表达式中列出的任何维度定义的级别上进行(粒度更粗)。可以理解为:“视图中的维度但不包括这些维度”。

选择使用哪种 LOD 类型,根本上取决于所需计算的作用域是需要独立于视图、比视图更精细,还是比视图更粗糙。FIXED 提供了稳定性和独立性,适用于那些不应随着用户下钻或筛选而改变的基准或计算(除非使用上下文筛选器)。INCLUDE 和 EXCLUDE 则提供了相对性和灵活性,它们的计算会根据视图中当前的维度进行调整,适用于相对于当前视觉上下文的比较。因此,在编写 LOD 表达式之前,初学者应首先明确所需计算值的作用域:哪些维度必须定义这个计算?它应该如何响应筛选?它应该如何与视觉上显示的维度相关联?预先定义这些有助于选择正确的关键字。

4. FIXED LOD:在特定且不变的级别上进行计算 #

定义与目的 #

FIXED LOD 表达式使用在计算中明确指定的维度来计算聚合值,而不考虑视图中存在的其他维度。它的关键特性在于其"固定"性:聚合级别被锁定在声明的维度上,与视图的动态变化(如添加/移除维度)无关。这使得 FIXED LOD 非常适合用于创建需要在不同视图或可视化中保持一致的计算,或者作为稳定的基准进行比较。

语法解析 #

FIXED LOD 的基本语法结构如下:

{FIXED [维度1], [维度2],... : 聚合表达式([度量])}
  • {}:大括号标志着这是一个 LOD 表达式。
  • FIXED:关键字,指定 LOD 类型。
  • [维度1], [维度2],...:维度声明,列出了定义计算粒度的维度,多个维度用逗号分隔。
  • ::冒号,分隔维度声明和聚合表达式。
  • 聚合表达式([度量]):要执行的聚合计算,例如 SUM([Sales])AVG([Profit])MIN([Order Date])COUNTD([Customer ID]) 等。

一个特殊的用法是省略维度声明,如 {FIXED : SUM([Sales])} 或更简洁的 {SUM([Sales])},这会计算整个数据集的总和(忽略所有维度),即全局总计。

我们可以用更通俗的语言来理解 FIXED LOD:“对于 [维度1]、[维度2]… 的每个唯一组合,计算 [聚合表达式]"。

FIXED 与操作顺序(筛选器) #

理解 FIXED LOD 的行为,关键在于了解 Tableau 的操作顺序。FIXED LOD 计算发生在常规维度筛选器(Dimension Filters)应用之前

这意味着,如果您在工作表上添加了一个常规的维度筛选器(例如,筛选"Region"为"West”),这个筛选器默认情况下不会影响 FIXED LOD 计算的结果。FIXED LOD 仍然会基于筛选器应用之前的数据进行计算。

但是,如果您希望某个筛选器能够影响 FIXED LOD 计算,您需要将该筛选器提升为上下文筛选器(Context Filter)。上下文筛选器在 FIXED LOD 计算之前应用。要将筛选器添加到上下文,只需在筛选器架上右键单击该筛选器,然后选择"添加到上下文"(Add to Context)。

这种与筛选器的交互方式是 FIXED LOD 的一个核心特性,它允许用户精确控制计算是在筛选前还是筛选后进行,从而实现更复杂的分析逻辑。

使用案例 1:客户获取同期群分析 #

  • 目标:找出每个客户首次购买的日期,用于同期群分析。
  • LOD 计算{FIXED [Customer ID] : MIN([Order Date])}
  • 说明:这个计算会查看每个 Customer ID 的所有订单,并找到最小的 Order Date(订单日期)。结果是为每个客户打上一个固定的首次购买日期标签。这个值对于每个客户都是不变的,无论视图中还有哪些其他维度或筛选器。重要的是,这个 FIXED LOD 计算的结果可以作为一个新的维度在 Tableau 中使用,例如按客户获取年份对销售额进行分组。

使用案例 2:计算总销售额百分比(忽略筛选器) #

  • 目标:计算每个州 (State) 的销售额占公司总销售额的百分比,并且这个百分比不受应用于视图的区域 (Region) 筛选器的影响。
  • 分子SUM([Sales])(这个值会受到视图中维度和常规筛选器的影响)
  • 分母 (LOD){FIXED : SUM([Sales])}(这个计算会忽略所有维度,计算整个数据集的总销售额,并且在维度筛选器之前执行)
  • 最终计算SUM([Sales]) / SUM({FIXED : SUM([Sales])})
  • 说明:当用户按区域筛选视图时,分子的 SUM([Sales]) 会更新为该区域的销售额,但分母 SUM({FIXED : SUM([Sales])}) 保持不变(除非区域筛选器是上下文筛选器),因为它计算的是全局总销售额。这样得到的百分比就是相对于不受筛选影响的总额。这与标准的"总额百分比"表计算不同,后者会受区域筛选器的影响。

使用案例 3:比例刷(Proportional Brushing) #

  • 目标:创建一个视图,显示按子类别 (Sub-Category) 划分的销售额。当按区域 (Region) 筛选时,不仅显示该区域的销售额条,还要在背景中显示该子类别在所有区域的总销售额条,以直观展示所选区域销售额占总额的比例。
  • 前景条SUM([Sales])(受区域筛选器影响)
  • 背景条{FIXED [Sub-Category] : SUM([Sales])}(计算每个子类别在所有区域的总销售额,忽略区域维度筛选器)
  • 说明:将这两个度量放在双轴图上,确保 FIXED LOD 计算的条形图在后。然后添加区域筛选器。当用户选择某个区域(例如"West")时,前景条显示 West 区域的销售额,而背景条保持不变,显示该子类别的全国总销售额。这是因为 FIXED LOD 在区域维度筛选器之前计算,从而实现了比例刷的效果。

FIXED LOD 的主要优势在于其能够创建稳定、可重用的计算结果,这些结果就像是指定维度的预聚合属性,独立于当前的视觉上下文或标准筛选。这使得它们非常适合创建基准、基于历史属性(如首次购买日期)对数据进行分段,或计算相对于一致总量的比率。

与上下文筛选器的交互不仅仅是一个技术细节,而是一个关键的控制机制。它允许用户决定筛选器是否应在 FIXED LOD 计算运行之前约束数据集。默认行为(忽略维度筛选器)对于将筛选后的数据与未筛选的基线进行比较非常有用。然而,有时基线本身也需要被筛选(例如,计算在特定筛选时间范围内的总销售额百分比)。使用上下文筛选器提供了这种必要的控制。理解这种选择(标准筛选器 vs 上下文筛选器)是掌握 FIXED LOD 的关键。

使用 FIXED LOD 时,用户需要注意数据源的大小以及所用维度的基数(唯一值的数量)。由于 FIXED LOD 可能在整个数据集上操作(在维度筛选器之前),它们可能会影响非常大的数据集的性能,特别是当 FIXED 维度非常精细时。上下文筛选器有时可以通过在 FIXED 计算运行之前减少数据量来帮助提升性能。

5. INCLUDE LOD:为计算添加更多细节 #

定义与目的 #

INCLUDE LOD 表达式在计算聚合值时,会使用视图中当前存在的维度,并额外包含在计算中指定的维度。这意味着 INCLUDE LOD 的计算粒度比 Viz LOD 更精细。

当您需要在比视图当前显示的更细粒度级别上执行计算,但希望将结果聚合回 Viz LOD 进行显示时,INCLUDE LOD 就非常有用。

语法解析 #

INCLUDE LOD 的语法结构如下:

{INCLUDE [维度1], [维度2],... : 聚合表达式([度量])}
  • {}:大括号。
  • INCLUDE:关键字,指定 LOD 类型。
  • [维度1], [维度2],...:维度声明,列出要额外包含在计算中的维度。
  • ::冒号。
  • 聚合表达式([度量]):要执行的聚合计算。

通俗地讲,INCLUDE LOD 的意思是:“对于 [视图中的每个维度组合] 以及 [维度1]、[维度2]… 的每个唯一组合,计算 [聚合表达式]"。

INCLUDE 与操作顺序(筛选器) #

与 FIXED 不同,INCLUDE LOD 表达式在 Tableau 的操作顺序中位于维度筛选器之后

这意味着 INCLUDE LOD 计算的结果受到应用于视图的常规维度筛选器的影响。它们在已被筛选的数据集上下文中运行。

聚合考量 #

由于 INCLUDE 计算的粒度比 Viz LOD 更细,当您将 INCLUDE LOD 计算结果拖放到视图中时,Tableau 通常需要对其进行再次聚合(例如,使用 SUM、AVG、MIN、MAX 或 ATTR),以匹配 Viz LOD 的粒度。Tableau 可能会默认使用 SUM 或 AVG,但用户可能需要根据分析目标手动更改聚合方式。

使用案例:计算每个类别内的平均订单销售额 #

  • 目标:显示每个产品类别 (Category) 的平均每笔订单的销售额,即使订单 ID (Order ID) 不在视图中。
  • Viz LOD:视图中只有 Category 维度(例如,在行上)。
  • LOD 计算{INCLUDE [Order ID] : SUM([Sales])}
  • 说明:这个计算首先会考虑视图中的 Category,并额外包含 Order ID。它会计算出每个唯一的 (Category, Order ID) 组合的总销售额。
  • 添加到视图:将此计算字段拖到视图中(例如,列上)。Tableau 可能会默认将其显示为 SUM({INCLUDE [Order ID] : SUM([Sales])})。为了得到平均订单销售额,需要将聚合方式更改为 AVG(右键单击胶囊 -> 度量(Measure) -> 平均值(Average))。
  • 解释:最终视图中显示的 AVG({INCLUDE [Order ID] : SUM([Sales])}) 是对每个 Category 内所有单个订单销售额(由 INCLUDE 计算得出)的平均值。这给出了该类别内的平均订单规模。如果此时将 Region(区域)维度也添加到视图中,该计算会自动调整,变为计算每个 (Category, Region) 组合内的平均订单销售额,展示了 INCLUDE 的灵活性。

INCLUDE LOD 的价值在于,它允许我们在计算中包含必要的精细粒度,而无需将这些精细维度实际添加到可视化中,从而避免视图变得混乱。它弥合了期望的视觉聚合级别与计算所需的聚合级别之间的差距。

INCLUDE 尊重维度筛选器的事实,使其本质上比 FIXED(在不使用上下文筛选器时)更具动态性和上下文敏感性。它的结果会随着用户筛选和修改视图维度而自然地调整。这使得它非常适合那些应该反映用户交互式探索过程的计算。

然而,用户需要特别注意将 INCLUDE LOD 结果放入视图时应用的最终聚合方式。使用 SUM、AVG、MIN 还是 MAX 会极大地改变结果的含义,正确的选择完全取决于要回答的分析问题。

6. EXCLUDE LOD:在比视图更高的级别上进行计算 #

定义与目的 #

EXCLUDE LOD 表达式在计算聚合值时,会从 Viz LOD 中明确移除(排除)指定的维度。这意味着 EXCLUDE LOD 的计算粒度比 Viz LOD 更粗糙。

当您希望在视图中显示详细维度(例如,子类别)的同时,计算并显示一个在更高层级(例如,类别)上的聚合值(如总计或平均值)以进行比较时,EXCLUDE LOD 非常有用。

语法解析 #

EXCLUDE LOD 的语法结构如下:

{EXCLUDE [维度1], [维度2],... : 聚合表达式([度量])}
  • {}:大括号。
  • EXCLUDE:关键字,指定 LOD 类型。
  • [维度1], [维度2],...:维度声明,列出要从 Viz LOD 中排除的维度(这些维度必须是当前视图中存在的)。
  • ::冒号。
  • 聚合表达式([度量]):要执行的聚合计算。

通俗地讲,EXCLUDE LOD 的意思是:“对于 [视图中的每个维度组合] 但不考虑 [维度1]、[维度2]…,计算 [聚合表达式]"。

EXCLUDE 与操作顺序(筛选器) #

与 INCLUDE 类似,EXCLUDE LOD 表达式也在 Tableau 的操作顺序中位于维度筛选器之后

因此,EXCLUDE LOD 计算的结果同样受到应用于视图的常规维度筛选器的影响。它们也在已被筛选的数据集上下文中运行。

重复考量 #

由于 EXCLUDE 计算的粒度比 Viz LOD 更粗糙,其结果通常会在对应于被排除维度的行之间重复出现。例如,如果视图中有 Category 和 Sub-Category,而 EXCLUDE 计算排除了 Sub-Category 来计算 Category 级别的平均销售额,那么对于同一 Category 下的所有 Sub-Category 行,这个计算结果将是相同的。这是预期行为。

使用案例:比较子类别销售额与类别平均销售额 #

  • 目标:显示每个子类别 (Sub-Category) 的平均销售额,并将其与其所属父类别 (Category) 的平均销售额进行比较。
  • Viz LOD:视图中有 Category 和 Sub-Category 维度(例如,在行上)。
  • 子类别平均销售额AVG([Sales])(此聚合在 Viz LOD,即按 Category 和 Sub-Category 计算)。
  • 类别平均销售额 (LOD){EXCLUDE [Sub-Category] : AVG([Sales])}
  • 说明:这个 EXCLUDE 计算会忽略 Sub-Category 维度,因此它计算的是每个 Category 的平均销售额。
  • 添加到视图:将 Category 和 Sub-Category 放在行上。将 AVG([Sales]) 和上述 EXCLUDE 计算字段放在列或文本标记上。
  • 解释:EXCLUDE 计算提供了整个类别的平均销售额,并在该类别下的每个子类别行上重复显示。这使得可以直接比较每个子类别的平均销售额与其父类别的平均销售额。如果此时将 Segment(细分市场)维度也添加到视图中,EXCLUDE 计算将自动调整为计算每个 (Category, Segment) 组合的平均销售额(仍然忽略 Sub-Category),再次体现了其灵活性。

EXCLUDE 的主要功能是在详细的可视化中提供上下文,通过计算相对于视图中显示的维度更高层级(父级)的值,而无需从视图中移除详细维度本身。它允许在同一视图内直接进行"部分与整体"或"项目与组平均值"之类的比较。EXCLUDE 在计算时会尊重视图中的维度(除了那些明确排除的)和筛选器。

与 INCLUDE 类似,EXCLUDE 的结果也是动态的,会对筛选和 Viz LOD 的变化(排除了公式中指定的维度后)做出响应。

EXCLUDE LOD 产生的重复值最初可能会让初学者感到困惑。关键是要理解这种重复是符合逻辑的:计算是有意在更粗糙的级别上执行的,因此对于共享相同未排除维度的所有标记,应用相同的结果。理解这一点有助于避免将重复值误解为错误。

7. 如何选择合适的 LOD:FIXED vs. INCLUDE vs. EXCLUDE #

在了解了三种 LOD 表达式的基本概念和行为之后,下一个关键问题是如何在特定场景下选择最合适的类型。

关键差异回顾 #

  • FIXED: 计算级别由表达式内维度唯一确定,通常独立于视图。
  • INCLUDE: 计算级别是视图级别加上表达式内维度(更精细)。
  • EXCLUDE: 计算级别是视图级别减去表达式内维度(更粗糙)。

决定性因素:筛选器和视图依赖性 #

选择哪种 LOD 最关键的区别往往在于它们如何与维度筛选器Viz LOD 交互。

何时使用 FIXED? #

  • 当计算需要独立于视图中的维度,并且不受常规维度筛选器的影响时(除非使用上下文筛选器)。
  • 适用于创建固定的基准、定义同期群、计算稳定的分母(如占总额百分比)等场景。

何时使用 INCLUDE 或 EXCLUDE? #

  • 当计算需要相对于视图中的维度,并且应该响应常规维度筛选器时。
  • 选择 INCLUDE:如果计算需要比视图显示的更精细的细节,但这些细节本身不需要在视图中展示。例如,计算每个类别的平均订单大小(需要订单 ID 细节)。
  • 选择 EXCLUDE:如果需要在显示详细数据的同时,将其与更高层级的聚合值进行比较。例如,比较子类别销售额与其所属类别的平均销售额。

对比总结表 #

特性FIXEDINCLUDEEXCLUDE
计算级别仅由表达式中的维度定义Viz LOD + 表达式中的维度Viz LOD - 表达式中的维度
与 Viz LOD 关系独立更精细更粗糙
维度筛选器影响否(除非上下文筛选器)
视图变化响应不响应响应响应
典型用途基准、同期群、固定比率平均订单大小、细节聚合部分与整体比较
结果特性稳定、可重用需要再聚合可能重复显示

这个表格提供了一个简洁的、并排的比较,突出了三种 LOD 类型的核心特性和行为。它直接解决了初学者需要考虑的关键决策因素:计算级别如何确定,如何与视图和筛选器交互,以及每种类型最适合解决哪类问题。这种结构化的比较有助于理解,并可作为快速参考指南。它综合了多个来源中关于比较和行为的讨论。

简单的决策指南 #

可以尝试问自己以下问题来辅助选择:

  1. 我的计算是否需要忽略我可能在工作表上添加/移除的维度和常规筛选器?

    • 如果是,倾向于使用 FIXED(并考虑是否需要上下文筛选器)。
  2. 如果否,那么我的计算是否需要在比我视图显示的更详细的级别上进行?

    • 如果是,倾向于使用 INCLUDE
  3. 如果否,那么我的计算是否需要在比我视图显示的更粗略的级别上进行(用于比较)?

    • 如果是,倾向于使用 EXCLUDE

通常,实现某个结果可能有不止一种方法(例如,使用 FIXED 或 EXCLUDE 计算类别总计),但选择会影响灵活性和筛选器交互。FIXED 提供了稳定性,但对视图变化的适应性较差;而 INCLUDE/EXCLUDE 提供了适应性,但需要仔细管理视图上下文。对于初学者来说,从能够解决问题的最简单的 LOD 开始通常是最好的。然而,随着分析变得更加复杂,理解筛选器交互的细微差别(特别是 FIXED 与 INCLUDE/EXCLUDE 的计算时机差异)对于构建健壮且准确的仪表板至关重要。选择不仅仅是为了得到一个数字,而是要确保这个数字在用户交互(筛选、下钻)下表现正确。

8. 综合应用:一个实际场景演练 #

让我们通过一个具体的场景,将前面学到的知识整合起来。

场景 #

分析产品子类别 (Sub-Category) 的表现。我们希望在一个视图中看到:

  1. 每个子类别的总销售额 (Sales)。
  2. 该子类别销售额占其所属父类别 (Category) 总销售额的百分比。
  3. 该子类别的平均销售额与其父类别平均销售额之间的差异。

我们还需要确保这些计算在我们按区域 (Region) 进行筛选时能够正确工作。

步骤 1:基本设置 #

  • 将 Category 和 Sub-Category 拖到"行"功能区。
  • SUM([Sales]) 拖到"列"功能区或"文本"标记卡。

步骤 2:计算占类别总额的百分比 (使用 FIXED) #

  • 目标:计算百分比的分母需要是类别的总销售额,并且这个总额不应受常规区域筛选器的影响(除非区域筛选器是上下文筛选器)。
  • 类别总销售额 (LOD): {FIXED [Category] : SUM([Sales])}
  • 占类别总额百分比: SUM([Sales]) / SUM({FIXED [Category] : SUM([Sales])}) (将此计算字段的格式设置为百分比)
  • 说明:这里选择 FIXED 是为了确保分母(类别总销售额)对于每个类别保持稳定,即使应用了常规的区域筛选器。如果希望区域筛选器影响此计算,则需要将区域筛选器添加到上下文。

步骤 3:计算与类别平均销售额的差异 (使用 EXCLUDE) #

  • 目标:比较子类别级别的平均销售额 (AVG([Sales]) 在 Viz LOD 计算) 与类别级别的平均销售额。类别平均销售额的计算应该响应可能应用的区域筛选器。
  • 子类别平均销售额: AVG([Sales]) (这个聚合在 Viz LOD,即按 Category 和 Sub-Category 计算)
  • 类别平均销售额 (LOD): {EXCLUDE [Sub-Category] : AVG([Sales])}
  • 与类别平均销售额差异: AVG([Sales]) - AVG({EXCLUDE [Sub-Category] : AVG([Sales])})
  • 说明:这里选择 EXCLUDE 是合适的,因为我们需要计算相对于当前视图(包括可能存在的区域筛选器)的类别平均销售额,同时忽略子类别的细节。EXCLUDE 能够实现这一点,因为它在维度筛选器之后计算。

步骤 4:构建视图并测试 #

  • 将步骤 2 和步骤 3 中创建的计算字段添加到视图中(例如,放在 SUM([Sales]) 旁边)。
  • 将 Region 添加为筛选器。
  • 演示:当您筛选不同的区域时,观察 SUM([Sales]) 和基于 EXCLUDE 的差异计算会发生变化,而基于 FIXED 的百分比计算的分母(除非区域筛选器在上下文中)保持不变。

这个演练表明,现实世界的分析通常需要组合使用不同类型的计算(基本聚合、不同类型的 LOD)来在单个视图中回答多方面的问题。该场景需要一个简单的总和、一个相对于稳定总量的比率(适合 FIXED),以及一个与上下文相关的平均值的比较(适合 EXCLUDE)。这说明 LOD 类型并非孤立使用,而是需要根据具体需求战略性地组合应用的工具。熟练掌握 LOD 不仅在于理解单个类型,更在于理解它们如何协同工作,以及如何利用它们在筛选器交互方面的不同行为来构建信息丰富且具有交互性的可视化。这个演练可以作为一个模板,用于将复杂的分析需求分解为更小的计算步骤,并为每个步骤选择合适的工具(基本聚合、FIXED、INCLUDE 或 EXCLUDE)。

9. 总结:开启您的 LOD 进阶之旅 #

关键概念回顾 #

本指南介绍了 Tableau 详细级别 (LOD) 表达式的基础知识。我们了解到 LOD 表达式的核心目的是允许用户在不同于视图本身定义的粒度级别上进行计算。我们重点探讨了三种主要的 LOD 类型:

  • FIXED: 在由表达式明确指定的维度级别上计算,通常独立于视图和常规维度筛选器。
  • INCLUDE: 在视图级别基础上增加指定维度进行计算,粒度更细,并响应常规维度筛选器。
  • EXCLUDE: 从视图级别中排除指定维度进行计算,粒度更粗,并响应常规维度筛选器。

理解它们与 Viz LOD 和筛选器(特别是 Tableau 的操作顺序)的关系是正确使用 LOD 的关键。

实践出真知 #

掌握 LOD 表达式的最佳途径是不断练习。建议使用 Tableau 自带的示例数据集(如常用的 Superstore 数据集)进行实验。尝试复现本指南中的示例,然后对其进行修改,观察结果的变化,特别是当添加、移除维度或应用不同类型筛选器时。

超越基础 #

LOD 表达式的功能不止于此。它们可以相互嵌套,用于构建更复杂的计算逻辑。然而,在深入探索这些高级用法之前,打下坚实的基础至关重要。对于希望进一步学习的用户,Tableau 官方文档和活跃的社区论坛(如 Flerlage Twins 博客、Tableau 社区)是宝贵的资源。

结语 #

详细级别 (LOD) 表达式是 Tableau 中一项极其强大的功能。一旦理解并掌握了它们,您的数据分析能力将得到显著提升,能够更轻松地应对复杂的业务问题,并从数据中发掘更深层次的见解。学习 LOD 是一个循序渐进的过程,涉及理解理论、动手实践、观察结果(尤其是在筛选器交互方面),并根据观察结果不断完善理解。本指南为您提供了基础知识,但真正的精通源于在实际工作中的持续应用和探索。不必因为初期的困惑而气馁,投入时间和实践,您终将能够自如地运用 LOD 表达式。