A
タイムスタンプ、訪問者、URL を持つデータセット があります。
(2012-07-21T14:00:00.000Z, joe, hxxp:///www.aaa.com)
(2012-07-21T14:01:00.000Z, mary, hxxp://www.bbb.com)
(2012-07-21T14:02:00.000Z, joe, hxxp:///www.aaa.com)
URL ごとのユーザーごとの訪問数を、たとえば 10 分の時間枠で測定したいのですが、分単位で増加するローリング ウィンドウとして測定したいと考えています。出力は次のようになります。
(2012-07-21T14:00 to 2012-07-21T14:10, joe, hxxp://www.aaa.com, 2)
(2012-07-21T14:01 to 2012-07-21T14:11, joe, hxxp://www.aaa.com, 1)
計算を簡単にするために、次のようにタイムスタンプを分に変更します。
(840, joe, hxxp://www.aaa.com) /* 840 = 14:00 hrs x 60 + 00 mins) */
移動時間枠で「A」を反復処理するために、1 日の分のデータセット B を作成します。
(0)
(1)
(2)
.
.
.
.
(1440)
理想的には、次のようなことをしたい:
A = load 'dataset1' AS (ts, visitor, uri)
B = load 'dataset2' as (minute)
foreach B {
C = filter A by ts > minute AND ts < minute + 10;
D = GROUP C BY (visitor, uri);
foreach D GENERATE group, count(C) as mycnt;
}
DUMP B;
「FOREACH」ループ内で「GROUP」が許可されていないことは知っていますが、同じ結果を達成するための回避策はありますか?
ありがとう!