按最近的非空值聚合

时间:2015-08-31 00:27:52

标签: tableau

我有一个包含以下列的数据集[product_id,country_id,date,number_of_installs,cumulative_installs_last_30_days]

使用标准度量来查找这三个维度(product_id,country_id,date(按月或周聚合))中的sum_max,max或average number_of_installs没有问题。但是,我无法通过cumulative_installs_last_30_days聚合,因为该变量已经是累积的,我需要返回“最新值”,而Tableau没有内置聚合函数的选项。

如何创建一个计算字段,该字段在聚合数据集中启用addicional列,其中包含维度product_id,country_id和日期(按月或周汇总)维度中最新的非空值cumulativeInstalls_last_30_days?

1 个答案:

答案 0 :(得分:2)

这是一个肮脏的解决方案。

在评论中,您注意到您希望30天是动态的,因此要完成此操作,请创建一个参数,使其成为整数,选择Range,并允许任何大于零的整数。我将其称为[Number of Days]

然后创建一个计算字段:

TOTAL(SUM(IIF(DATEDIFF("day", [date], TODAY()) < [Number of Days], [Number of Installs], NULL)))

我知道那个人,所以我会从里到外打破它。

DATEDIFF("day", [date], TODAY())

这只是计算今天和给定行中日期之间的天数差异。

IIF(DATEDIFF("day", [date], TODAY()) < [Number of Days], [Number of Installs], NULL)

检查该差异是否小于您选择的天数。如果是,则此语句等于安装数。如果不是,则为空。因此,如果我们将所有这些值相加,我们只会获得过去[Number of Days]天内的安装次数。

考虑到这一点,我们SUM()行。 TOTAL()只对有助于分区的每个数据库行执行总和。

请注意,如果您的数据库在TODAY()之后有日期,则您需要在该IIF()语句中添加另一个条件,以确保它们不被包含在内。

您还提到您希望能够按月汇总安装次数。这更容易。只需将MONTH([date])投入仪表板,然后按SUM([安装次数]),Tableau将为您敲除它。