我有一个包含以下列的数据集[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?
答案 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将为您敲除它。