2015-08-31 51 views
0

我有以下幾列[PRODUCT_ID,COUNTRY_ID,日期,number_of_installs,cumulative_installs_last_30_days]集料的最近沒有空值

我有采用標準的措施沒有問題找到的總和,最大或平均的數據集這三個維度(product_id,country_id,日期(按月或周彙總))中的number_of_installs。但是,我無法通過cumulative_installs_last_30_days進行聚合,因爲由於該變量已經是累積的,我需要返回「最新值」,並且Tableau沒有內置聚合函數的選項。

如何創建一個計算字段,使維度product_id,country_id和日期(按月或周彙總)中的聚合數據集中的累計數據列具有最新的非空值cumulativeInstalls_last_30_days?

+0

數據中的[number_of_installs]和[cumulative_installs_last_30_days]是否匹配?例如,如果您要從1月1日到1月30日結算[number_of_installs],您是否會在1月30日的[cumulative_installs_last_30_days]中獲得該號碼?如果是這樣,創建一個計算字段爲您執行聚合可能會更容易。 –

+0

@alaprise,他們確實匹配。 「30_days」是一個例子,因爲這個數字可能會改變。另外,我可能需要按月進行彙總,「cumulative_installs _...」可能長於或短於30天。另外,變量需要相對於「今天」。我在Tableau論壇尋找解決方案,但尚未找到解決方案。 – user3307599

回答

2

這是一個骯髒的解決方案。

在評論中,您注意到您希望30天是動態的,因此要創建參數,將其設置爲整數,選擇範圍,並允許任何超過零的整數。我會稱之爲[Number of Days]

然後創建一個計算字段:

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

我知道這是ridonk,所以我會打破它,從內到外。

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

這只是計算今天和給定行中日期之間的差異。

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

檢查該差異是否小於您選擇的天數。如果是,則該語句等於安裝次數。如果不是,則爲空。因此,如果我們將所有這些值相加,我們只會得到最後[Number of Days]天內的安裝次數。記住這一點,我們SUM()行。 TOTAL()只是對每個有助於分區的數據庫行執行該總和。

請注意,如果您的數據庫具有TODAY()後的日期,則需要向該IIF()語句添加另一個條件以確保不包含這些條件。


您還提到您希望能夠按月安排安裝次數。這很容易。只需將MONTH([日期])投入儀表板,然後SUM([安裝次數])和Tableau將爲您敲出。