【連載】第4回「独自のディメンション・指標の作成してみよう:後編」(Google データスタジオ講座)

GoogleDataStudio

第4回では、第3回で説明した独自のディメンション・指標の作成方法の後編として、「CASE文」に特化した説明をします。


第2回ではGoogle データスタジオのレポート作成方法について説明しましたが、第3回では独自のディメンション・指標の作成方法について説明します。 Google データスタジ...


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)を返す式を記載しなければいけません。Google データスタジオでは、以下を使用して論理値を返すことができます。


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


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

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


比較演算子

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


例:

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


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

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とは逆の判定をします。


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はそもそも値ではないので、比較演算子で判定することはできません。

著者

Related posts

Top