【正解】D
【0からの解説】
①前提知識:ストリーミング データは終わりがないため、集計(件数のカウントなど)をするには、データを時間で区切る「ウィンドウ」を定義します。Dataflow(Apache Beam)の代表的なウィンドウは次の 3 種類です。
・タンブリング ウィンドウ(Beam では固定ウィンドウ):例えば 30 分ごとに、重ならない固定の区間でデータを区切る。
・ホッピング ウィンドウ(Beam ではスライディング ウィンドウ):ウィンドウの長さ(例: 30 分)と開始間隔=期間(例: 1 分)を指定し、重なり合うウィンドウを一定間隔で作る。移動平均などに使う。
・セッション ウィンドウ:キー(ここではユーザー)ごとに、データの到着が途切れた時間(ギャップ期間)が指定値を超えたところでウィンドウを閉じる。ウィンドウの長さは活動の続き方によって動的に変わる。
②要件の整理:「サイト訪問」は「特定のユーザーについて、活動が続いた後に 30 分間活動がなければ終わる」と定義されています。つまり区切りは固定の時刻ではなく、ユーザーごとの「非アクティブな時間」で決まります。
③正解の理由:セッション ウィンドウをギャップ期間 30 分で設定し、ユーザー ID をキーとしてクリックを集計すれば、ユーザーごとに「30 分以上の空白で区切られた一連の活動」が 1 つのウィンドウになり、訪問ごとのクリック数をそのまま数えられます。訪問の定義そのものをウィンドウで表現できるのはセッション ウィンドウだけです。
【誤りの選択肢】
A:タンブリング ウィンドウは時計上の固定の区間(例: 10:00〜10:30)で区切るため、1 回の訪問が区間の境界をまたぐと 2 つに分割され、逆に 30 分以上空いた別々の訪問が同じ区間にまとめられることもあります。非アクティブ時間による区切りを表現できません。
B:長さ 30 分・期間 1 分のホッピング ウィンドウは 1 分ごとに重なり合うウィンドウを作るため、同じクリックが最大 30 個のウィンドウで重複して数えられます。移動集計には向きますが、訪問単位のクリック数にはなりません。
C:長さ 30 分・期間 30 分のホッピング ウィンドウは、重なりがないので実質的にタンブリング ウィンドウと同じです。A と同様に固定の区間で区切るだけで、ユーザーごとの非アクティブ時間に基づく訪問の区切りにはなりません。
【参考】
ストリーミング パイプライン | Cloud DataflowApache Beam のプログラミング モデル | Cloud Dataflow