Tableauの関数を全て試してみる〜表計算関数編その1〜 #tableau
はじめに
こんにちは。DI部のtama@奈良県です。
当エントリはTableau Functions Advent Calendar 2017の22日目のエントリです。 昨日のエントリはTableauの関数を全て試してみる〜ユーザー関数編〜でした。
当アドベントカレンダーも、ついに最終セクションを迎えました。最後は表計算関数について見ていきたいと思います。
- 使用する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
表計算関数とは
表計算関数は、表計算をカスタマイズするために使用します。表計算とは、表全体の値に適用される計算であり、表構造そのものに依存していることが多々あります。表計算の作成とカスタマイズの詳細については、「表計算のカスタマイズ」を参照してください。
帳票のようなクロス集計表を作成した際、部分的に計算を行う時などで使用できる関数です。
FIRST( )
概要
現在の行からパーティション内の最初の行までの行数を返します。たとえば、次のビューには四半期ごとの売上高が示されています。FIRST() が日付パーティション内で計算される場合、2 番目の行からの最初の行のオフセットは -1 です。
- 最初の行→現在の行まで何行離れているかを返す関数です。
- その離れている行数のことをオフセットと呼称します。
使ってみた
「表の横」に沿って、行数がカウントされています。
FIRST関数に限った話ではありませんが、表計算関数は「計算の方向」を指定できます。 計算フィールドの右クリックメニューで選択することができます。
「表(下)」を選択すると、カウントが下に向かって計算されるように変わりました。
どういう時に使う?
- この関数で行番号を振っておくことによって、他の表計算を行う際に、これらの行番号をフィルタ等に使用して、柔軟な計算ができるようになります。
参考文献
- パーティションの最初の値または最後の値のみを表示する | Tableau Software
- 5 Tableau Table Calculation Functions That You Need to Know | InterWorks, Inc.
INDEX( )
概要
値に関しては並べ替えをせずに、パーティション内の現在の行のインデックスを返します。最初の行のインデックスは 1 から始まります。たとえば、下の表は四半期ごとの売上高を示しています。INDEX() が日付パーティション内で計算される場合、各行のインデックスは 1、2、3、4 のようになります。
- FIRST関数同様、行番号を振る関数です。
- INDEX関数は1からカウントが始まります。
使ってみた
どういう時に使う?
- この関数で行番号を振っておくことによって、他の表計算を行う際に、これらの行番号をフィルタ等に使用して、柔軟な計算ができるようになります。
参考文献
LAST( )
概要
現在の行からパーティション内の最後の行までの行数を返します。たとえば、次の表には四半期ごとの売上高が示されています。LAST() が日付パーティション内で計算される場合、2 番目の行からの最後の行のオフセットは 5 です。
- FIRST関数と逆で、最後の行から最初の行に向かってカウントします。
使ってみた
どういう時に使う?
- この関数で行番号を振っておくことによって、他の表計算を行う際に、これらの行番号をフィルタ等に使用して、柔軟な計算ができるようになります。
参考文献
- パーティションの最初の値または最後の値のみを表示する | Tableau Software
- 5 Tableau Table Calculation Functions That You Need to Know | InterWorks, Inc.
LOOKUP(expression, [offset])
概要
現在の行からの相対オフセットとして指定されたターゲット行にある式の値を返します。パーティション内の最初/最後の行に相対的なターゲットには、オフセット定義の一部として FIRST() + n と LAST() - n を使用してください。offsetを省略した場合は、比較対象行をフィールド メニューで設定できます。この関数は、ターゲット行を特定できない場合は、NULL を返します。
- クロス集計表の指定した部分の値を取得する関数です。
- FIRST関数やLAST関数を使用することで、位置を相対的に指定することも可能です。
使ってみた
このような式だと、どうなるでしょうか?
LOOKUP(SUM([売上]),1)
「表(横)」に沿った1つ先の値をとってくる計算式を入れています。 この表ではオーダー日が年単位で設定されているので、このLOOKUP関数は、「1年先の売上」を表示することになります。(下記画像参照)
どういう時に使う?
- 上記の計算式を応用すれば、「1年後の売上との差」といった値を、その表の中に表すことができます。
- Excelのような計算が、Tabelauでも可能ということです。
参考文献
- 5 Tableau Table Calculation Functions That You Need to Know | InterWorks, Inc.
- LOOKUP関数の高度な使用方法が紹介されています。
- Breaking BI: Using the LOOKUP() function in Tableau
PREVIOUS_VALUE(expression)
概要
前の行のこの計算の値を返します。現在の行がパーティション内の最初の行の場合は、指定された式を返します。
- Tabelauでは珍しい再帰関数となっています。
- この関数を単独で使用してもあまり意味はありません。
- 「現在の行がパーティション内の最初の行の場合は、指定された式を返します。」とありますが、PREVIOUS_VALUE関数は再帰関数なので、単独で使用した場合、最終的に最初の行を参照することになるため、どの行でも、「指定された式」の値が返ることになるためです。
使ってみた
上記の注意点を考慮し、以下のような式にします。
PREVIOUS_VALUE(0) + SUM([売上])
右に向かって売上が足し上げられていってることがわかります。 「前の行の値+その行の売上」を算出しているためです。
どういう時に使う?
- 上記の例だと、Tableau標準機能の「累計」等で代用できてしまいます。
- 下記参考文献に挙がっているような、もう少し複雑な表計算の時に真価を発揮する関数だと思われます。
参考文献
おわりに
表計算関数を見てきました。あくまでデータビジュアライゼーションがメインであるTableauではありますが、表計算の機能もなかなか揃っているので、Excelとは勝手が違いますが、それなりの帳票も再現できそうですね。
次回はtamaによる「Tableauの関数を全て試してみる〜表計算関数編その2」です。お楽しみに。