我有一个计算字段“Total Revenue”,它汇总了Tableau中多个数据源的收入。 根据这个字段(汇总字段)每月,我想只显示最近一个月收入最高的前五项。
如上表所示,根据截至最近一个月(3月)的收入数据,必须过滤掉项目(因为它们在3月份是TOP 5)。如何使用RANK()
实现这一目标?我不能仅按照下面的公式对最近一个月进行排名,因为它显示错误,因为我无法混合聚合和非聚合函数。
IF DATETRUNC('month'),ReportDate)=//March 1st date given//
THEN RANK(Total Revenue)
END
答案 0 :(得分:1)
我的解决方案是一种解决方法,但似乎有效:
IF DATEPART('month', {MAX([date])}) = DATEPART('month', [date])
and DATEPART('year', {MAX([date])}) = DATEPART('year', [date])
THEN
[revenue]
ELSE
0
END
代码中的{MAX([date])}
部分获取数据中的最大日期,并使用{
和}
字符进行修复,以便该值不受过滤器,日期分区的影响如果您希望排序月份是我们所在的月份,那么您应该使用NOW()
更改该部分
现在我们的值只包含最新月份的总和,我们可以使用度量对视觉进行排序。
您可以将新度量(我称之为度量:'上个月收入')拖到详细信息中,然后右键单击行上的项件,并对其进行排序通过你的新领域。
最后将项目拖到过滤器上,然后转到热门标签,根据“上个月收入”衡量标准的总和过滤您的数据。
下面的屏幕截图显示了Excel数据和最终的Tableau表: