本ページの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 -- 分で並べる
実行結果
次のページ: ユーザー・流入元分析クエリ(8〜13)
