1つのフィルタ内で複雑な「AND」「OR」を正しく使いこなせるようになるコツとは?(第85回)
Googleアナリティクスの分析でセグメントを使っていると、自分の知りたいことをピンポイントで抽出してくれるようなセグメントを作りたくなってくる。そのためには、フィルタでAND条件やOR条件を駆使して、細かい条件を指定する必要があるが、場当たり的に指定してもうまく行かないことが多い。
今回は、1つのフィルタで
- 複数条件を満たす場合の設定(AND)
- どれか1つでも条件を満たす場合の設定(OR)
をどのように指定すれば、正しく思いどおりに機能するようになるのかを解説する。
「1つのフィルタ」の定義
最初に「1つのフィルタ」とは何か、つまりフィルタを数える単位を定義づけしておこう。「1つのフィルタ」には、基本的に以下の3つの形式がある。
- チェックボックスで条件を指定する形式
- プルダウンや値を記述するなどで条件を指定する形式
- 最初にユーザーベースのフィルタかセッションベースのフィルタかを選択して、条件を指定していく形式
実際の画面で確認してみよう。「新しいセグメント」を作成するときに出てくる設定画面の1つである「ユーザー属性」分類(図1赤枠部分)の画面を見てみよう。
- レポート画面の上部にある「+セグメント」のエリアをクリックする
- 左上にある「+新しいセグメント」をクリックする
- 「ユーザー属性」(図1赤枠部分)を選択する
図1の青枠部分が「①チェックボックスで条件を指定する形式」、緑枠部分が「②プルダウンや値を記述するなどで条件を指定する形式」の一例だ。
次に、「条件」分類(図2赤枠部分)の画面を見てみよう。図2の青枠部分が「③最初にユーザーベースのフィルタかセッションベースのフィルタかを選択して、条件を指定していく形式」だ。
セグメントの指定形式はこの3種類のどれかに該当する。今回はこの3種類の中で「AND」や「OR」あるいはそれに相当する条件を指定する場合の原則と注意点を解説する。
「①チェックボックスで条件を指定する形式」は「OR条件」
「①チェックボックスで条件を指定する形式」(図1青枠部分)は、次の場所にしか存在しない。
- 「ユーザー属性」分類の画面(図1)の「年齢」と「性別」
- 「テクノロジー」分類の画面(図2緑枠部分)の「モバイル(タブレットを含む)」
チェックボックスは複数の条件を「OR」で指定する機能だ。たとえば「年齢」で「25-34」と「35-44」をチェック(図3赤枠部分)したら、「25-34」歳と「35-44」歳の「OR」条件(25歳-34歳または35歳-34歳)となる。つまり25歳~44歳ということだ。
「年齢」が「25-34」歳かつ「35-44」歳といったAND条件は考えられない。したがってAND条件を指定する手段は用意されていない。
「②プルダウンや値を記述するなどで条件を指定する形式」における「AND」「OR」の使い方
次は「②プルダウンや値を記述するなどで条件を指定する形式」(図1緑枠部分)である。2つ例を挙げよう。1つ目は指定条件が「ディメンション」の場合に見られるパターンだ。
指定条件が「ディメンション」の場合は「OR条件」しか指定できない
図4は「トラフィック」分類の画面だ。たとえば「メディア」というディメンションの値は、1つのセッションに対して「organic」など、値は一意的に決まる。そのため、「メディア」内での「AND条件」での指定(メディアが「organic」かつ「referral」という指定)はあり得ない(該当なしなので意味がない)ので、そのような指定方法は用意されていない。
一方、「メディアが『organic』あるいは『referral』であるセッションを抽出する」(OR条件)という指定は意味があるので、指定できるようになっていないとまずいだろう。この場合は、プルダウンから「正規表現に一致」を選択(図4赤枠部分)し、入力ボックスのところに「(organic|referral)」と記述(図4青枠部分)すれば実現できる。
正規表現の記述方法について詳しくは解説しないが、「|」が「OR」条件を意味するので、このように指定すればよい。
「OR」ボタンのような機能はないが、それに該当する条件指定が可能だということだ。プルダウン(図4赤枠部分)からはその他にも、「含む」「先頭が一致」「含まない」など多数のマッチタイプが用意されているので、ここからもっとも指定方法が簡単なものを選択すればよいだろう。
指定条件が「指標」の場合は、「AND条件」も「OR条件」も指定できない
2つ目は指定条件が「指標」の場合に見られるパターンだ。
「eコマース」分類の画面(図5)を見てみよう。たとえば「『収益』(購入金額のこと)が2万円以上で3万円未満」などという条件指定の場合は、「2万円以上」かつ「3万円未満」というAND条件を指定できればよいのだが、そのような指定パターンは用意されていない。
残念ながら、たとえば「セッションごと」「≥」「20000」と指定(図5赤枠部分)して、「2万円以上」という1つの条件指定しかできない。もちろん「『2万円以下』あるいは『3万円以上』」といったOR条件指定もできない。
こういうケースでは、次に紹介する、汎用性の高い「条件」分類で指定しよう。
「③-1 最初に『セッションベース』のフィルタを選択して、条件を指定していく形式」における「AND」「OR」の使い方
「③最初にユーザーベースのフィルタかセッションベースのフィルタかを選択して、条件を指定していく形式」は、「セッションベース」と「ユーザーベース」に分けて解説しよう。まずは簡単な「セッションベース」のセグメントからだ。
「セッションベース」のセグメントとは、フィルタ条件を「セッション」「含める/除外する」とした場合(図6赤枠部分)に該当する。
図4で指定した条件である「メディアが『organic』あるいは『referral』であるセッション」を抽出するという指定を、「トラフィック」分類の画面(図4)ではなく、「条件」分類の画面(図6)で実現しようとすれば、図6のように「OR」条件(図6青枠部分)を選択して、2つのメディアの条件を記述すればよい(図6緑枠部分)。
図7は、「メディアが『organic』のセッション、かつ、セッション滞在時間が60秒を超えるセッションを抽出するセグメント」(図7-1)と「メディアが『organic』のセッション、あるいは、セッション滞在時間が60秒を超えるセッションを抽出するセグメント」(図7-2)の設定例だ。
異なる項目(図7では「メディア」と「セッション時間」)の条件指定では、「AND」と「OR」の2通りがあるので、条件指定を続けていくときに、「AND」(図7-1赤枠部分)か「OR」(図7-2青枠部分)のどちらかを選択して条件を列挙していけばよい。
1つのフィルタで「AND」と「OR」を2つ以上利用して複合的に組み合わせることはできるのか?
それでは「AND」と「OR」を2つ以上利用して複合的に組み合わせることはできるのだろうか。
たとえば、
- 「AND」を「×」
- 「OR」を「+」
とした計算式で表現すると、
- (条件A+条件B)×条件C
- (条件A+条件B)×(条件C+条件D)
- 条件A+(条件B×条件C)
のような条件指定だ。
①と②はできるようだ。「①(条件A+条件B)×条件C」の設定例が図8だ。
「②(条件A+条件B)×(条件C+条件D)」の設定例が図9だ。
しかしながら、「③条件A+(条件B×条件C)」の設定はできないと考えられる。
掛け算の役割の「AND」(図8赤枠部分、図9赤枠部分)の前後が優先されて掛け合わされると期待したのだが、「OR」の方(図8青枠部分、図9青枠部分)が先にまとめられるようだ。
「③-2 最初に『ユーザーベース』のフィルタを選択して、条件を指定していく形式」における「AND」「OR」の使い方
最後は「ユーザーベース」のセグメントにおける「AND」あるいは「OR」利用について解説しよう。
「ユーザーベース」のセグメントの場合は、セグメント条件の単位が「ユーザー」「セッション」「ヒット」と3つになり、組み合わせなども複雑になる。筆者もすべて網羅的に実証したわけではないが、おおよそ基本は「セッションベース」のセグメントと同様と考えてよいと考えられる。
「ヒット」単位で「AND」指定するセグメントには注意が必要
ただ「セッションベース」のセグメントとは異なる点もある。セグメント条件にヒット単位のディメンションや指標を利用する場合、思わぬ動作をすることがあるので、注意が必要だ。たとえば、「トップページとsample.htmlを閲覧したことのあるユーザーを抽出するセグメント」を記述したい場合を例に説明しよう。
動作の違いを比較したいので、まずは、「ユーザー」ではなく「セッション」を抽出するセグメントを作ってみよう。「2つのページを閲覧したセッションを抽出するセグメント」は図10のように設定する。フィルタで「セッション」「含める」(図10赤枠部分)として、2つのページを選択(図10青枠部分)して「AND」でつなげれば(図10緑枠部分)よい。
このセグメントのフィルタを「セッション」から「ユーザー」に変えれば(図11赤枠部分)、2つのページを閲覧したユーザーを抽出するセグメントになると思うだろう。
しかしこれでは何も抽出されない。「ユーザーベース」のセグメントで、「ヒット」単位のディメンション(今回のケースは「ページ」)を条件に選択した場合は、その1つのヒットに対して2つの条件とも合致する必要があるのだ。
つまり図11の例で言えば、「トップページを見ながら同時にsample.htmlを見た」という条件になり、ひと目で無効であることがわかるだろう。1ヒットには1ページビュー、あるいは1イベント、あるいは1トランザクションなどが紐付いている。1ヒットに2つ以上のページが同時に紐付くような条件指定をしても、結果はゼロになるのだ。
ではどのように指定するかと言えば、図12のように指定することになる。
どこが違うかと言えば、「AND」ボタン(図12赤枠部分)ではなく、左下にある「+フィルタを追加」ボタン(図12青枠部分)で条件指定を重ねることで実現できる(複数のフィルタを利用する方法については次回まとめて解説する予定だ)。
この設定は厳密に言えば、トップページとsample.htmlの2つのページを閲覧したユーザーのすべてのセッションを抽出するセグメントだ(トップページを閲覧したセッションとsample.htmlを閲覧したセッションは別々でもいい)。
気をつけてほしい。「1つのセッション内でトップページとsample.htmlの2つのページを閲覧したしたことのあるユーザー」のすべてのセッションを抽出するセグメントではない。ヒット条件によってセッションを抽出し、それをさらにユーザーベースの条件にするといった2段階抽出はできないのだ。
同じヒットタイプ同士(イベントとイベント)の「AND」は無効
ヒットの種類がイベント同士である場合も同じだ。「ユーザーベース」のセグメントの場合(図13赤枠部分)、1つのヒットに2つ以上のイベントが同時に紐付くような条件指定(図13青枠部分)をしてもゼロになる(図13緑枠部分)。
異なるヒットタイプ同士の「AND」は有効
一方、図14のようにユーザーフィルタ(図14赤枠部分)であっても、異なるヒットタイプ(図14はイベントとページビュー)を「AND」で結合した条件(図14青枠部分)ならゼロにはならず(図14緑枠部分)、問題ないようだ。
なぜこの場合は問題ないのだろうか。図15のセグメントのデータモデルの解説図を見てほしい。「12/10 Bi-weekly Hangout on Air: Segmenting Like A Boss」というウェビナーでの解説動画の中のスクリーンショットだ。
「イベント」や「トランザクション」のヒットタイプも「ページ」には紐付いている(図15赤枠部分)ようなので、「イベント」と「ページ」(図15青枠部分)、「トランザクション」と「ページ」(図15緑枠部分)という異なるヒットタイプの組み合わせによる条件指定は問題なく動作するということなのだろう。
各ヒットがどのディメンションや指標と紐付いているのかは正確にはわからないが、少なくとも「ページ」や「参照元」「収益」といったデータともこのように紐付いているのだということが図15からはうかがえる。
ヒット単位で条件を指定する場合の注意点を総括すると、AND条件は下記のような動作をするということだ。
- 「ユーザー」フィルタでAND条件を使用すると、1つのヒットがすべての条件に当てはまる場合のみ抽出される
- 「セッション」フィルタでAND条件を使用すると、同じセッション内のヒットのあらゆる組み合わせがすべての条件に当てはまる場合のみ抽出される
Googleアナリティクス公式ヘルプの「フィルタ評価の仕組み」にもそう記述されているので、併せて確認してみてほしい。
ソーシャルもやってます!