目次
この記事が解決できること
- IF関数とCASE関数の使い方がわかる
- 使用場面がわかる
はじめに
今回はLooker Studioでよく使う、IF関数とCASE関数の使い方と使用場面について紹介します。
「Excelでも関数組んだことない…」
「SQLみたいなことはできない…」
大丈夫です。
確かにExcelの関数に似た使い方をしますが、今回紹介する方法は限定的、かつ汎用的です。それにSQLのように大量、かつ複雑なコードを書く必要もありません。(そういった場合もありますが、頻発はしません)
・Looker Studioをあまり使ったことがない方
・使ったことはあるが関数を組んだことがない方
以上の皆様に向けて、図解を交えながら
「IF関数とCASE関数の使用場面を理解して、簡単な計算フィールドが組める」
という状態を目指して説明します。
是非、この機会にLooker Studio関数を味方につけましょう!
IF関数/CASE関数とは
そもそも関数って何ができるの?
それを踏まえてIF関数とCASE関数って何ができるの?
以上2点を解説します。
関数ってなに?
Looker Studioでいう関数は、Excelやスプレッドシートで使用するような関数と同じだとお考えください。「SUM(集計対象)」をすると合計値が出るように、IF関数やCASE関数では特定の条件に従って処理を分岐させることができます。
IF関数
IF(条件式,結果,その他の結果)
条件式を満たしている場合、結果を返します。条件に該当にしない場合、その他の結果を返します。
例
IF(team=’A’,金額,0)
→もし、チームがAの場合は金額を返し、それ以外は0を返す。
こんなことができる
・柔軟な数値集計ができる
データ集計をする際に不要なデータを除いて計算する場合があります。また、条件によって計算式を使い分けるケースもあります。
「データソースに手を加えることはできないが、新たなディメンションや指標を追加しなければいけない…」 ということはダッシュボードを作成していたら必ずと言っても良いくらいあり得ることです。そんな時に計算フィールド上で関数を用いたディメンション・指標追加はチカラを発揮します。
CASE関数
CASE
WHEN 条件式1 THEN 結果A
WHEN 条件式2 THEN 結果B
...
ELSE その他の結果
END
条件式1の場合は結果A、条件式2の場合、結果Bを、どの条件にも該当しない場合はその他の結果を返します。
例
CASE
WHEN age < 20 THEN ’10代’
WHEN age < 30 THEN ’20代’
WHEN age < 40 THEN ’30代’
WHEN age < 50 THEN ’40代’
ELSE ‘50代以上’
END
→20歳未満の場合は10代、30歳未満の場合は20代、40歳未満の場合は30代、50歳未満の場合は40代。それ以外は50代以上を返す。
こんなことができる
①ディメンション・フラグが作成できる
先ほどの説明にもあったように、接続したデータに対してLooker Studio上で新たにディメンションを追加したり、0また1のようなフラグを当てることができます。
②フィルタに応用できる
関数を使用して作成したディメンションを使用して、フィルタを作成することができます。
IF関数とCASE関数のどちらも条件に従って結果を返すという点は同じですが、CASE関数を使うことで、複数パターンの条件を組むことが出来ます。CASE関数のような判定はIF分でも可能なのですが、「IF(IF(IF(…)))」のように数式が複雑になってしまいます。そのため、適切な関数の選択が必要になります。
関数の使用例
今度は、使用イメージを持っていただくために、実際の画面を見ながら解説をします。
今回は、下記の簡略化したデータ(スプレッドシート)を、Looker Studioに接続して解説します。
name=名前
age=年齢
team=チーム
sales_amount=合計金額
address=住所
①条件に該当する場合のみ集計をしたい(IF関数)
条件に該当する場合のみ、集計をする処理を設定します。
1.指標を追加
2.条件を記述
IF(team='A',sales_amount*1.1,0)
3.結果が出ました
条件(team=A)の場合、sales_amountが1.1倍され、その他は0を返してることがわかります。
②条件に従ってグループを作りたい(CASE関数)
条件を指定して、その条件に該当する場合に処理を行うように設定をします。
それでは、「age(年齢)を年代グループでまとめる」というケースを想定して計算フィールドを作成します。
1.ディメンションを追加
2.条件を記述
CASE
WHEN age < 30 THEN '20代'
WHEN age < 40 THEN '30代'
WHEN age < 50 THEN '40代'
WHEN age > 49 THEN '50代〜'
ELSE NULL
END
3.結果が出ました
条件によって”group”の値が変わっていることがわかります。
CASE文には一点注意点があります。
それは、CASE文は記述した順番にデータが処理されるということです。
先ほどの計算式では、「まず30歳未満のデータを処理、その後40歳未満…」という構成でした。
もしここで「20歳以上の場合は20代、30歳以上の場合は30代…」という式にすると、
「20歳以上」という条件に引っ張られて、全てのデータが20代として処理されることになります。
③他の関数と組み合わせて住所から都道府県を生成する(CASE関数)
最後に応用編です。ここではCASE関数と、今回は紹介していないREGEXP_CONTAINSという関数を使用します。
どんな処理をするかというと
「”address”カラムに格納されている住所から、都道府県のみを判定して結果を返す」
という計算式を組みます。
その際に使用するのがREGEXP_CONTAINSです。
REGEXP_CONTAINSは、条件に該当する文字列が入っているか否かをTRUE、またはFALSEで判定します。
REGEXP_CONTAINS(対象となるカラム名'マッチさせたい文字列')
この関数とCASE関数を組み合わせることで、「REGEXP_CONTAINSでTRUEに該当した場合、特定の結果を出力する」という計算式が作成できます。
条件式
CASE
WHEN REGEXP_CONTAINS(address, '北海道') THEN '北海道'
WHEN REGEXP_CONTAINS(address, '青森県') THEN '青森県'
WHEN REGEXP_CONTAINS(address, '岩手県') THEN '岩手県'
WHEN REGEXP_CONTAINS(address, '宮城県') THEN '宮城県'
WHEN REGEXP_CONTAINS(address, '秋田県') THEN '秋田県'
WHEN REGEXP_CONTAINS(address, '山形県') THEN '山形県'
WHEN REGEXP_CONTAINS(address, '福島県') THEN '福島県'
WHEN REGEXP_CONTAINS(address, '茨城県') THEN '茨城県'
WHEN REGEXP_CONTAINS(address, '栃木県') THEN '栃木県'
WHEN REGEXP_CONTAINS(address, '群馬県') THEN '群馬県'
WHEN REGEXP_CONTAINS(address, '埼玉県') THEN '埼玉県'
WHEN REGEXP_CONTAINS(address, '千葉県') THEN '千葉県'
WHEN REGEXP_CONTAINS(address, '東京都') THEN '東京都'
WHEN REGEXP_CONTAINS(address, '神奈川県') THEN '神奈川県'
WHEN REGEXP_CONTAINS(address, '新潟県') THEN '新潟県'
WHEN REGEXP_CONTAINS(address, '富山県') THEN '富山県'
WHEN REGEXP_CONTAINS(address, '石川県') THEN '石川県'
WHEN REGEXP_CONTAINS(address, '福井県') THEN '福井県'
WHEN REGEXP_CONTAINS(address, '山梨県') THEN '山梨県'
WHEN REGEXP_CONTAINS(address, '長野県') THEN '長野県'
WHEN REGEXP_CONTAINS(address, '岐阜県') THEN '岐阜県'
WHEN REGEXP_CONTAINS(address, '静岡県') THEN '静岡県'
WHEN REGEXP_CONTAINS(address, '愛知県') THEN '愛知県'
WHEN REGEXP_CONTAINS(address, '三重県') THEN '三重県'
WHEN REGEXP_CONTAINS(address, '滋賀県') THEN '滋賀県'
WHEN REGEXP_CONTAINS(address, '京都府') THEN '京都府'
WHEN REGEXP_CONTAINS(address, '大阪府') THEN '大阪府'
WHEN REGEXP_CONTAINS(address, '兵庫県') THEN '兵庫県'
WHEN REGEXP_CONTAINS(address, '奈良県') THEN '奈良県'
WHEN REGEXP_CONTAINS(address, '和歌山県') THEN '和歌山県'
WHEN REGEXP_CONTAINS(address, '鳥取県') THEN '鳥取県'
WHEN REGEXP_CONTAINS(address, '島根県') THEN '島根県'
WHEN REGEXP_CONTAINS(address, '岡山県') THEN '岡山県'
WHEN REGEXP_CONTAINS(address, '広島県') THEN '広島県'
WHEN REGEXP_CONTAINS(address, '山口県') THEN '山口県'
WHEN REGEXP_CONTAINS(address, '徳島県') THEN '徳島県'
WHEN REGEXP_CONTAINS(address, '香川県') THEN '香川県'
WHEN REGEXP_CONTAINS(address, '愛媛県') THEN '愛媛県'
WHEN REGEXP_CONTAINS(address, '高知県') THEN '高知県'
WHEN REGEXP_CONTAINS(address, '福岡県') THEN '福岡県'
WHEN REGEXP_CONTAINS(address, '佐賀県') THEN '佐賀県'
WHEN REGEXP_CONTAINS(address, '長崎県') THEN '長崎県'
WHEN REGEXP_CONTAINS(address, '熊本県') THEN '熊本県'
WHEN REGEXP_CONTAINS(address, '大分県') THEN '大分県'
WHEN REGEXP_CONTAINS(address, '宮崎県') THEN '宮崎県'
WHEN REGEXP_CONTAINS(address, '鹿児島県') THEN '鹿児島県'
WHEN REGEXP_CONTAINS(address, '沖縄県') THEN '沖縄県'
ELSE 'その他'
END
以上の計算式を組むことで、例えば「東京都新宿区」という住所があった場合、
「住所に”東京都”が入っているから、”東京都”を出力する」ということが可能になります。
まとめ
今回は、Looker Studioで頻繁に使用するIF関数とCASE関数の使用方法について紹介しました。それぞれの関数の役割と書き方さえ覚えてしまえば、すぐに使えることがわかったと思います。
もし難しい場面があるとしたら、複数の関数を組み合わせて計算を組んでいく場合です。
「気づいたら計算式がカッコだらけで、自分でも何が書いてあるかわからない…」
というのはレポート作成あるあるです。
そうならないように、まずは基本的な記述方法を理解しましょう。
式が複雑になった時も、中盤で説明したような関数の基本的な構文が理解できていれば、どこが間違っているのかを素早く判断することができるようになります。(こればかりは慣れです)
皆様のLooker Studioのレポート作成に少しでもお力になれていましたら幸いです。
ここまでお読みいただきありがとうございました!