
Tableau 8つのハードルを越える㉝「LOD計算 その3 関連解説」

こんにちは
前号、「LOD計算 その2」では、3つのLOD計算
・INCLUDE
・EXCLUDE
・FIXED
の働きを解説いたしました。
前号はこちらです。
この記事作成に利用しているワークブックは下記にアップしています。
https://public.tableau.com/app/profile/satoshi.ganeko/viz/LOD_v2019_1/sheet0
今回はいくつか、LOD計算にまつわる事を解説いたします。
①INCLUDE、EXCLUDEはFIXEDで書き換える事が可能です。
例えば、前号のINCLUDEの例では
Viz LOD 「カテゴリ」 で
LOD計算式 { INCLUDE [顧客 ID] : SUM ( [売上] ) }
を作りました、
この計算は、{FIXED [カテゴリ] , [顧客 ID] : SUM ( [売上] ) }
としても、結果的にまったく同じ計算となります。
EXCLUDEの例では、
Viz LOD 「サブカテゴリ と 地域」 で
LOD計算式 { EXCLUDE [地域] : SUM ( [利益] ) }
を作りました、
この計算は、{ FIXED [サブカテゴリ] : SUM ( [利益] ) }
としても、結果的にまったく同じ計算となります。
ならば、FIXEDだけで事足りるのではないか?と思われるかもしれません。
INCLUDE、EXCLUDEはそのワークブックの粒度(Viz LOD)に合わせて柔軟に対応してくれる。という利点を持っています。
例えば、最初のINCLUDEの例では、

このように、カテゴリ別に、顧客毎売上の中央値を表示させました。
これを、顧客区分でも分けようと考えたとき、INCLUDEを利用していれば、

上図のように、行に顧客区分を置いてあげれば、Viz LODに顧客区分が追加されるので
LOD計算
{INCLUDE [顧客 ID] : SUM ( [売上] ) }
の粒度にも、顧客区分が追加されます。
もし、FIXEDを使った
{FIXED [カテゴリ] , [顧客 ID] : SUM ( [売上] ) }
を利用していた場合は、この計算式を
{FIXED [顧客区分] , [カテゴリ] , [顧客 ID] : SUM ( [売上] ) }
と、[顧客区分]を追加し書き換えてあげないと、[顧客区分]が粒度に加わりません。
EXCLUDEの例、

上記のVizでは、
Viz LOD は 「サブカテゴリ と 地域」
LOD計算式は { EXCLUDE [地域] : SUM ( [利益] ) }
でした。
ここで、サブカテゴリ別に見るのをやめたいと思ったとき、行のサブカテゴリを取り除けば

上記のようになります。
Viz LODからサブカテゴリがなくなっているので、
{ EXCLUDE [地域] : SUM ( [利益 ] ) }
で、粒度から地域を除外すれば、これで粒度は「なし」のデータ全体の集計を計算出来ています。
一方、FIXEDを利用し、
{FIXED [サブカテゴリ] : SUM ( [利益] ) }
と書いていた場合は、行のサブカテゴリを外したときに
{FIXED : SUM ( [利益] ) }
と書き換えないといけなくなります。
結論をまとめると、
INCLUDE、EXCLUDEの計算式は、結果的にはFIXEDで書き換えることもできる。
ただし、INCLUDE、EXCLUDEは、Viz LODに応じて柔軟に対応し粒度を決めてくれる。
FIXEDは、計算式を作った時点で粒度が完全に決まっていて、Viz LODの影響は受けない。
となります。それぞれの、特徴を活かして使い分けるとLOD計算の力が発揮されます。(初めてLOD計算を使われる場合は、まずはFIXEDから試してみるのが個人的にはおすすめです。)
② FIXED LOD計算はディメンションとしても利用できる。
前号で書いた通り、LOD計算のうちFIXED計算の結果はディメンションとしても利用できます。
これは、FIXEDがViz LODの影響を受けず、直接、粒度を指定しているため、データソースの段階で1行1行のレコードにLOD計算の結果を対応させる事ができるためです。
【前号のFIXED例 { FIXED [顧客 ID] : MIN ( [オーダー日] ) } でのイメージ図】

上記の例では、元データの1行1行に「その行の顧客の最初の購入日」を示すLOD計算式の結果が紐づいています。
このように、データソースの1行1行に対応する値が存在する事によりデータを切り分ける切り口になる。つまり、ディメンションとして利用することが出来るわけです。
また、FIXEDでメジャーを集計した場合はビンの作成も可能です。
③ クエリパイプライン(オーダーオブオペレーション)で、FIXEDとINCLUDE/EXCLUDEでは働く順序が違う。
クエリパイプライン(オーダーオブオペレーション)については、別記事で解説させて頂きました。
(Tableau 8つのハードルを越える⑫~⑱)
実は、LOD計算は種類によって計算が行われる順序が少し違うのですが、この説明をまだしていませんでしたので、ここで解説いたします。
下図は、Tableau HP記載のクエリパイプライン(オーダーオブオペレーション)の図です。

この中で、
FIXED (LOD計算でFIXEDを利用している場合)
INCLUDE (LOD計算でINCLUDEを利用している場合)
EXCLUDE (LOD計算でEXCLUDEを利用している場合)
が、どこにあるか見てみましょう。
FIXEDはディメンションフィルターの手前(赤枠)
INCLUDE/EXCLUDEは、ディメンションフィルターの後(青枠)にあります。
なんで?と思うかもしれませんが、ここは、下記の解釈で覚えて頂ければと思います。(あくまで個人的な提案です。正式な理由の出典は見つけられていません。)
FIXEDはViz LODと関係なく決まります。そしてディメンションフィルターとしても利用できます。ディメンションフィルターとして利用出来るのだから、当然ディメンションフィルターの前に値が計算され決定されている必要があります。
一方、INCLUDE/EXCLUDEはViz LODが決まったあとに、計算されます。また、ディメンションフィルターとして使う事も出来ません。なので、余計な計算をさけるためにもディメンションフィルターの後で働いた方がリーズナブルな気がします。
もしFIXED計算の前に、ディメンションによるフィルターを働かせたい場合は、そのディメンションフィルターをコンテキストに設定してください。
以上、LOD計算に関連し、いくつか解説させて頂きました。
ご精読ありがとうございます。
「LOD計算 その4」は下記になります。
*連載記事すべてへのリンクは、こちらのマガジンにまとめています。
By ritz_Tableau
2020-2023 Tableau Zen Master | 2019-2021,2023 Tableau Public Ambassador |2021 certified as Tableau Certified Professional | DATA Saber
X(Twitter) : @ritz_Tableau
Tableau Public : https://public.tableau.com/profile/satoshi.ganeko#!/
*記事の中に不正確な点などありましたら、是非、X(Twitter) Direct Messageでお知らせ下さい。よろしくお願いします。m(__)m

おことわり
当記事のコンテンツについて、商用利用でない場合は許可なく転載して頂いて構いません。(ハードル画像および他のサイトから引用している画像は除く)
転載の際は、当記事へのリンクを掲載し転載であることを明記してください。商用利用の場合は許可なく転載しないで下さい。
当記事のコンテンツについて、可能な限り正確な情報を掲載するよう努めていますが、誤情報が含まれたり、情報が古くなっている可能性があります。当記事に掲載された内容、および、当記事からリンクやバナーによって移動したサイトに掲載された内容によって生じた、損害等の一切の責任を負いかねますのでご了承ください。よろしくお願いします。