Looker Studio(旧Google データポータル)で独自ディメンションを作成 後編

Looker Studio(旧Google データポータル)で独自ディメンションを作成 後編

アタラ BIツール導入コンサルティングサービス

Looker StudioのCASE文とは

Looker Studio(旧Google データポータル)講座の第4回では、第3回で説明した独自のディメンション・指標の作成方法の後編として、「CASE文」に特化した説明をします。

CASE文とは、指定したブール式に基づいて分岐ロジックを実行することができます。イメージとしてEXCELのIF関数のようなものです。こちらはSQLのCASE文と書き方は同じなので、エンジニアの方にとっては馴染み深いですね。

 

CASE文の構文:

CASE
    WHEN 条件式 THEN 結果
    WHEN 条件式 THEN 結果
    WHEN 条件式 THEN 結果
    …
    ELSE 結果
END

 

  • WHEN 条件式
  • 論理値(trueまたはfalse)を返す式を記載します。ディメンションや指標を設定することができます。
    例:「ディメンション:キャンペーン名」 = 30、「指標:CV数」 > 1

  • THEN 結果
  • 条件に合致した時(ブール式の結果がtrueの時)に返す値を記述します。ディメンションや指標、数値、文字列を設定することができます。

  • ELSE 結果
  • 条件に合致しなかった値(falseの値)を返します。こちらも、ディメンションや指標、数値、文字列を設定することができます。

 

WHEN 条件式で使える式

上記でも説明している通り、条件式では論理値(trueまたはfalse)を返す式を記載しなければいけません。Looker Studioでは、以下を使用して論理値を返すことができます。

 

  • 比較演算子、論理演算子
  • 正規表現
  • IS NULL / IS NOT NULL
  • IN / NOT IN

 

比較演算子、論理演算子を使って論理値を返す

Looker Studioでは、以下の比較演算子とAND条件やOR条件を使用した論理演算子で論理値を返す式を作成できます。また、丸かっこを使用して条件のグループ化や優先順位をつけることもできます。

 

比較演算子

  • =
  • !=
  • >
  • >=
  • <
  • <=

 

例:

CASE
    WHEN (REGEXP_MATCH(name1, ‘[a-zA-Z].*’) AND name2 = “Alex”)
      OR name3 IN (“yuki”,”mai”) THEN “true”
    ELSE “false”
END

 

正規表現を使って論理値を返す

Looker StudioのCASE文ではREGEXP_MATCH関数を使用して論理値を返す式を作成することができます。この関数は第一引数に設定したディメンションまたは指標と設定した正規表現が一致した場合は真(true)を返し、一致しない場合は偽(false)を返します。

 

例:

CASE
    WHEN REGEXP_MATCH(name, ‘[a-zA-Z].*’) THEN “true”
    ELSE “false”
END

 

条件式は論理値を返す式でなければなりません。そのため、REGEXP_MATCH関数以外は非ブール値(数値、テキスト、日付、ジオコードなど)を返すため、2018年5月時点では、条件式でREGEXP_MATCH関数以外使用することができません。

 

 

空文字、NULL判定ができる「IS NULL / IS NOT NULL」

IS NULLはディメンションまたは指標が空文字、NULL(ヌル)の場合に真(true)を返します。

 

構文:

フィールド IS NULL
※フィールドとは、評価するディメンションまたは指標を指します。

 

NULLって何?という方にNULLについて簡単に説明すると、「値が何もなく、定義されていない状態」のことを表し、空文字や数字の0、スペースとは異なります。

 

  • NULL:
    「値が何もなく、定義されていない状態」のことを表し、空文字でもスペースでも0でもありません。
  • 空文字:
    値が存在しないが、NULLとは違って値は定義されている状態です。
  • スペース:
    空白ともいいますが、こちらはスペースという値であり、定義されています。
  • 0:
    数値の「0」という値であり、もちろん値が定義されています。

 

それでは、IS NULLを使用した例を確認してみましょう。例えば、1列目が名前、2列目が年齢、3列目が2列目のデータについて説明しているデータがあるとします。

 

