使用上下文筛选器提高视图性能

默认情况下,将独立地对 Tableau 中设置的所有筛选器进行计算。也就是说,每个筛选器都会访问数据源中的所有行,而与其他筛选器无关。不过,您可以将一个或多个分类筛选器设置为视图的上下文筛选器。可以将上下文筛选器视为独立筛选器。您所设置的任何其他筛选器都将定义为相关筛选器,因为它们仅处理通过上下文筛选器的数据。

可以创建上下文筛选器以实现以下目的:

  • 提高性能 — 如果您设置了大量筛选器或具有一个大型数据源,则查询速度可能会很慢。可以设置一个或多个上下文筛选器来提高性能。

  • 创建相关数字筛选器或“前 N 个”筛选器 — 可以设置一个上下文筛选器,以便仅包含相关数据,然后设置数字筛选器或“前 N 个”筛选器。

例如,假设您负责一家大型食品杂货连锁店的早餐产品。您的任务是按所有商店的利润找出前 10 种早餐产品。如果数据源非常大,则可以设置一个上下文筛选器,以便仅包含早餐产品。然后,可以按利润创建一个“前 10 个”筛选器作为相关筛选器,该筛选器仅处理通过上下文筛选器的数据。

注意:从 Tableau 9.0 开始,除了为通用 ODBC 数据源和自定义数据源创建临时表之外,上下文筛选器不再创建任何临时表。

创建上下文筛选器

若要创建上下文筛选器,请在现有分类筛选器的上下文菜单中选择“添加到上下文”。将对上下文执行一次计算以生成视图。然后,相对于该上下文对所有其他筛选器执行计算。上下文筛选器:

  • 显示在“筛选器”功能区顶部。

  • 由“筛选器”功能区上的灰色来标识。

  • 无法在功能区上重新排列。

如下所示,“Ship Mode”(装运模式)维度设置为视图的上下文。仅会使用通过“Ship Mode”(装运模式)传递的数据来计算“Region”(区域)筛选器。

可通过以下方式来修改上下文筛选器:

  • 从“筛选器”功能区删除字段 — 如果功能区上保留有其他上下文筛选器,则计算新的上下文。

  • 编辑筛选器 — 每次编辑上下文筛选器时,都会计算新的上下文。

  • 选择“从上下文移除”— 此筛选器作为标准筛选器保留在功能区上。如果功能区上保留有其他上下文筛选器,则计算新的上下文。

加快上下文筛选器

若要提高上下文筛选器的性能(尤其是对于大型数据源),请遵循以下一般规则。

  • 与应用许多上下文筛选器相比,使用可显著减小数据集大小的单个上下文筛选器要好得多。事实上,如果筛选器不能将数据集大小减小十分之一或更多,则将该筛选器添加到上下文实际上会更糟,因为计算上下文的性能成本较高。

  • 请在创建上下文之前完成所有数据建模。数据模型中的更改(例如将维度转换为度量)需要重新计算上下文。

  • 在将字段添加到其他功能区之前,设置上下文的所需筛选器并创建上下文。先进行此工作会使在将字段置于其他功能区上时所运行的查询快得多。

  • 如果要对日期设置上下文筛选器,则可以使用连续日期。不过,对离散日期使用日期级(如“YEAR(date)”)或上下文筛选器会十分有效。

注意:如果数据集具有大量索引,则上下文筛选器可能不会提高性能,并且实际上可能会导致查询性能降低。

当您在数据源的“数据”菜单中使用“假设存在引用完整性”选项时,上下文筛选器可能会对任何查询性能改进产生负面影响。有关详细信息,请参见假设存在联接的引用完整性

示例:创建上下文筛选器

本示例演练如何创建上下文筛选器。首先,创建一个用于按销售额来显示前 10 种产品的视图。然后,在产品类别上创建一个上下文筛选器,以便可以查看前 10 种家具产品。

  1. 使用“Sample - Superstore”数据源来创建如下所示的初始视图。该视图将显示所有子类的销售额,销售额最高的产品显示在最上方。

  2. 现在,创建一个“前 10 个”筛选器,以便仅显示销售额名列前茅的产品。可通过将“Sub-Category”(子类)字段拖到“筛选器”功能区来创建此筛选器。在“筛选器”对话框中,切换到“前”选项卡,然后定义一个“按销售额总计排列的前 10 个”筛选器。若要了解有关定义“前 N 个”筛选器的更多信息,请参见筛选视图中的数据(链接在新窗口中打开)

  3. 单击“确定”时,您会看到将对视图进行筛选以显示按销售额排列的前 10 种产品子类。

  4. 现在,我们来添加另一个筛选器以便仅显示家具产品。将“Category”(类别)字段拖到“筛选器”功能区,并仅选择“Furniture”(家具)。完成后,单击“确定”

    该视图经过筛选,现在仅显示 3 种产品,而不是 10 种产品。这是因为,在默认情况下,将对所有筛选器进行单独计算,视图仅显示合并结果。因此,此视图将显示前 10 种产品中有三种是家具产品。

  5. 若要确定前 10 种家具产品,我们需要将“Category”(类别)筛选器设置为上下文筛选器。在“筛选器”功能区上右键单击该字段,然后选择“添加到上下文”

  6. 该筛选器将被标记为上下文筛选器,并且视图将会更新以显示前 4 种家具产品。为什么不是 10 种?因为只有 4 种子类包含家具。但现在我们知道“前 10 个”筛选器是依据该上下文的结果进行计算的。

感谢您的反馈!