知识库

创建忽略筛选器的计算


发布时间: 14 Jul 2017
上次修改日期: 20 Jul 2023

问题

如何创建在筛选视图的其余部分时不会被筛选的计算。

环境

Tableau Desktop 

答案

选项 1:使用详细级别 (LOD) 表达式 FIXED。

附带的示例工作簿使用示例数据集“Superstore”来演示以下指引:

  1. 将“[Region]”(区域)拖到“行”功能区上。
  2. 将“[Sales]”(销售额)拖到标记卡上的“文本”
  3. 将“[Category]”(类别)拖到“筛选器”功能区上。
  4. “编辑筛选器”对话框中,检查所有类别并单击“确定”
  5. “筛选器”功能区上右键单击“[Category]”类别,并选择“显示筛选器”
  6. 选择“分析”>“创建计算字段”
  7. 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”
    1. 命名此计算字段。在本例中,计算字段名为“Unfiltered Sales”(未筛选的销售额)
    2. 在公式字段中,创建一个类似于如下的计算:
      { FIXED [Region] : SUM( [Sales] ) }
  8. “数据”窗格中双击“[Unfiltered Sales]”(未筛选的销售额),将该字段添加到交叉表。
注意:更改“Category”(类别)筛选器值时,“[Unfiltered Sales]”(未筛选销售额)的值将不会更改。由于操作顺序的原因,FIXED 计算只会通过上下文筛选器进行筛选。上下文筛选器在“筛选器”功能区上将显示为灰色字段。
 

选项 2:使用参数来筛选视图中所有其他字段。

  1. 将“[Region]”(区域)拖到“行”功能区上。
  2. 将“[Sales]”(销售额)拖到“标记”卡上的“文本”
  3. “数据”窗格中,右键单击“[Category]”(类别)字段,并选择“创建”>“参数…”
  4. “创建参数”对话框中,执行以下操作,并单击“确定”
    •     在“名称”文本框中,键入一个名称。在此示例中,我将该参数称为“Category Parameter”(类别参数)。
    •     将值“All”(全部)添加到列表。
 
  • 右键单击“数据”窗格中的“[Category Parameter]”(类别参数),并选择“显示参数控件”
  • 选择“分析”>“创建计算字段”
  • 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”
    • 命名此计算字段。在此示例中,计算字段名为“Sales Filtered by Category”(按类别筛选的销售额)。
    • 在公式字段中,创建一个类似于如下的计算:

      IF [Category] = [Category Parameter]
      OR [Category Parameter] = "All"
      THEN [Sales]
      END
  • “数据”窗格中双击“[Sales Filtered by Category]”(按类别筛选的销售额),将该字段添加到交叉表。

其他信息

FIXED 表达式将忽略除维度声明中包括的维度之外的所有其他维度。因此,解决方案应包括视图中的所有维度,而不包括要忽略的筛选器维度。在本例中,“[Region]”(区域)是视图中的唯一维度。如果向视图中添加了更多维度,则还应将这些维度添加到 FIXED 表达式。

请注意,如果向筛选器功能区中添加了其他维度,选项 1 可能会返回低于预期的值或不返回值。

举例来说,如果计算更改为 { FIXED [Region], [State] : SUM([Sales]) },并且“Washington”(华盛顿)州仅在“Furniture”(家具)类别中有销售额,那么,如果“Furniture”(家具)被筛选出视图,“Washington”(华盛顿)也会被筛选出视图。这意味着“West”(西部)区域的销售额将降低。

之所以会发生这种情况,原因是 FIXED 表达式不会显式忽略筛选器。实际发生的情况是,FIXED 表达式会在基础数据库中的许多记录上返回相同的值。如果其中一些记录包含被筛选出的重复值,则 FIXED 表达式仍将返回未筛选的值。

此文章是否已解决问题?