Tableau入門: 関数はまずこれを覚えましょう ~その1 集計・論理関数編~

Truestarたまるです。
今回は初心者がつまづきやすい「関数」についてです。
(第2回は こちら から)

*そもそも「関数」とは?
…色々な機能を持った「トンネル」のようなものと思って下さい。
とあるトンネルに”値”を通すと、色々と処理を施した後に、新しい形で”値”を返してくれる、そんな便利な道具です。

https://onlinehelp.tableau.com/current/pro/desktop/ja-jp/functions.htm
こちらでTableauの全関数を確認できますが、その数なんと 100個以上!!
(ちなみにExcelでは400以上あります)

右も左もわからない!という方に全部覚えて下さい、というのは酷ですし
そもそも使用頻度の高いTableau関数というのもある程度決まっています。
というわけで

Tableau関数は 以下 をまず覚えましょう!(厳選19個)

 1, SUM (サム) …「合計」を出す
 2, AVG  (アベレージ) …「平均」を出す
 3, COUNTD  (カウントディー) …とあるディメンションの「値の種類」を出す
 4, ZN  (ゼットエヌ) …計算結果がNULLになる場合でも「ゼロ」にする
 5, IF (イフ) … 条件によって別の結果を返す
 6, IIF  (アイアイエフ) …条件によって別の結果を返す (2分岐のみ)
 7, CASE  (ケース) …ひとつのフィールドの各値に対して一対一の結果を返す
 8, CONTAINS  (コンテインズ) …特定の文字列を含む/含まない を評価する
 9, LEFT (レフト) … 文字列の左からn文字を返す
10, REPLACE  (リプレイス) …条件にあてはまる文字列を指定した文字列に置換する
11, SPLIT  (スプリット) …ひとつフィールド値を2つ以上のフィールドに分割する
12, FIND  (ファインド) …特定の文字列の出現位置を返す
13, STR  (エスティアール) …データ型を文字列に変換する
14, TODAY (トゥデイ) …”今日”の日付を返す
15, YEAR  (イヤー) …日付から”年”を取得して返す
16, MONTH  (マンス) …日付から”月”を取得して返す
17, DATETRUNC  (デイトトランク)…日付を指定したレベルに丸める
18, DATEDIFF  (デイトディフ) …2つの日付にの差を返す
19, DATEADD  (デイトアド)…特定の日付に任意の年数・日数を足す・引く

用途ごとにざっくり分類し、2回に分けて解説していきたいと思います。
それでは解説スタートです。(必要に応じてエクセルと対比していきます)

集計関数 (4個)


1, SUM (サム) …「合計」を出す
2, AVG  (アベレージ) …「平均」を出す
3, COUNTD  (カウントディー) …とあるディメンションの「値の種類」を出す
4, ZN  (ゼットエヌ) …計算結果がNULLになる場合でも「ゼロ」にする

まずは集計関数から。その名の通り、複数レコードの数値を、合計したり平均を出したり、という事が出来る関数です。
この4つを覚えれば大抵の計算は出来るのではないでしょうか。





1, SUM (サム) …「合計」を出す
 SUM( [sales] ) のように、好きなメジャーを入れると、合計してくれる関数です。
Excelでも全く同じなので、多くの説明はいりませんね。





2, AVG  (アベレージ) …「平均」を出す
 AVG( [sales] ) のように、好きなメジャーを入れると、平均してくれます。
こちらもExcelと大きく変わりませんが、あちらはAVERAGE()ですね。





3, COUNTD  (カウントディー) …とあるディメンションの「値の種類の数」を出す
SUMやAVGに比べると馴染みが薄いかもしれませんが「1か月のログデータの中で一体”何人”のお客さんが来てくれたの?」という時は
    COUNTD( [costumer id] )
とすると、そのデータの中で重複を省いた[costumer id]が何種類あるか =「何人の顧客がいるか」という集計を自動でしてくれます。
(Tableauの右クリックでは メジャー > 個別のカウント というのがこれです)
Excelでは直接対応する関数はなく、ピボットテーブルや、重複フラグなどの加工が必要な計算になります。
Tableauだと関数1行で出来るのは便利ですね


