データポータルの CASE 文で Google アナリティクスの URL 系ディメンションを分類したレポート

こんにちは。takanoです。

先日、データポータルのオンライン武道会を開催しました。

最初は思いつきだったのですが、参加者にも恵まれ、とても楽しくて勉強になりました。

もともと最近ハマってるレポートを誰かに見せたかったというのもあり、自分のプレゼン時間の大半をレポートの作り方の説明で消費してしまった点は反省していますが、まだ話し足りない部分があるので、この場でレポートの特徴と作り方を紹介させてください。

レポートの特徴

まずはレポートの実物を見ていただくのが早いと思います。
「目標完了セッション」レポート

このレポートの最大の特徴は「目標の完了数」と「目標の前のステップ 1~3」 を束ねて確認できることです。

目標の完了数と目標の前のステップ1~3を束ねた表

後述する CASE 文を使って URL 別のデータを自分で作ったコンテンツ種別にまとめることで、Google アナリティクスに設定した目標の完了までに、どんなコンテンツを閲覧したかを 3 ステップ前まで確認できます。

「目標の前のステップ」ごとに表を分けると、各ステップにおいてどのコンテンツが一番貢献しているのかを、ざっくり把握することも可能です。

「目標の前のステップ」ごとに「目標の完了数」を割り当てた表

また、同様に他の URL 別のディメンションを束ねることで、Google アナリティクスのコンテンツ グループでは対応していない「2 ページ目」や「離脱ページ」もコンテンツ単位での確認が可能になります。

利用したデータ

今回利用したのは Google アナリティクスの デモアカウント で、Google Merchandise Store という EC サイトのデータです。

このアカウントの「1 Master View」というビューには目標が複数設定されていたので、4 つ目の「Entered Checkout」の完了数をレポートに利用しています。

「買い物かご」から支払いの開始に進んだページを「到達ページ」として設定しているようなので、今回のレポート向けの目標です。

データポータルの表に「指標」として読み込む際には、現在のところ「目標 4 の完了数」ではなく英語の「Goal 4 Completions」と表記されている点に注意してください。
(個別の目標関連の指標が英語表記になってます)

また、「Entered Checkout」を完了したセッションでのコンテンツ利用状況も確認したかったので、セグメントも適用しています。

目標 4 の完了数が 1 以上のセッションを指定したセグメント

作成した 1 つずつの表やグラフではデータソースやセグメントを指定せず、レポートやページ単位で指定すると一括で適用されるので便利です。
(レポート編集時に何も無いところで右クリックすると「レポート設定」や「現在のページの設定」のメニューが出てきます)

最近ハマってるのは、「目標」を好きに定義してレポートをコピーし、前述の「目標の完了数」とセグメントを変更するという使い方です。
5~10 分もあれば別な目標のレポートが作れるので、サイト内でのユーザーの動向を大まかに知っていきたい場合は「とにかく目標を設定して使うビュー」を作っておくと重宝すると思います。

フィルタとグループ化

個人的に、データポータルでお気に入りの機能は グラフ インタラクション フィルタ です。

グラフ自体をクリックすると他のグラフにフィルタを適用してくれるので、見た目にも直感的に分かりやすく感じます。

グラフ インタラクション フィルタを適用した結果


表やグラフの作成時に「データ」タブの下部にある「Interactions」の項目で「フィルタを適用」にチェックを入れると使えるようになります。

表にグラフ インタラクション フィルタを設定する方法


ただ、そのままだとページ内全ての表やグラフにフィルタが適用されてしまうので、あらかじめフィルタに使うものと対象になるものを「グループ化」しておくのがオススメです。
(ctrl か shiftキーを押しながらクリックで複数選択し、右クリックでメニュー表示)

表と表をグループ化する方法

グループ化することで、フィルタの適用範囲がそのグループ内だけになるのはグラフ インタラクション フィルタに限らず、期間指定などのコントロールも同様なので、意外と使える豆知識です。

CASE 文の作り方

