こんにちは。エクスチュアの大吉です。
前回の記事では、FIXED(ビューに関係なく粒度を固定するやつ)について解説しました。
今回は、LODの2つ目、「INCLUDE」にフォーカスして解説していきます。
- ビューには表示したくないけど、集計には使いたいディメンションがある
- 詳細な粒度で計算してから、ビューで集約したい
「INCLUDEってなに?」「知ってるけど使い方がよくわからない」、そんな方はぜひ最後まで読んでみてください。
目次
INCLUDEとは
INCLUDEを一言で表すなら、こうなります。
「ビューの粒度に、指定したディメンションを追加して計算する」
ここで重要なのは、「ビューの粒度を基準にする」という点です。
言い換えると、INCLUDEは「ビューには表示しないけど、計算には使いたいディメンション」を指定する仕組みです。
INCLUDEが必要になるとき
では、次のような要件を考えてみます。
「カテゴリ別のビューで、各カテゴリに含まれる顧客別の平均購入日数の数を知りたい」
ここで重要なのは、
- ビューの粒度:カテゴリ
- カウントしたい粒度:顧客別
というズレです。
しかし、このままCOUNTD([オーダー日])とすると、カテゴリ別のオーダー日の数がカウントされてしまいます。
これは、Tableauの集計の仕組み上、自然な動きです。
COUNTD は、ビューに表示されているデータ全体から重複を除いてカウントするため、顧客名ごとの内訳を取得できません。
ここで初めて、粒度を細かくする必要が出てきます。
INCLUDEを使ってみる
そこで、次のLOD計算を作成します。
AVG({INCLUDE [顧客名]: COUNTD([オーダー日])})
この式が言っていることは、こうです。
「ビューの粒度(カテゴリ)に、顧客名を追加してオーダー日をカウント」し、平均値を取得
内部的には、
- ビューの粒度を確認する(カテゴリ)
- そこに「顧客名」を追加する(カテゴリ×顧客名)
- その粒度でCOUNTDを実行
- 結果をビューの粒度(顧客名)に集約
- 結果の平均値を取得
という処理が行われています。

行:カテゴリ
マーク > テキスト:AVG({INCLUDE [顧客名]: COUNTD([オーダー日])})
今度は、各カテゴリに含まれる顧客別オーダー日の平均が正しく表示されました。
これは、INCLUDEがビューの粒度(カテゴリ)に顧客名を追加し、より細かい粒度で計算してから、ビューの粒度に集約しているからです。
FIXEDとの違い
INCLUDEとFIXED式の決定的な違いを説明します。
それは、
「ビュー内に既に存在するディメンションを考慮するかしないか」
です。

左側の式:AVG({INCLUDE [カテゴリ]: SUM([売上])})
右側の式:AVG({FIXED [カテゴリ]: SUM([売上])})
図を見れば違いは明らかだと思います。
INCLUDEとFIXEDの最大の違いは
LOD式内で宣言しているディメンション以外を無視するか、しないか
です。
INCLUDEはLOD式内で宣言しているディメンション(カテゴリ)にプラスしてビュー内の顧客区分も考慮して計算されています。
一方でFIXEDはLOD式内で宣言しているディメンション(カテゴリ)以外を無視、言い換えると宣言しているディメンションのみ考慮して計算を行っています。
フィルターとの関係
INCLUDEもFIXEDやEXCLUDEと同様に、フィルターの影響を受けます。

フィルター:オーダー日を2024年1月~2024年3月に限定
行:カテゴリ
マーク > テキスト:
AVG({ INCLUDE [サブカテゴリ] : COUNTD([オーダー日]) })
結果:フィルターの影響を受けて、平均オーダー日数が変化します。
これもFIXEDとの違いの1つです。
「どのフィルターがかかってからINCLUDEが適用されるか」はFIXEDと異なります。
FIXEDではディメンションフィルターを適用しても、値に変化はありませんでしたが、INCLUDEはディメンションフィルターが適用されます。
これは、INCLUDEがディメンションフィルターの後に評価されるためです。
Tableauの計算順序(クエリパイプライン)では、
- ディメンションフィルター
- EXCLUDE / INCLUDE の評価
- メジャーフィルター
という順序になっています。
※クエリパイプラインではさらに細かい順序でフィルターがかかりますが、今回詳細は省きます
INCLUDEを使うときの思考フレーム
最後に、INCLUDEを書く前に考えてほしいことをまとめます。
以下の順番で考えるとよりINCLUDEの理解が深まると思います。
- 今のビューの粒度は何か
→ 行や列に配置されているディメンションを確認 - 計算に必要だけど、ビューには表示したくないディメンションは何か
→ 追加したい粒度を明確に - 使う集計関数は何か
→ COUNTD、AVG、MIN、MAXなど非加算的な集計で効果を発揮 - フィルターの影響を受けることを理解しているか
→ INCLUDEはディメンションフィルター後に評価される
この視点を持つだけで、「なんとなくINCLUDEを書く」ことは大きく減っていきます。
まとめ
いかがだったでしょうか。INCLUDEは、「ビューの粒度に、指定したディメンションを追加して計算する」という特性を持っています。FIXEDが「ビューに関係なく」計算するのに対し、INCLUDEは「ビューに追加して、より細かい粒度で計算する」という考え方です。
だからこそ、
ビューには表示したくないけど、計算には必要なディメンションを扱える
という特性があります。
INCLUDEは、ビューをシンプルに保ちながら、裏側で細かい粒度の計算を実現できる武器です。
これで、FIXED、INCLUDEの2つのLOD計算を解説しました。
それぞれの特性を理解し、適切に使い分けることで、Tableauでの分析の幅が大きく広がります。
次回はEXCLUDEについて解説します。
ぜひ、実際のデータで試してみてください。