*COUNT”D”のD(SQLでいうDistinctのDです)を外してしまうと、重複も一緒にカウント= 「何件のレコードがあるか」という別の集計になるので注意。





4, ZN  (ゼットエヌ) …計算結果がNULLになる場合でも「ゼロ」にする
    ZN(  SUM( [profit] ) / SUM( [sales] )  )
例えば利益率。
salesの値が0だった場合、割り算はできませんので答えはNULLになります。
ですが表示としては0(ゼロ)として扱いたい、そんな時に使える関数です。
データ準備の際の不毛な「ゼロ変換」の作業も一発で解決できます。





集計関数については以上です。それでは次に行きましょう。

論理関数 (4個)


1, IF (イフ) … 条件によって別の結果を返す
2, IIF  (アイアイエフ) …条件によって別の結果を返す (2分岐のみ) 
3, CASE  (ケース) …ひとつのフィールドの各値に対して一対一の結果を返す
4, CONTAINS  (コンテインズ) …特定の文字列を含む/含まない を評価する


次は論理関数。IF文など条件式で、分岐によって違った計算をしたい、違ったグルーピングにしたい、のような要望を叶えてくれます。





1, IF (イフ) …条件によって別の結果を返す
例えば「半期」というディメンションを作りたい場合は以下のようなIF文になります。
終わりのENDが忘れがちなので注意。

    IF MONTH( [date] )  <= 6                                                          //6月以前
       THEN “上期”                                                                            //↑であれば “上期”
       ELSE   “下期”                                                                              //残ったものは “下期”
    END


*もし3分岐以上になる場合は、ELSEIF を使って分岐を増やせます。





2, IIF 
(アイイフ / アイアイエフ) …条件によって別の結果を返す (2分岐のみ)
IFと同様に「半期」を作りたい場合、IIFでは以下のようになります。
こちらはENDはありません。

  IIF ( MONTH( [date] ) <= 6 ,  “上期” , “下期” )   //6月以下なら”上期”、それ以外は”下期”

エクセルのIF文と同じ構造ですね。
THEN や ELSE なども書く必要がないので、簡潔な式になります。
ですがIFとの最大の違いとして「IIFは2分岐しか対応していない」です。(入れ子にすれば別ですが…)
3分岐以上になるとIF文の方が可読性が高いので、使い分けが大事ですね。





3, CASE  (ケース) …ひとつフィールド値に対して一対一の結果を返す
例えば「四半期」を作りたい場合、CASE文では以下の通りです。
こちらもENDを忘れずに。
*説明のため、あまり効率的でない書き方です。IF文の方がすっきり書けます。

  CASE MONTH( [date] )
  WHEN 1 THEN “Q1”
  WHENTHEN “Q1”
  WHENTHEN “Q1”
  WHENTHEN “Q2”
  WHENTHEN “Q2”
  WHENTHEN “Q2”
  WHENTHEN “Q3”
  WHENTHEN “Q3”
  WHENTHEN “Q3”
  ELSE  “Q4”   END

軸となるフィールドをひとつ決めて、その中の値を上から順に置き換えしていくイメージです。
IF MONTH( [date] ) = 1 THEN ~ と書くのと変わりませんが、条件の対象が1項目の場合は役立つ CASE文 でした。
欠点として条件の「範囲指定が出来ない」ので、その場合は素直にIFやIIFを使いましょう。





4, CONTAINS  
(コンテインズ) …特定の文字列を含む/含まない を評価する
たとえば、たくさんある製品から「パン」(名前に 〇〇パン を含むもの)だけ抽出したいとします。

IF CONTAINS([product_name] , “パン”)
    THEN  “パン製品”
    ELSE   “その他”
END

というようにIF文と組み合わせて、特定の文字列を含むものをグループ分け、というのが可能です。





論理関数については以上です。

つづく


ついてきて頂けたでしょうか。
今回の集計関数・論理関数があればTableauの基本的な計算はまかなえると思います。
次回は文字列関数・日付関数についてお伝えします!お楽しみに。

Tableau入門: 関数はまずこれを覚えましょう ~その2 文字列・日付関数編~