こんにちは私は解決策を見つけることができない非常に独特の問題を抱えています。私は次の列を持つテーブル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はプログラムを1回見て、1つのエントリーがあるとします。ユーザーBはプログラムを2回見ましたので、11月19日にこのユーザーに対して2つのエントリがあります。
を選択します。Progdate、count(distinct UserName)UserViewsグループからUniqueUsersByDateを選択します。問い合わせの上
は私のプログラムのクエリ以下
Progdate UniqueUsersByDate 20161119 3 20161120 3 20161121 4
を見てきたすべてのユニークユーザーの日付ごとのカウント数を与える:
Progdate UniqueUsersByDate RunningTotalNewUsers 20161119 3 3 20161120 3 6 20161121 4 10:
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;
は、その結果、私を与えます
しかし、私が望むのは、プログラムを初めて見たすべてのユーザーの合計です。ユーザーAが20161119で番組を視聴した後に20161120で視聴した場合、このユーザーのカウントは20161120の合計で繰り返されるべきではありません。したがって、上記の表から欲しい結果は、
Progdate UniqueUsersByDate RunningTotalNewUsers 20161119 3 3 20161120 3 5 20161121 4 7です
私はHIVE HQLでのみソリューションを探しています。問題へのあらゆるインプットは非常に高く評価されています。
ありがとうございました。
日付を文字列とそれ以上のものとしてISO以外の形式で保存する理由は何ですか? –
データベースはすでに作成されています。私はそれに何の言葉も持っていません:(私はちょうど既存のもので動作する必要があります。実際には、実際のテーブルの縮小版です。 – Huzefa