嗨,我有一個非常奇怪的問題,我無法找到解決方案。我有下列的表UserViews:用戶每次觀看節目沒有在表中的條目HIVE:發現運行總數不包括重複項
Progdate(String) UserName(String) Dummy data in the table: Progdate UserName 20161119 A 20161119 B 20161119 C 20161119 B 20161120 D 20161120 E 20161120 A 20161121 B 20161121 A 20161121 B 20161121 F 20161121 G
。例如,在11月19日,用戶A觀看該節目一次,因此有一個條目。用戶B觀看了節目兩次,因此在11月19日這個用戶有兩個條目,依此類推。
從Progdate的UserViews組中選擇Progdate,統計(不同的用戶名)UniqueUsersByDate;
上面的查詢會給我所有誰收看的節目
Progdate UniqueUsersByDate 20161119 3 20161120 3 20161121 4
下面查詢的唯一用戶的日期明智計數:
Select Progdate, UniqueUsersByDate, Sum(UniqueUsersByDate) over(Order By Progdate) RunningTotalNewUsers from ( Select Progdate, count(distinct UserName) UniqueUsersByDate from UserViews group by Progdate SORT BY Progdate ) UV;
能不能給我結果爲:
Progdate UniqueUsersByDate RunningTotalNewUsers 20161119 3 3 20161120 3 6 20161121 4 10
但我想要的只是第一次看過程序的所有用戶的運行總數。也就是說,如果用戶A已經觀看了節目的20161119,然後再打開20161120,那麼這個用戶的數量不應在運行總數被重複20161120.因此,這是我從上表中想要的結果:
Progdate UniqueUsersByDate RunningTotalNewUsers 20161119 3 3 20161120 3 5 20161121 4 7
我只在HIVE HQL中尋找解決方案。任何對這個問題的意見都非常感謝。
謝謝。
任何您將日期以字符串形式存儲的原因,並且以非ISO格式存儲? –
數據庫已創建。我沒有任何發言權:(我只需要處理現有的事情,順便說一句,這只是實際表格的縮小版本,實際表格大約有50多列,我剛剛發佈了相關內容讓它變得簡單 – Huzefa