Tableauリファレンスラインの設定を、表計算の観点で理解する。スタックマークのリファレンスラインへの関わりを考える。
こんにちは。この記事ではピンポイントでTableauのレファレンスライン機能に焦点を当てたいと思います。
この記事では、
・Tableauリファレンスラインの設定を、表計算の観点で理解する
・スタックマークのリファレンスラインへの関わりについて考える
をテーマにしていますが、これを知らないとリファレンスラインを使えない、というわけではありません。
気にせず使ってください!
もし、リファレンスライン設定時に、何か疑問を感じている方がいらっしゃれば、疑問解消の助けになると幸いです。
利用するデータは、英語版のSample Super Store Excelとなります。
(RegionをWest、Central、Eastの三つに絞って利用します。)
操作は、Winodows版の操作で説明させていただきます。
リファレンスラインと表計算の関係
まず、Category毎、Segment毎、Region毎の合計(Sales)を示すVizを作成してみます。
上図のように、マークを「円」にして作成してみました。
(積み上げ棒グラフが一般的な方法かと思いますが、あえて「円」で作成しています。積み上げ棒グラフや、積み重ねエリアチャートの場合については後ほど解説いたします。)
早速、縦軸「合計(Sales)」にリファレンスラインを追加したいと思います。
合計(Sales)軸を右クリックし、「リファレンスラインの追加」と進みます。
すると、下図の設定画面が開きます。
この記事で解説するのは、上図の赤枠①~③の部分になります。
上図の赤枠①の部分。ここでは、リファレンスラインを引く値の計算を、どの範囲で行うかを指定します。
例えば、図1のVizで言えば
表全体:文字通り、Viz全体。Vizに表示されているすべてのマーク(円)の合計(Sales)が、一本のリファレンスラインの計算に利用され描かれます。
ペイン:Region毎に分け、各Regionの中のマーク(円)の合計(Sales)がリファレンスラインの計算に利用されます。結果、各Regionに1本、合計3本のリファレンスラインが描かれます。
セル:各RegionおよびSegmentの組み合わせ毎に分け、それぞれの中のマーク(円)の合計(Sales)がファレンスラインの計算に利用されます。結果、各RegionおよびSegment毎に1本、合計9本のリファレンスラインが描かれます。
なお、「ペイン」とは何か?「セル」とは何か?の定義を突き詰めると少々ややこしくなるので、実践利用では設定を試してみて所望の状態になっているかを確認すれば良いと思います。
続い下図②③の部分について考えてみます。
ここ、赤枠②の部分では
・その軸に表示されている連続値
(メジャーの集計値、もしくは連続のディメンション)
・ワークブックで設定しているパラメーター
(数値軸には数値パラメーター。日付(時刻)軸には、日付(時刻)パラメーターが選択可能)
を選ぶことができます。
現在のVizでは、合計(Sales)を選ぶことができます。
この合計(Sales)は、Vizの粒度、つまり、このVizではCategory、Segment、Region毎のSalesの合計となります。
続いて赤枠③の部分です。
ここでは、先ほど赤枠②で選んだ
Category、Segment、Region毎のSalesの合計
を、どのような方法で集計するかを選択します。
つまり
Vizの粒度で、合計(Sales)を集計 ← 1回目の集計
を
赤枠③内の集計方法で再集計 ← 2回目の集計
このように、2段階の集計をしている理解できます。
*補足
赤枠③で選べる「総計」については、後ほど解説いたします。
「定数」は集計値を利用するのではなく、直に値を指定する場合に選択します。
ここで表計算の観点から、考えてみます。
上記の2段階の集計は、表計算のWINDOW関数と同じと考えられます。
例えば、図4の赤枠③で「合計」選んだ時は
WINDOW_SUMを利用する事と同じで、計算結果は
WINDOW_SUM(SUM(Sales)) となります。
「平均」を選べば、WINDOW_AVG(SUM(Sales))
「最大値」を選べば、WINDOW_MAX(SUM(Sales))
「最小値」を選べば、WINDOW_MIN(SUM(Sales))
などです。
そして、このWINDOW関数でするで使用する範囲を、図④の赤枠①で決めている事になります。
次に、Vizの行に置いている「合計(Sales)」を「平均(Sales)」に変えてみます。
リファレンスライン設定画面の赤枠②の部分は
平均(Sales)となります。
下図の選択肢で、
「合計」を選べば、WINDOW_SUM(AVG(Sales)) となります。
「平均」を選べば、WINDOW_AVG(AVG(Sales))
「最大値」を選べば、WINDOW_MAX(AVG(Sales))
「最小値」を選べば、WINDOW_MIN(AVG(Sales))
の計算となります。
「総計」について
次は、リファレンスラインの設定で「総計」を選んだ時について考えてみます。
この「総計」を選んだ時の計算は、
これまで上記で説明しているWINDOW関数を、TOTAL関数に置き換えた計算になります。
行に「合計(Sales)」を置いているなら、リファレンスラインの値は
TOTAL(SUM(Sales))
行に「平均(Sales)」を置いているなら、リファレンスラインの値は
TOTAL(AVG(Sales))
です。
TOTAL関数は、まり馴染みのない関数かもしれませんが、表計算の設定した範囲のすべてのレコードを対象として、TOTAL(集計計算)の括弧内の集計計算を行う関数です。
Tableauで計算式の解説を見ても少々分かりづらいので、下記記事の「その2」で説明しています、もし良かったら、ご参考ください。
リファレンスラインで、この「総計」を選んだ時は、図4(下記に再掲)の
赤枠①で選んだ範囲内を対象として、すべてのレコードについて
赤枠②の集計を行った結果を利用します。
例を見てみたいと思います。
行に、合計(Sales)を置いています。
合計(Sales)軸にリファレンスラインを引きたいと思います。
リファレンス設定画面では、
上図、赤枠①に「セル」を選択し
②は合計(Sales)のまま
③は、まずは「合計」
にしました。
各セルの、3つのCategoryの合計がリファレンスラインとして引かれます。
このまま、もう一度、リファレンスラインの設定を「総計」に変えます。
すると
リファレンスラインのラベルが「合計」ではなく「総計」に変わりましたが、リファレンスラインの引かれている値は変わっていません。
・「合計」の時は、Category毎にSalesを合計し、それらを再び合計
・「総計」の時は、セルの範囲、すなわち3つのCategoryのレコードすべての合計
当然、これら2つは同じ結果になります。
2つ目の例です。
次は、行の合計(Sales)を、平均(Sales))変えました。
このVizの、平均(Sales)軸に、リファレンスラインを2本引きます。
一本目は、
赤枠①に「セル」を選択し
②は平均(Sales)
③は「平均」
です。
2本目は
赤枠①に「セル」のまま
②は平均(Sales)のまま
③は「総計」
です。
結果は、
このように、平均と総計ではリファレンスライン位置が異なります。
・平均の方は、セルの中の、Category毎の平均(Sales)のまた平均(3つの集計値の平均)
・総計の方は、セルに含まれている、すべてのレコードを対象としてCategoryで分けずに平均(Sales)を計算
となっています。
当然、Categoryによってレコード数が違うので、この両者は一致しないのです。
以上が「総計」についての解説となります。
スタックマークの役割
ここまでは、リファレンスラインについて表計算とからめて解説してきました。
次は、リファレンスラインとスタックマークについてです。
スタックマークは、棒グラフ、エリアチャートなどで、項目毎に積み上げて表示するためのものです。
ようするに、一般的な積み上げ棒グラフ、積み重ねエリアチャートの事です。
この「マークを積み重ねるかどうか?つまりスタックマークをOnにするか、Offにするか」という設定は、下図メニューからワークシート毎に設定可能です。
デフォルトでは、この設定は「自動」となっていて、マークタイプを「棒」もしくは「エリア」にした時はスタックマークがOnとなり、他のマークタイプではOffになります。
棒グラフでも、スタックマークをOffにすれば積み重ねはなくなります。これは、Bar in Bar Chartなど作るときに利用しますね。また、エリアチャートでもOffにして利用する場合もあると思います。
また、やる気になれば線グラフや、円のマークタイプでも、スタックマークをOnにする事は可能です。ただし、あまり機会は多くないでしょう。
この、スタックマークがOnとなっている場面では、リファレンスラインの計算に影響を与えます。
例えば、
上図19の積み上げ棒グラフに、リファレンスラインを引きます。
設定は、
赤枠①に「セル」
②は平均(Sales)
③は「平均」
としてみます。
マークタイプが丸だったときは、これで
各セル内のCategory毎の合計(Sales)の平均がリファレンスラインとなりました。
一方、今回は
このように、積み上げ棒グラフの一番上の位置です。
リファレンスラインの設定(図20の赤枠③)を
最大値にしても(下図左側)
最小値にしても(下図右側)
積み上げ棒グラフの一番上の位置です。
つまり、各セル内のCategory毎の合計(Sales)の、最大値や最小値にはなっていない、という事です。
結論としては、
スタックマークがOnの場合は、積み重なった結果の値、
今回では全Categoryの合計(Sales)が、
リファレンスラインの設定の赤枠②
この部分の値に相当する事になります。
この挙動を、表計算の観点でも考えてみます。
少し難易度が上がりますが、これを理解しないでもリファレンスラインの利用には支障のない内容です。参考程度に読んで頂ければ幸いです。
スタックマークOnの場合、これまで説明に利用していた表計算
WINDOW関数の中身
例えば、このVizで言うと
WINDOW_〇〇〇(SUM(Sales)) の SUM(Sales)の部分が、マークごとの値ではなく、スタックマークで積み重なった結果の値となるとことです。
これを表計算で表現すると
まず、
WINDOW_SUM(SUM(Sales))を、スタックさせている粒度Category
使用でおこなう。(→これを、計算式Aとします)
そして、さらに
表計算
WINDOW_〇〇〇(計算式A)
を、リファレンスラインの設定範囲で行う。(ただし、スタックに利用しているディメンションは表計算に使用しない。)
このような流れになります。
最後に、範囲をペインに拡大して例を2つあげさせて頂きます。
リファレンスライン設定は
範囲:ペイン
合計(sales)の
平均
です。
①スタックマークOffの場合 下図23
リファレンスラインの値は
WINDOW_AVG(SUM(Sales))
表計算の次を使用して計算:Category、Segment
②スタックマークOnの場合 下図24
リファレンスラインの値は
WINDOW_SUM(SUM(Sales)) ←計算式A
表計算の次を使用して計算:Category
続いて
WINDOW_AVG(計算式A)
表計算の次を使用して計算:Segment
となります。
なお、総計に関しては、スタックマークOn、Offでの差はないです。
以上、長くなりましたがリファレンスラインと表計算を合わせて、考察してみました。
ご精読ありがとうございます。
追記
*最後の補足
スタックマークのOnの場合について解説させて頂きましたが、リファレンスラインに利用する集計値が定数、例えば
SUM(1)、MIN(1)、MAX(1)などの場合は、スタックされた後の結果がリファレンスラインに使われるわけではありません。
下図の例では、
リレーションシップの設定されていないデータソースを利用し
スタックマークOnの積み上げ棒グラフで、
行にSUM(1)
リファレンスラインの設定は、
範囲:ペイン
SUM(1)の
平均
にしています。
スタックされた後の結果の平均ではなく、各マークのSUM(1)の平均 でリファレンスラインが引かれています。
これは、定数のフィールドをマーク詳細に置き、それを利用してリファレンスラインを引いた場合も同様です。
レコードの集計値と、定数の場合で異なる挙動をするので追記させて頂きました。
*なお、リレーションシップの設定されているデータソースの場合は、SUM(1)の値は、どのマークでも1になります。
(2023年5月4日)
By ritz_Tableau : Satoshi Ganeko
Tableau Visonary (Zen Master) | 2018-2021 Tableau Public Ambassador |
Tableau Certified Professional | DATA Saber
Twitter : @ritz_Tableau
Tableau Public : https://public.tableau.com/profile/satoshi.ganeko#!/
*記事の中に不正確な点などありましたら、是非、Twitter Direct Mailでお知らせ下さい。よろしくお願いします。