为Tableau设置时间段日期过滤器

时间:2016-07-14 00:31:28

标签: tableau

是否有创建参数/过滤器的方法,允许您根据日期切换设定的时间段?

例如,我需要使用以下选项创建过滤器:

  1. 数据库中最后一个日期的最新周(最大日期减去7)
  2. 上一周从数据库中的最后一天开始(当前周减7)
  3. 前4周(最长日期减去28)
  4. 我只需要这些选项就可以从用户可用的过滤器中进行选择。

1 个答案:

答案 0 :(得分:2)

这里的第一个问题是如何引用数据中的最后一个日期。简单的MAX([Order Date])不起作用,因为它取决于过滤器和工作表布局,即它会为您提供过滤日期或多个日期,或两者兼而有之。假设您使用的是最新版本且数据源支持LOD calculations,则可以使用这些版本,例如{MAX([Order Date])}(注意大括号)。

另一个问题是你的日期范围重叠,所以简单的IF-THEN将不起作用,因为IF-THEN每个日期只能属于一个感兴趣的范围,即它不能处理重叠。试试看效果。

因此,要解决第二个问题,您可以创建三个计算字段(每个范围一个)返回一个布尔值(您可能需要修改公式以满足您的需要):

过去7天:

[Order Date] >= {MAX([Order Date])} - 7 
            AND [Order Date] < {MAX([Order Date])}

上周排名第二:

[Order Date] >= DATETRUNC('week',{MAX([Order Date])},'Monday') - 7 
        AND [Order Date] < DATETRUNC('week',{MAX([Order Date])},'Monday')

过去28天:

[Order Date] >= {MAX([Order Date])} - 28 
        AND [Order Date] < {MAX([Order Date])}

这些公式将彼此独立地标记每个日期,忽略重叠。

然后您必须创建一个参数以允许用户指定要显示的范围。该参数是3个字符串值的列表,表示范围选择。我将此参数命名为“Show Days&#39;。

最后,创建将放置在过滤器上的计算字段:

([Is last 7 days] AND [Show Days] = 'last 7 days')
OR
([Is 2nd  last week] AND [Show Days] = '2nd last week')
OR 
([Is last 28 days] AND [Show Days] = 'last 28 days')

将其放在滤镜架上,选择&#39; True&#39;,显示参数控制并选择所需的值。