BigQuery で、URL parameters の key と value の組み合わせの数を算出
BigQuery で、URL parameters の key と value の組み合わせの数を算出
BigQuery
で、URL
のパラメータを分析する機会があった。
やりたいこと
下記を算出したい。
URL parameters
のkey
がどれくらいあるかURL parameters
のkey
とvalue
の組み合わせがどれくらいあるか
実行環境
BigQuery
算出
URL parameters の key がどれくらいあるか
算出したいカラム
- param_key:
URL parameters
のkey
- record_count:
key
の数
算出の流れ
regexp_extract_all
にURL
を渡して、URL parameters
のkey
を取得- 1 を
unnest
で 1 行ずつ展開 - 2 を
group by
してkey
の数を算出
クエリ
-- 仮のデータ
with hoge_referers as (
select
'https://hene.dev/about?utm_source=x&utm_medium=y&utm_campaign=z' as referer
union all
select
'https://hene.dev/about?utm_source=xx&utm_medium=yy' as referer
union all
select
'https://hene.dev/about?utm_source=x' as referer
)
-- URL parameters を展開
-- * 1 つの referer に 複数の URL parameters が含まれていた場合は、全て展開される
-- * regexp_extract_all は、ARRAY データ型(配列) を返す
, hoge_params as (
select
-- URL parameters の key を取得
regexp_extract_all(referer, r'(?:\?|&)(?:([^=]+)=(?:[^&]*))') as param_keys
from hoge_referers
)
-- unnest で、ARRAY データ型(配列) の各要素を 1 行ずつ展開
select
param_key
, count(*) as record_count
from hoge_params
, unnest(param_keys) as param_key
group by
param_key
order by
record_count desc
算出結果
URL parameters の key と value の組み合わせがどれくらいあるか
算出したいカラム
- param_key:
URL parameters
のkey
- param_value:
URL parameters
のvalue
- record_count:
key
とvalue
の組み合わせの数
算出の流れ
regexp_extract_all
にURL
を渡して、URL parameters
をARRAY データ型(配列)
で取得- 1 を
unnest
で 1 行ずつ展開 - 2 から
URL parameters
のkey
とvalue
を取得 - 3 を
group by
してkey
とvalue
の組み合わせの数を算出
クエリ
-- 仮のデータ
with hoge_referers as (
select
'https://hene.dev/about?utm_source=x&utm_medium=y&utm_campaign=z' as referer
union all
select
'https://hene.dev/about?utm_source=xx&utm_medium=yy' as referer
union all
select
'https://hene.dev/about?utm_source=x' as referer
)
-- URL parameters を展開
-- * 1 つの referer に 複数の URL parameters が含まれていた場合は、全て展開される
-- * regexp_extract_all は、ARRAY データ型(配列) を返す
, hoge_params as (
select
-- URL parameters の params を取得
regexp_extract_all(referer, r'(?:\?|&)((?:[^=]+)=(?:[^&]*))') as params
from hoge_referers
)
-- unnest で、ARRAY データ型(配列) の各要素を 1 行ずつ展開
, unnested as (
select
-- URL parameters の key を取得
regexp_extract(param, r'(^.*)=.*$') as param_key
-- URL parameters の value を取得
, regexp_extract(param, r'^.*=(.*$)') as param_value
from hoge_params
, unnest(params) as param
)
select
param_key
, param_value
, count(*) as record_count
from unnested
group by
param_key
, param_value
order by
param_key desc
, record_count desc
算出結果
まとめ
URL parameters
の key
と value
の組み合わせがどれくらいあるのかを確認することができた。