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

GoogleDataStudio

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文のフローチャート:
フローチャート


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 スプレッドシートを利用した内容に触れていく予定なので、是非次回も読んで頂ければ幸いです!


第3回、第4回では独自のディメンション・指標の作成方法を説明しましたが、第5回ではGoogle スプレッドシート(以下スプレッドシート)と連携する方法について解説して...

Related posts

Top