BigQuery基本クエリ|イベントカウント・日付指定・PV取得

本ページのSQLを利用する前に、利用前の確認事項を必ずご確認ください。自社のプロジェクトIDとプロパティIDをfrom句に設定してからクエリを実行してください。

このページでは、BigQueryでGA4データを分析する際の基本的なクエリを紹介します。イベントのカウント、日付範囲の指定、ユーザー別・ページ別の集計など、最初に覚えておきたいクエリをまとめています。

1:特定のイベントをカウント

select
    count(event_name) as sessions -- 後ほど指定するイベント名の列の見出しを「sessions」にする
from
    `ha-ga4.analytics_227084301.events_20220207`    -- データの選択範囲。ここでは2022年2月7日のみを指定
where
    event_name = 'session_start'  -- イベント名がsession_startに合致するものだけを抽出

実行結果

2:日付範囲を指定し、日ごとの数値を出す

select
   date(timestamp_micros(event_timestamp),"Asia/Tokyo") as event_date, -- イベントの発生日付を選択
    count(event_name) as sessions -- 後ほど指定するイベント名の列の見出しを「sessions」にする
from
    `ha-ga4.analytics_227084301.events_*`    -- データの選択範囲。ここでは全期間とし、whereの部分で日付を指定する
where
    event_name = 'session_start'  -- イベント名がsession_startに合致するものだけを抽出
    and _table_suffix between '20220201' and '20220207' -- データの取得期間を指定
group by
    event_date  -- 日付ごとに集計する
order by
    event_date  -- 昇順で並び替える。降順で並び替えたい場合は event_date desc と記載する

実行結果

3:ユーザーごとのセッション数やPVを降順で並べる

select
 user_pseudo_id, -- ユーザーのCookie IDを指定する
    countif(event_name = 'session_start') as number_of_sessions, --セッション数を取得
    countif(event_name = 'page_view') as page_voew --PV数を取得
from
    `ha-ga4.analytics_227084301.events_*`    -- データの選択範囲。ここでは全期間とし、whereの部分で日付を指定する
where
    _table_suffix between '20220201' and '20220207' -- データの取得期間を指定
group by
   user_pseudo_id -- ユーザーのCookie IDごとに集計する
order by
    number_of_sessions desc -- セッション降順で並べる

実行結果

4:日ごとのユーザー数をカウント

select
   date(timestamp_micros(event_timestamp),"Asia/Tokyo") as event_date, -- イベントの発生日付を選択
    count(distinct user_pseudo_id) as users  -- CookieIDのユニークな数をカウントする
from
    `ha-ga4.analytics_227084301.events_*`    -- データの選択範囲。ここでは全期間とし、whereの部分で日付を指定する
where
    _table_suffix between '20220201' and '20220205'  -- 日付の指定
group by
    event_date

実行結果

5:ページごとのPV数を取得

select
    (select value.string_value from unnest(event_params) where key = 'page_title') as page_title, --ページタイトルをイベントパラメータから取得
    (select value.string_value from unnest(event_params) where key = 'page_location') as page_location, --ページURLをイベントパラメータから取得
    count(event_name) as pageviews --イベント数をカウントする。対象イベントはwhere内で指定
from
    `ha-ga4.analytics_227084301.events_*`    -- データの選択範囲。ここでは全期間とし、whereの部分で日付を指定する
where
    _table_suffix between '20220201' and '20220205'  -- 日付の指定
    and  event_name = 'page_view'  -- イベント名を指定
 
group by 
    page_title, -- ページタイトルでグルーピング
    page_location -- ページURLでグルーピング
 
order by 
    pageviews desc -- ページビュー数降順で並び替え

実行結果

6:相対的な日付指定を行う

select
   date(timestamp_micros(event_timestamp),"Asia/Tokyo") as event_date, -- イベントの発生日付を選択
    count(event_name) as pageview -- 後ほど指定するイベント名の列の見出しを「pageview」にする
from
    `ha-ga4.analytics_227084301.events_*`    -- データの選択範囲。ここでは全期間とし、whereの部分で日付を指定する
where
    event_name = 'page_view'  -- イベント名がpage_voewに合致するものだけを抽出
    and _table_suffix between format_date('%Y%m%d', date_sub(current_date(), interval 365 day)) and format_date('%Y%m%d', date_sub(current_date(), interval 1 day)) -- データの取得期間を指定。本日の365日前から本日の1日前までが対象
group by
   event_date -- 日付でグルーピングする
order by
    event_date -- 日付順に並べる

実行結果

7:時間単位のデータを出す

select
   date(timestamp_micros(event_timestamp),"Asia/Tokyo") as event_date, -- イベントの発生日付を選択
    count(event_name) as pageview -- 後ほど指定するイベント名の列の見出しを「pageview」にする
from
    `ha-ga4.analytics_227084301.events_*`    -- データの選択範囲。ここでは全期間とし、whereの部分で日付を指定する
select
    extract(hour from timestamp_micros(event_timestamp)at time zone "Asia/Tokyo") as hour, -- 「時」を抽出する
    count(event_name) as pageview -- 後ほど指定するイベント名の列の見出しを「pageview」にする
from
    `ha-ga4.analytics_227084301.events_*`    -- データの選択範囲。ここでは全期間とし、whereの部分で日付を指定する
where
    event_name = 'page_view'  -- イベント名がpage_voewに合致するものだけを抽出
    and _table_suffix between '20220201' and format_date('%Y%m%d', date_sub(current_date(), interval 1 day)) -- データの取得期間を指定。固定日から本日の1日前までが対象
group by
   hour -- 時でグルーピングする
order by
    hour -- 時間順に並べる

実行結果

「hour」と指定している部分を全て以下に変えることで、違うグルーピングが出来ます

名称 意味
date 日付 yyyy-mm-dd形式
minute 分(1~60の値)
year
quarter 四半期
month
dayofyear 1月1日を「1」とした時に何日目か
day 日のみ(1~31の値)
week 週(1~53の値)
second

複数の列を指定すれば掛け合わせが可能です。

select
    extract(hour from timestamp_micros(event_timestamp)at time zone "Asia/Tokyo") as hour, -- 「時」を抽出する
    extract(minute from timestamp_micros(event_timestamp)at time zone "Asia/Tokyo") as minute, -- 「分」を抽出する
    count(event_name) as pageview -- 後ほど指定するイベント名の列の見出しを「pageview」にする
from
    `ha-ga4.analytics_227084301.events_*`    -- データの選択範囲。ここでは全期間とし、whereの部分で日付を指定する
where
    event_name = 'page_view'  -- イベント名がpage_voewに合致するものだけを抽出
    and _table_suffix between '20220201' and format_date('%Y%m%d', date_sub(current_date(), interval 1 day)) -- データの取得期間を指定。固定日から本日の1日前までが対象
group by
   hour, -- 時でグルーピングする
   minute -- 分でグルーピングする
order by
    hour, -- 時で並べる
    minute -- 分で並べる

実行結果


👉 GA4用のBigQuery クエリ集 目次に戻る

次のページ: ユーザー・流入元分析クエリ(8〜13)

参考になりましたか?

Google Analytics 4のセミナー講座販売中
活用・実装・改善・LookerStudioなど3時間半で学べる動画+資料を買い切り販売中です。一度購入いただくと、随時アップデートも行われます。