さて、ついにこのレポート最大のポイントである CASE 文 の作り方です。
以前、サーチコンソールのデータを扱う例でも紹介した、大好きな関数です。

takano.hatenablog.jp


この CASE 文というものは、データポータルの 計算フィールド で利用できます。
(編集モードで、リソース→該当データソースの編集→フィールドを追加と辿ると追加できます)

「○○が△△だったら□□にする」という使い方がメインですが、「○○が△△だったら○○をそのまま返す」といった書き方や「どれにも該当しなかったら□□にする」という使い方も可能です。

大事なことなので箇条書きにしておきますね。

  • 「○○が△△だったら□□にする」
  • 「○○が△△だったら○○をそのまま返す」
  • 「どれにも該当しなかったら□□にする」

例えば、今回のレポートでは以下のような CASE 文を記述しています。

CASE
  WHEN REGEXP_MATCH(離脱ページ,'^/asearch\\.html.*') THEN 'サイト内検索'
  WHEN REGEXP_MATCH(離脱ページ,'^/basket\\.html.*') THEN '買い物かご'
  WHEN REGEXP_MATCH(離脱ページ,'^/yourinfo\\.html.*') THEN '配送・支払い'
  WHEN REGEXP_MATCH(離脱ページ,'^/home($|\\?.*)') THEN 'ホーム'
  WHEN REGEXP_MATCH(離脱ページ,'^/myaccount\\.html.*') THEN '会員ページ'
  WHEN REGEXP_MATCH(離脱ページ,'^/ordercompleted\\.html.*') THEN '注文完了'
  WHEN REGEXP_MATCH(離脱ページ,'^/register\\.html.*') THEN '会員登録処理'
  WHEN REGEXP_MATCH(離脱ページ,'^/registersuccess\\.html.*') THEN '会員登録完了'
  WHEN REGEXP_MATCH(離脱ページ,'^/signin\\.html.*') THEN 'ログイン・登録'
  WHEN REGEXP_MATCH(離脱ページ,'^/store-policies($|[\\?/].*)') THEN 'ヘルプ'
  WHEN REGEXP_MATCH(離脱ページ,'^/store\\.html.*') THEN '一覧(並び替え後)'
  WHEN REGEXP_MATCH(離脱ページ,'^/wishlist\\.html.*') THEN '欲しいものリスト'
  WHEN REGEXP_MATCH(離脱ページ,'^/google\\+redesign/apparel/?.*') THEN 'カテゴリ(アパレル)'
  WHEN REGEXP_MATCH(離脱ページ,'^/google\\+redesign/lifestyle/?.*') THEN 'カテゴリ(雑貨)'
  WHEN REGEXP_MATCH(離脱ページ,'^/google\\+redesign/shop\\+by\\+brand/?.*') THEN 'カテゴリ(ブランド別)'
  WHEN REGEXP_MATCH(離脱ページ,'^/google\\+redesign/new/?.*') THEN 'カテゴリ(新製品)'
  WHEN REGEXP_MATCH(離脱ページ,'^/google\\+redesign/Clearance/?.*') THEN 'カテゴリ(セール)'
  WHEN REGEXP_MATCH(離脱ページ,'^/google\\+redesign/?.*') THEN 'カテゴリ(その他)'
  WHEN 離脱ページ = '(entrance)' OR 離脱ページ = '(not set)' OR 離脱ページ = '(other)' THEN 離脱ページ
  ELSE 'その他'
END


Google アナリティクスの検索ボックスで正規表現を入力するときは「部分一致」でもマッチして「エスケープは \」ですが、データポータルの REGEXP_MATCH で使うときには「完全一致」でないとマッチせず「エスケープは \\」という点に注意が必要です。

具体的には、以下のような違いです。

  • Google アナリティクス → 「/example\.html」
  • データポータル → 「^/example\\.html.*」

また、そもそも正規表現やエスケープが分からないという方には、以前書いたこちらの記事がオススメです。

takano.hatenablog.jp