name age type
Alex 0 数値
mari ” “ スペース
Harry “” 空文字
marion NULL

 

上記のデータに対して下記のCASE文を実行してみると次のような結果が返ってきます。

 

IS NULLを使用した例:

CASE
    WHEN age IS NULL THEN “true”
    ELSE “false”
END

 
結果:

age 結果
0 false
” “ false
“” true
true

 

ageの値が空文字、NULLの場合はtrue、それ以外の場合はfalseが返っていますね。IS NULLなのになんで空文字もtrueが返ってくるんだ!っと思う方もいるかもしれませんが、そこはそういう仕様なんだと考えるしかありません。

 

データベースでもIS NULLを使用して空文字がtrueで返ってくるものもあれば、falseで返ってくるものもあるように、それぞれで仕様が違うのです。

 

次にNOT NULLについてですが、ディメンションまたは指標が空文字、NULL(ヌル)でない場合に真(true)を返します。つまり、こちらはIS NULLとは逆の判定をします。


【Looker Studioを使った広告レポート作成でこんな課題がある方】

✓広告レポートのLooker Studioダッシュボードを作りたい 
✓Googleアナリティクス 4(GA4)のLooker Studioダッシュボードを作りたい 
✓広告、GA4、その他マーケティングデータをなかなかLooker Studioに集められない 
✓KPIの設定やLooker Studioを使った効果的な可視化の方法について相談したい 
✓社内の知識を醸成するため、Looker Studioのトレーニングをしてほしい 
まずはライトな相談から
支援内容とお問い合わせはこちらをクリック

 

NOT NULLを使用した例:

CASE
    WHEN age NOT NULL THEN “true”
    ELSE “false”
END

 
結果:

age 結果
0 true
” “ true
“” false
false

 

最後に注意点です。NULLは「=」や「!=」などの比較演算子では判定することができず、必ずIS NULLやIS NOT NULL使用してください。なぜなら、通常比較演算子は値と値を比較するためのものですが、NULLはそもそも値ではないので、比較演算子で判定することはできません。

 

1度に複数の値の判定をする場合は「IN / NOT IN」

IN句はディメンションまたは指標の値がカッコ内に列挙した複数の値に含まれるかどうか判定することができます。似ている演算子として「=」がありますが、「=」演算子は1つの値との比較しかできないのに対して、IN句は一度に多数の値と比較することができます。

 

構文:

フィールド IN (値1, 値2, … 値N)
※フィールドとは、評価するディメンションまたは指標を指します。

 

また、IN句で作成した式は「=」演算子とOR条件を組み合わせることによって表現することも可能です。

 
IN句を使用した例:

CASE
    WHEN name IN(“A”,”B”,”C”) THEN “YES”
    ELSE “NO”
END

 
「=」演算子とOR条件を組み合わせて使用した例:

CASE
    WHEN name = “A” OR name = “B” OR name = “C” THEN “YES”
    ELSE “NO”
END

 

※上記の式は「フィールド:name」の値がAまたはBまたはCの場合は「値:YES」を返し、それ以外の場合は「値:NO」を返します。

 

IN句と「=」演算子ではどちらが読みやすいですか?IN句を使用した方が短くてシンプルにまとまっていて読みやすいですよね。「=」演算子を使用したほうが読みやすいという方は、比較する値が10個とかになったらどうでしょうか?

 

多数の値を比較する場合はIN句を利用したほうが可読性も上がり、ミスも少なるかと思います。

 

次にNOT IN句についてですが、ディメンションまたは指標の値がカッコ内に列挙した複数の値に含まれないかどうか判定する演算子です。つまりIN句とは逆の判定をする演算子です。

 

こちらは「!=」演算子とOR条件を組み合わせることで表現することができます。

 
NOT IN演算子を使用した例:

CASE
    WHEN name NOT IN(“A”,”B”,”C”) THEN “true”
    ELSE “false”
END

 

「!=」演算子とOR条件を組み合わせて使用した例:

CASE
    WHEN name != “A” OR name != “B” OR name != “C” THEN “true”
    ELSE “false”
END

 

