0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ユーザーIDを指定して◯日前のセッション数が見たい

Posted at

#実現したいこと

叶えたかったことは以下の通り。

  • 特定のユーザーIDに絞り、セッション数が見たい
  • 日付は常に「◯日前」と指定したい
    • 日次でクエリを更新してスプレッドシートに反映させる、という流れを作りたかったため
  • 出力する日付は指定したフォーマットにしたい
    • 諸事情により。

作成したクエリ

SELECT
    user_id,
    FORMAT_DATE("%Y/%m/%d", CAST(CONCAT(SUBSTR(event_date, 1, 4), '-', SUBSTR(event_date, 5, 2), '-', SUBSTR(event_date, 7, 2) ) as DATE)) as event_date,
    count(distinct (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_number')) AS ga_session_count
FROM
    `テーブル名`
WHERE
    _TABLE_SUFFIX = FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 2 DAY))
    and user_id in ("10001, 10002, 10003......")
GROUP BY user_id, event_date
ORDER BY user_id;

#自分用 - 何がおこってるかメモ

SELECT
    -- ▼ まずはユーザーIDがほしい
    user_id,
    -- ▼ 日付の型を変換しないとFORMAT_DATEが使えないっぽい。「参照」に記載しているリンクから拝借。
    FORMAT_DATE("%Y/%m/%d", CAST(CONCAT(SUBSTR(event_date, 1, 4), '-', SUBSTR(event_date, 5, 2), '-', SUBSTR(event_date, 7, 2) ) as DATE)) as event_date,
    -- ▼ 「その日のセッションが何回あったか」をカウントするには ga_session_number を数えればよさそう
    count(distinct (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_number')) AS ga_session_count
FROM
    `テーブル名`
WHERE
    -- ▼ 欲しい日付は「◯日前」指定なので、CURRENT_DATE に対して「◯日前」という指定をしてみた。以下は「2日前」を指定。
    _TABLE_SUFFIX = FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 2 DAY))
    -- ▼ 欲しいユーザーの対象をここで絞る
    and user_id in ("10001, 10002, 10003......")
-- ▼ 同じユーザーIDと日付が出るので、重複する行はまとめる
GROUP BY user_id, event_date
ORDER BY user_id;

#参照
BigQueryでstring型の文字列からdate型の日付に変換する方法


BigQueryビギナーなので、間違ってたりもっと良いやり方があったりしたら教えてください🙌

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?