既に Google アナリティクスに コンテンツ グループ を設定済みであれば、その条件を流用しても良いと思います。
また、CASE 文を書くのに抵抗がある場合はエンジニアに手伝ってもらうと、交流もできて一石二鳥です。

今回の場合の作成手順

話を今回のレポートに戻すと、CASE 文の作成にあたり、まずは Google アナリティクスで「ページ」のレポートをエクスポートして精査しました。
(ページ数が多い場合は「ディレクトリ」のほうが良い場合もあると思います)

CASE 文では上から順に条件に該当するかどうか判定するので、途中まで同じ URL の場合は、より細かい条件(長い URL)のほうを上に書きます。
また、あまり使われていないページであれば「その他」に振り分けたりします。

こうした内容を検討しながら、ざっくりと URL をコンテンツ単位に分けていきます。

ページビューに応じて URL を分類


そうして出来上がった URL のリストを CASE 文で分類していくわけですが、正規表現や分岐に間違いが無いかは元のディメンション(URL)と並べて表示することで確認可能です。
こうした表は、確認用だけでなく深掘り用にレポートに組み込んでも良いと思います。

CASE 文で分類した URL の詳細


1 つのディメンションで CASE 文が完成したら、他に必要なディメンションでも計算フィールドを作っていきます。
例えば「ランディング ページ」を「2 ページ目」に置換すれば、一瞬で別な計算フィールドの出来上がりです。

今回のレポートでは元のディメンションの「ページ」や「ステップ」を「コンテンツ」に書き換えただけの命名で、以下のような計算フィールド(fx 表記があるもの)を用意しました。

URL をコンテンツ単位にまとめた計算フィールド

まとめ

以下の点が今回のレポートの便利なところです。

  • URL 別のディメンションを CASE 文で束ねてコンテンツ単位で確認できる
  • 目標を完了したセッションの行動フローをざっくり把握できる
  • 各フローで表をグループ化し、フィルタを適用できる

良かったら、もう一度 レポートの URL を貼っておくので、改めて見てみてください。

今回は以下のディメンションを利用しましたが、「目標の完了の場所」まで含めれば最大で 6 遷移分ぐらいカバーしてユーザーの動きを確認できます。

  • ランディング ページ
  • 2 ページ目
  • 前のページ遷移
  • ページ
  • 目標の前のステップ - 1~3

特に目標やセグメントを指定せずサイトの全体像の確認に使っても良いですし、セグメントごとにレポートを分けたり、目標ごとに表やページを変えたりしても興味深い発見があるかと思います。

また、この機会にデータポータルの関数についてもっと知りたい方は、先日の武道会で圧倒的なスキルから「フリーザ様」の異名をゲットした 郡山さん の記事で詳しく解説されています。

googleanalytics-laboratory.com


ぜひ皆さんもデータポータルを使ってみて、次の武道会に参戦してくださいね。
それでは、またいつか!



[追記:1]
バカに毛が生えたブログ でお馴染みの 篠原さん が、また違う切り口のレポートを公開してくれました。
画像の使い方が秀逸なので、併せて参考にしてみてください。

https://www.baka-ke.com/2020/10/14/nigiyaka-data-portal/www.baka-ke.com


[追記:2]
現場のためのGoogleアナリティクス Webサイトを分析・改善し倒すための技術』の著者 永井さん が、企画に乗った記事を公開してくれました。
データポータルで先に欲しいデータを抽出する手法が紹介されてるので、こちらも参考にしてみてください。

note.com


[追記:3]

「フリーザ様」こと 郡山さん が、その異名をゲットしたレポートを公開してくれました!
これを見せられたら対戦相手が震えあがるのは当然というぐらい作りこまれたレポートなので、ぜひ見てみてください。

note.com


[追記:4]

第 1 回 データポータル天下一オンライン武道会で優勝を飾った 石井さん が、自身のツイートがきっかけで始まったアドベント カレンダー に優勝レポートの記事を投下してくれました!
今後のアクセス解析への考察など、さすがの貫禄がある良記事なので読んでみてください。

home-bird.jp