※上記の式は「フィールド:name」の値がAまたはBまたはCでない場合は「値:YES」を返し、それ以外の場合は「値:NO」を返します。

 

最後に、IN / NOT INを使用する際には下記の2点を注意してください。

フィールドと比較する値は大文字と小文字も区別されます。
フィールドの内容とリストの値は、データ型が共通でなければなりません。

 

フィールド 数式 結果
Alex テキスト フィールド IN (“Alex”, “yuki”) true
Alex テキスト フィールド IN (“alex”, “yuki”) false
20 数値 フィールド IN (“alex”, 20) エラー
Yuki テキスト フィールド NOT IN (“Alex”, “yuki”) true
Yuki テキスト フィールド NOT IN (“alex”, “Yuki”) false
20 数値 フィールド NOT IN (“alex”, 20) エラー

 

THEN 結果には真(true)の値を指定

THEN節では、条件式に記載されている式が真(true)の場合に返す値を指定します。条件式が複数ある場合は、最初に真(true)になった条件の結果が返されます。

 

また、CASE文が返す値はすべて同じタイプでなければなりません。そのため、1つ目のTHEN節の返す値がテキストであれば、そのあとに続くTHEN節、ELSE節の返す値はすべてテキストでなければなりません。

 

ELSE 結果には偽(false)の値を指定

ELSE節では、条件式に記載されている式の条件がどれも満たされなかった場合、ELSE節に設定されている値が返されます。1つのCASE文に指定できるELSE節は1つだけです。

 

CASE文の記述順番

CASE文を作成する前には条件式の順番に気を付けてください。なぜなら、CASE文は条件に合致した結果を返すとその処理が終了してしまうからです。

 

条件式の順番を間違えると予期しない値が返ってくるため、CASE文を作成する際には、下記のフローチャートを頭に入れて条件式の順番に気を付けてください。

 

例:

CASE
    WHEN 条件式① THEN 結果①
    WHEN 条件式② THEN 結果②
    ELSE 結果①
END

 

CASE文のフローチャート:
Looker Studio CASE文 フローチャート

 

CASE文の禁止事項

CASE文では、以下のことは禁止されているのでご注意ください。

 

①:条件式内にディメンションと指標を混在させることはできません。
例:

CASE
    WHEN ディメンション = “Japan” AND 指標 > 100 THEN “true”
    ELSE “false”
END … / エラー!

 

②:条件式内で数学的な計算を行うことはできません。
例:

CASE
    WHEN 指標1 + 指標2 > 10 THEN “true”
    ELSE “false”
END … / エラー!

 

③:条件式内では必ずディメンションまたは指標を使わなければなりません。
例:

CASE
    WHEN 5 > 1 THEN “true”
    ELSE “false”
END … / エラー!

 

④:1つ目のTHEN節の返す値の型とそのあとに続くTHEN節、END節の返す値の型は同一でなければなりません。
例:

CASE
    WHEN name = “yuki” THEN “woman” ← テキスト
    WHEN name = “yuki” THEN “man” ← テキスト
    ELSE 30 ← 数値
END … / エラー!

 

⑤:IN / NOT IN演算子では、フィールドとリストの値の型は共通でなければなりません。
例:

CASE
    WHEN name(テキスト型) IN (“Alex”,20) THEN “true”
    ELSE “false”
END … / エラー!

 
 

以上でCASE文の説明は終わりです。非エンジニアの方にとっては難しかったかもしれないですが、CASE文は非常に便利な機能なので是非活用してみてください。

 

第5回はGoogle スプレッドシートを利用した内容に触れていく予定なので、是非次回も読んで頂ければ幸いです!

 

【広告代理店の次のキャリアを!アタラで働きませんか?】



✓広告運用やWebマーケティングのスキルをもっと伸ばしたい
✓裁量をもってプロジェクトを推進したい。最新のソリューションを提供していきたい
✓チームメンバー間で協力しつつ、学び合いたい
事業拡大中につきWebマーケティングコンサルタント、Webマーケティング運用担当者、事業開発マネージャーなど幅広く募集中
まずはライトな面談から
▶アタラの採用情報は【こちら】をクリック

Related posts

Top