知识库

在筛选器中设置可覆盖的动态默认选择


发布时间: 23 Oct 2013
上次修改日期: 24 May 2023

问题

无法在筛选器中设置用户稍后可更改的的可覆盖动态默认选择,例如,最大的值、最近的值、今天的值、列表中的第一个值,等等...

环境

Tableau Desktop

解决方案

根据筛选器类型和使用案例,最佳的解决方案可能有所不同。下面的选项在一个打包工作簿中演示,该工作簿可从本文右侧的“附件”部分下载。

选项 1:使用动态参数

从 Tableau Desktop 2020.1 开始,动态参数允许使用计算作为参数的默认值。请参见创建参数
 

单击以展开解决方案

选项 2:使用相对日期筛选器

相对日期筛选器会自动将日期更新为所选的相对范围,例如昨天。用户随后可更改相对范围。有关详细信息,请参见创建相对日期筛选器

单击以展开解决方案

选项 3:使用离散日期筛选器

使用“最新日期预设”功能。“最新日期预设”功能将在每次打开工作簿时更新为最近的日期。

注意:此功能仅可用于离散日期列表筛选器,而不适用于日期范围筛选器或允许用户从日历中选择日期的筛选器。

单击以展开解决方案

选项 4:使用键入参数

创建用户可在默认关键字键入的参数(例如“yesterday”)或任何日期以筛选视图。可以设置“yesterday”值以在计算字段中动态返回昨天的日期。请注意,此方法未提供日期下拉列表或滑块,并且只能在参数中键入一个日期。

  1. 使用右上角的下拉箭头打开“数据”窗格菜单,并选择“创建参数”
  2. “创建参数”对话框中,执行以下操作:
    • 为参数命名。在此示例中,该参数名为“Enter 'Yesterday' or a Date”(输入‘Yesterday’或日期)。
    • 对于“数据类型”,选择“字符串”
    • 对于“当前值”,输入“Yesterday”。
    • 对于“允许的值”,选择“全部”
    • 单击“确定”
  3. 右键单击“数据”窗格中的“[Enter 'Yesterday' or a Date]”(输入‘Yesterday’或日期),并选择“显示参数控件”
  4. 选择“分析”>“创建计算字段”
  5. 在打开的“计算字段”对话框中,执行以下操作:
    • 命名此计算字段。在此示例中,计算字段名为“Date Conversion”(日期转换)
    • 在公式字段中,创建计算字段,如下所示:
           
         IF [Enter 'Yesterday' or a Date] = "Yesterday"
         THEN TODAY() - 1
         ELSE DATE( [Enter 'Yesterday' or a Date] )
         END
                 
    • 单击“确定”
  6. 使用类似于如下的计算创建一个名称类似于“opt 3: date filter”(选项 3:日期筛选器)的计算字段:
                   
           [Date Conversion] = [Order Date]
               
  7. 将“[opt 4: date filter]”(选项 4:日期筛选器)拖到“筛选器”功能区。
  8. “筛选器”对话框中,选中“True”并单击“确定”
  9. 现在,用户可在参数控件中键入一个日期或定义的短语。
单击以展开解决方案

选项 4:使用“开始”和“结束”参数来定义范围

步骤 1:创建开始日期和结束日期参数

  1. “数据”窗口中右键单击,然后选择“创建参数”
  2. “创建参数”对话框中,执行以下操作,然后单击“确定”
    • 为参数命名。在示例工作簿中,该参数名为“Start date”(开始日期)。
    • 对于“数据类型”,选择“日期”
    • 对于“允许的值”,选择“全部”
  3. 右键单击参数,然后选择“显示参数控件”
  4. 重复步骤 1-3 以创建“结束日期”参数。

步骤 2(可选):创建参数以控制筛选器

  1. “数据”窗口中右键单击,然后选择“创建参数”
  2. “创建参数”对话框中,执行以下操作,然后单击“确定”
    • 为参数命名。在示例工作簿中,该参数名为“Choose Filter Range”(选择筛选器范围)。
    • 对于“数据类型”,选择“字符串”
    • 对于“允许的值”,选择“列表”
    • “值列表”中,添加任何所需的范围。此示例包括:“All values”(所有值)、“Start to End Dates”(开始日期到结束日期)、“Last 7 days”(最后 7 天)、“Start Date to Today”(开始日期到今天)以及“结束日期前 1 个月”
  3. 右键单击参数,然后选择“显示参数控件”

步骤 3: 创建计算字段以用作筛选器

  1. 如果未使用步骤 2 中的可选参数,请选择“分析”>“创建计算字段”
  2. 在打开的“计算字段”对话框中,执行以下操作:
                        
            [Order Date] >= [Start Date]
             AND [Order Date] <= [End Date]             
    • 命名此计算字段。在示例工作簿中,该计算字段名为“opt 4: simple date filter”(选项 4:简单日期筛选器)。
    • 在公式字段中,创建与以下类似的计算字段:
    • 注意:将“[Order Date]”(订单日期)替换为您希望筛选的日期字段。
    • 单击“确定”
  3. 如果使用步骤 2 中的可选参数,请使用类似于如下的计算创建一个名称类似于“opt 4: date filter”(选项 4:日期筛选器)的计算字段:
                      
             [Choose Filter Range] = "All values"
                      
              OR
                      
              ( [Choose Filter Range] = "Start to End Date"
                 AND [Order Date] >= [Start Date]
                 AND [Order Date] <= [End Date]
               )
                      
              OR
                      
               ( [Choose Filter Range] = "Last 7 days"
                  AND [Order Date] > DATEADD('day',-7,TODAY())
                  AND [Order Date] <= TODAY()
                )
                      
              OR
                      
               ( [Choose Filter Range] = "Start Date to Today"
                  AND [Order Date] >= [Start Date]
                  AND [Order Date] <= TODAY()
                )
                      
               OR
                      
                ( [Choose Filter Range] = "1 Month before End Date"
                   AND [Order Date] >= DATEADD('month', -1, [End Date])
                   AND [Order Date] <= [End Date]
                )
                 
  4. 将“[opt 4: simple date filter]”(选项 4:简单日期筛选器)或“[opt 4: date filter]”(选项 4:日期筛选器)拖到“筛选器”功能区。
  5. 在打开的“筛选器”对话框中,选中“True”
  6. 单击“确定”

原因

在保存或发布工作簿或者当用户创建已发布视图的自定义视图时,静态默认值是在筛选器中设置的值。在打开工作簿、加载已发布视图或自定义视图或者在已发布视图中单击恢复按钮时,筛选器将恢复为静态默认值。

产品中当前未内置在筛选器中设置动态默认选择的功能。

其他信息

为了表达您对在将来的产品版本中包括此增强功能的支持,请为以下社区理念投下您的一票:

从 Tableau Desktop 2018.2 开始,可以向 Tableau 仪表板中添加第三方扩展程序来增加功能。因此,您或许能够找到提供所需筛选器行为的扩展程序。有关详细信息,请参见使用仪表板扩展程序Tableau 仪表板的扩展程序开始了解。


讨论本文... 反馈论坛
此文章是否已解决问题?