BI
2024/04/12
彩未翔 増本

【Looker Studio】計算フィールドでのIF構文とCASE構文の使い分け

このブログでは、IF構文とCASE構文の基本、それらの違い、そして各構文が最も輝くシナリオについて、分かりやすく解説していきます。

はじめに

計算フィールドで使用されるIF構文とCASE構文は、データをカスタマイズし、分析を深める上で非常に強力な武器となります。しかし、これら二つの構文の違いや、それぞれをどのような場面で使い分けるべきかについては、多くのユーザーが疑問を持っています。

このブログでは、IF構文とCASE構文の基本、それらの違い、そして各構文が最も輝くシナリオについて、分かりやすく解説していきます。

IF構文 vs. CASE構文: 一体何が違う?

まず基本から見ていきましょう。


IF構文は、特定の条件が真(TRUE)であるかどうかをテストし、その結果に基づいて値を返します。



IF(条件式, 真だった時の結果, 偽だった時の結果)


例えば、飲酒可能か否かの条件分岐をしたい場合



IF(age>=20, '飲酒可能', '飲酒不可')

となります。



一方、CASE構文は、複数の条件を設定し、それぞれに対応する値を返すことができます。



CASE
WHEN 条件式1 THEN 結果1
WHEN 条件式2 THEN 結果2
...
ELSE その他の結果
END


例えば、成人しているか、さらに飲酒可能であるか条件分岐したい場合



CASE
WHEN 18<=age THEN '成人している'
WHEN 20<=age THEN '飲酒可能'
ELSE '成人していない'
END


つまり、IF構文は単一の「もし〜ならば」のシナリオに最適で、CASE構文は複数の可能性を検討し、それぞれに異なる結果を割り当てたい場合に役立ちます。

IF構文の魅力

IF構文はそのシンプルさにあります。たとえば、特定の数値がある閾値を超えたら「高い」、そうでなければ「低い」と分類したい場合、IF構文はこのようなシナリオで非常に役立ちます。また、二つの条件のみで十分な場合には、IF構文の方が読みやすく、理解しやすいかもしれません。

CASE構文の力

一方で、CASE構文はより複雑な条件分岐に適しています。

今回私がCASE分を使いやすかったのは、条件に対応した値のみ計算した結果を返す場合です。


例えば、全期間のデータが入った売上ディメンションから今日の1ヶ月前の月の売り上げだけを抽出したい場合、新たな計算フィールドには以下の計算式になります。



CASE
WHEN YEAR(TODAY()) = YEAR(日次) AND MONTH(TODAY()) - 1 = MONTH(日次) THEN 売上
--2~12月の場合同じ年の1ヶ月前の月の売上データのみを返す
WHEN MONTH(TODAY()) = 1 AND MONTH(日次) = 12 AND YEAR(TODAY()) - 1 = YEAR(日次) THEN 売上
--1月の場合、1年前の年の12月の売上データを返す
ELSE NULL
--それ以外のデータはすべてnullで返す
END

例えば現在が2023年1月だった場合、このような結果になります。


0で返さずにnullで返すと、平均で計算する場合2022年12月の件数のみで計算されるのでnullがおすすめです。(場合によって変えてください)



終わりに

IF文とCASE文はほとんど役割は同じですが、条件式が複雑な場合やIF文まみれで計算式が複雑になってしまっている場合はCASE文を利用したり、単純な一つの条件式の場合はIF文で簡潔に書いたり…適切な構文を選択し、効果的に使用してみてください。

New call-to-action