Tableauの関数を全て試してみる〜論理関数編その2〜 #tableau
はじめに
こんにちは。DI部のtamaです。
当エントリはTableau Functions Advent Calendar 2017の15日目のエントリです。 昨日のエントリはTableauの関数を全て試してみる〜論理関数編その1〜でした。
今回も論理式の関数について見てきます。
- 使用するTableauのバージョンは一貫して10.4.1です。
- 各関数の説明で引用しているのは、Tableauの公式リファレンスからの引用です。
- TableauHelp 関数
目次
検証環境
作業環境
- MacOS High Sierra 10.13.1
- Tableau 10.4.1
使用データ
- (原則)Tableau付属のサンプルスーパーストア
- (場合によって)関数グラフ描画用データ
- -1〜1の範囲で、0.01毎に値が並んでいるデータ
- 上記の値をディメンション「X軸」とし、その上に色々な関数をプロットする。
- 参考:Tableau 関数グラフの描画 | Developers.IO
IF その1
構文
IF test THEN value END / IF test THEN value ELSE else END
概要
論理テストを実行して適切な値を返すためには、IFTHENELSE 関数を使用します。IF THEN ELSE 関数は、一連のテスト条件を評価して、true として評価された最初の条件の値を返します。true の条件がない場合は、ELSE値が返されます。test にはブール値を指定する必要があります。ブール値には、データ ソースのブール値フィールドまたは論理式の結果を指定できます。最後の ELSE は省略可能ですが、指定しなかった場合に true の test 式がないと、Null が返されます。value 式はすべて同じ型でなければなりません。
- 言わずと知れた「IF文」です。Tableauにもあります。
- 「もし〜だったらAという処理をする…」という式が作成できます。
使ってみた
オーダー日が2017年12月1日より後の場合は「最近」とし、それ以外は「過去」と表記するようにします。
IF [オーダー日] > #2017/12/01# THEN '最近' ELSE '過去' END
どういう時に使う?
- 活用場面はあらゆるところにあると思います。
- 上記のように値によって、新しい分類を作成するという場面で使うこともできます。
参考文献
IF その2
構文
IF test1 THEN value1 ELSEIF test2 THEN value2 ELSE else END
概要
再帰的に論理テストを実行するには、このバージョンの IF 関数を使用します。各 IF 式で使用できる ELSEIF test THEN 値の数に制限はありません。しかし、IF関数の複雑度は、各データベースによって制限されている場合があります。IF 関数はネストされた一連の IIF ステートメントとして記述し直すことができますが、式の評価方法は異なります。つまり、IIF ステートメントは TRUE、FALSE、および UNKNOWN を区別するのに対し、IFステートメントは TRUE と not true (FALSE と UNKNOWN の両方を含む) しか区別しません。
- もう少し多段なIF文もできます。
使ってみた
「数量」の値によって、顧客をグループ分けしてみます。
IF [数量] = 0 THEN '0個' ELSEIF [数量] = 1 THEN '1個' ELSEIF [数量] <= 5 THEN '2個〜5個' ELSEIF [数量] <= 10 THEN '6個〜10個' ELSEIF [数量] <= 20 THEN '11個〜20個' ELSE '21個以上' END
製品を購買した数によって、顧客をグループ分けできました。
どういう時に使う?
- 上記のような「グループ分け」のために、IF文を使用することは多いと思います。
- Tableauの標準機能に「ビン」というものがあり、これを使うと任意のメジャーをよしなに分割することができます。ただ、あまり融通が効かないのです。
- 例えば「年齢を年代に分けたい」というとき、分析の状況によっては65歳以上は「高齢者」としてひとまとめにしたい、といった要望が出てくると思います。これが、ビンだと全て同じ値で均等に割ることしかできないため、実現できません。IF文でグループ分けの条件を細かく指定することで対応することができます。
参考文献
- Case Statement Vs If Statement |Tableau Community
- Tableauにおいて、CASE文とIF文のどちらがパフォーマンスが高いか議論されています。
- 単純な式はCASE、複雑な条件式を書きたい時はIF、といったような意見が出ています。
- Breaking BI: Using IF Statements in Tableau
- IF文の活用方法が紹介されています。
おわりに
今日も、論理関数について見てきました。 Tabelauを使用するにあたり、IF文は必ず使う時が来ます。ただし、使い方はプログラミング言語やExcelとそう変わらないので、自然な形で使用できると思います。
次回はtamaによるTableauの関数を全て試してみる〜論理関数編その3です。お楽しみに。