BigQuery を使用して、ユーザー セッションを表す何億ものログ エントリを保存および分析することを検討しています。ソース生ログ エントリには、「接続」ログ タイプと「切断」ログ タイプが含まれます。
ログを bigquery に取り込む前にログを処理して、セッション開始 TIMESTAMP と「期間」値を含むセッションごとに 1 つのエントリを作成するか、各ログ エントリを個別に挿入して分析段階でセッション時間を計算するオプションがあります。 . テーブル スキーマが次の形式であるとします。
sessionStartTime: TIMESTAMP,
clientId: STRING,
duration: INTEGER
または (セッションごとに 2 つのログ エントリを保存する場合: 1 つの接続と 1 つの切断):
time: TIMESTAMP,
type: INTEGER, //enum, 0 for connect, 1 for disconnect
clientId: STRING
私たちの問題は、bigquery を使用して同時ユーザーを取得する方法が見つからないことです。理想的には、セッション テーブルをタイムスタンプの「バケット」(たとえば、毎分) で分割するクエリを記述し、クエリを実行して、特定の時間範囲の分。
ログエントリに関して同時実行数を考える簡単な方法は、関数 f(t) = x0 + connect(t) - disconnects(t) を使用していつでも計算されることです。ここで、x0 は初期同時ユーザー数です。 (時刻 t0)、t は「タイムスタンプ」バケット (この例では分単位) です。
誰でもこれを行う方法を推奨できますか?
ありがとう!