Tableauの関数を全て試してみる〜論理関数編その2〜 #tableau

2017.12.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。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文でグループ分けの条件を細かく指定することで対応することができます。

参考文献

おわりに

今日も、論理関数について見てきました。 Tabelauを使用するにあたり、IF文は必ず使う時が来ます。ただし、使い方はプログラミング言語やExcelとそう変わらないので、自然な形で使用できると思います。

次回はtamaによるTableauの関数を全て試してみる〜論理関数編その3です。お楽しみに。