データを可視化するBIツールのひとつにGoogleデータスタジオというものがあります。
(データポータルと名前が変わりましたね!)
グーグルアナリティクスのデータ等を可視化したいな、という時にデータスタジオは無料で操作も簡単で気軽に扱えてよいですよね。
今回は知っておくと表現できる範囲の広がるREGEXP_MATCH関数などについて書いていこうと思います。
特集・カテゴリ別日別トレンドグラフをつくる
とあるウェブサイトには、たくさんの特集コンテンツが存在します。
特集ごとにURLが階層でわけられていて、全体ではなく、それぞれの特集ごとにアクセス数のトレンドを眺めてみたい。
そんなふうに思っているケースを考えてみます。
特集はたくさんあるから、できたら一つのグラフ内で4,5個くらいまとめてトレンドラインを描けるようにしたい。
こんなイメージです↓

これ、簡単に作れそうに見えて、意外とひと手間加えないとできないんですね、、、。
今回はこのグラフを作る手順をレビューしながら、関数等について理解を深めていきたいと思います。
>前提情報
①特集(カテゴリでもなんでもいいのですが、、)は、URLで区別できるようになっています。
特集A:https://sample.com/tokusyuu/a/~~
特集B:https://sample.com/tokusyuu/b/~~
特集C:https://sample.com/tokusyuu/c/~~
こんなルールであると想定します。
②「特集」というコンテンツグループや、カスタムディメンションが用意されていません。
>方法とTips
先に要点を書いておくと
・内訳ディメンションを用いて線を1つのグラフに複数表示させる
・case文、REGEXP_MATCH関数を用いて分類する
・フィルターを用いて、全体の線を除外する
といった内容になります。
①トレンドグラフで1つのグラフに線を複数表示させるには

日別、とか週別月別でトレンドグラフを作る場合は、ディメンションに「日/週/月etc」を持ってこないといけません。
ですが、それだと線が1つ(「前期間と比較」を設定していれば2つ)までしか表示できません。(↑キャプチャみたいなイメージです)
そこで、「日/週/月」等のディメンションを持ってきたときに表示される「内訳ディメンション」エリアに該当のディメンションを持ってくる必要があります。
今回の例だと、「特集」のディメンションを持ってきたいです。
「特集」がGoogle Analyticsの方でコンテンツグループなり、カスタムディメンションなりで用意されていれば、内訳ディメンションに「特集」ディメンションを持ってくることですんなり行きます。
(特集10個あるうち4つだけ表示させたい、とかであればフィルタを設定すればいけます)
しかし今回はその特集ディメンションが存在しない場合、で考えてみます。
さあどうするか。分類されていないのなら、データポータル側で分類をするしかありません。
②計算フィールドで分類を作成する
その際用いるのが「計算フィールド」です。
計算フィールドでは、用意されている様々な関数を使って、条件を設定し、好きなようにデータを分類することができます。
今回使う、便利な関数はcase関数とREGEXP_MATCH関数です。
構文
case
when REGEXP_MATCH( 任意のディメンション , “条件” ) then “作成するディメンションの名前”
end
これで何ができるのかというと、正規表現を用いたコンテンツの分類が行えます。
たとえば
case
when REGEXP_MATCH( ページ , “/tokusyuu/a/.*” ) then “特集A”
end
と関数を組めば、「/tokusyuu/a/」から始まるURLを抽出して、特集Aという名前で表示させることができます。
ページ(URL)が、”/tokusyuu/a/から始まる”という条件に合致していたら、そのページは”特集A”という名前で分類しますよ、という意味がこの構文には秘められています。
ここで、条件の部分を
”/tokusyuu/a/”にすると完全一致になり、https://www.sample.com/tokusyuu/a/というURLのみが抽出されます。
「.*」をつけることで前方一致になり、https://www.sample.com/tokusyuu/a/~という条件になります。
詳しくはヘルプを参照↓
https://support.google.com/datastudio/answer/7064476?hl=ja
データポータルでは、REGEXP_MATCH以外にもたくさんの関数が使えます。
どんなものがあるか、一度こちらで確認しておくと良いです。
https://support.google.com/datastudio/table/6379764?hl=ja
手順としてはまず「新しいフィールドを作成」をクリック

※右下に小さく見えているやつです。

このような画面になるので、項目名に任意のタイトルを書いて、数式の箇所に関数を書き込みます。
(※自分のブログはURLが
「ドメイン/2018/12/3/●●~」
みたいな命名ルールになっているので、キャプチャは記事公開年月の分類になっています。
記事公開年月=特集で、2018年1月=特集A、みたいなふうに頭の中で置き換えて見てもらえると幸いです、、、。)
何も構文エラー等なければ、数式の下のところに、緑色のチェックマークが現れます。
(逆にエラーがあれば赤字でエラー文言が表示されます。)
緑のチェックを確認して、保存しましょう。
③フィルタを用いて全体の線を削除する
データポータル上で分類もできたところで、あとは内訳ディメンションにぶっこむだけ、、、と思いきや、そうは問屋がおろしません。
新しくできたディメンションを内訳ディメンションに入れるとこんなふうになってしまいます。

新しく作った「記事公開年月(特集)」ディメンションの中身は
・2017年9月(特集A) ・2017年10月(特集B) ・2017年11月(特集C) ・2017年12月(特集D)
の4分類しかしていません。
でもグラフ上には合計5つの線があります。
黄色の線、余計です。黄色の線は、分類を全部足し合わせた合計数を表す線です。
最後にこれを消してしまいましょう。

フィルタを追加、を押します。

フィルタ作成画面が表示されるので、
除外条件 > 分類したディメンション > 次に等しい > 空白
と入力します。
ディメンションには、内訳ディメンションに持ってきたやつを入れてください。
値を入れる箇所には、何も入力しないことと、除外条件に設定するところがキモです。

これで、全体の黄色の線が除外され、グラフから消えました。完成です!
おわり
計算フィールドを活用することで、グラフ化の表現の幅が広がります。
特にREGEXP_MATCHは便利です。
ぜひ使ってみて、がんがん可視化しましょう!