Tableau

真打ち登場LOD ~TableauのINCLUDE関数を知ろう~

こんにちは。エクスチュアの大吉です。
前回の記事では、FIXED(ビューに関係なく粒度を固定するやつ)について解説しました。

今回は、LODの2つ目、「INCLUDE」にフォーカスして解説していきます。

  • ビューには表示したくないけど、集計には使いたいディメンションがある
  • 詳細な粒度で計算してから、ビューで集約したい

「INCLUDEってなに?」「知ってるけど使い方がよくわからない」、そんな方はぜひ最後まで読んでみてください。

目次


INCLUDEとは

INCLUDEを一言で表すなら、こうなります。

「ビューの粒度に、指定したディメンションを追加して計算する」

ここで重要なのは、「ビューの粒度を基準にする」という点です。
言い換えると、INCLUDEは「ビューには表示しないけど、計算には使いたいディメンション」を指定する仕組みです。


INCLUDEが必要になるとき

では、次のような要件を考えてみます。

「カテゴリ別のビューで、各カテゴリに含まれる顧客別の平均購入日数の数を知りたい」

ここで重要なのは、

  • ビューの粒度:カテゴリ
  • カウントしたい粒度:顧客別

というズレです。
しかし、このままCOUNTD([オーダー日])とすると、カテゴリ別のオーダー日の数がカウントされてしまいます。
これは、Tableauの集計の仕組み上、自然な動きです。

COUNTD は、ビューに表示されているデータ全体から重複を除いてカウントするため、顧客名ごとの内訳を取得できません。
ここで初めて、粒度を細かくする必要が出てきます。


INCLUDEを使ってみる

そこで、次のLOD計算を作成します。

AVG({INCLUDE [顧客名]: COUNTD([オーダー日])})

この式が言っていることは、こうです。

「ビューの粒度(カテゴリ)に、顧客名を追加してオーダー日をカウント」し、平均値を取得

内部的には、

  1. ビューの粒度を確認する(カテゴリ)
  2. そこに「顧客名」を追加する(カテゴリ×顧客名)
  3. その粒度でCOUNTDを実行
  4. 結果をビューの粒度(顧客名)に集約
  5. 結果の平均値を取得

という処理が行われています。

:カテゴリ

マーク > テキスト:AVG({INCLUDE [顧客名]: COUNTD([オーダー日])})

今度は、各カテゴリに含まれる顧客別オーダー日の平均が正しく表示されました。
これは、INCLUDEがビューの粒度(カテゴリ)に顧客名を追加し、より細かい粒度で計算してから、ビューの粒度に集約しているからです。


FIXEDとの違い

INCLUDEとFIXED式の決定的な違いを説明します。
それは、

「ビュー内に既に存在するディメンションを考慮するかしないか」

です。

左側の式:AVG({INCLUDE [カテゴリ]: SUM([売上])})
右側の式:AVG({FIXED [カテゴリ]: SUM([売上])})

図を見れば違いは明らかだと思います。
INCLUDEとFIXEDの最大の違いは

です。
INCLUDEはLOD式内で宣言しているディメンション(カテゴリ)にプラスしてビュー内の顧客区分も考慮して計算されています。
一方でFIXEDはLOD式内で宣言しているディメンション(カテゴリ)以外を無視、言い換えると宣言しているディメンションのみ考慮して計算を行っています。


フィルターとの関係

INCLUDEもFIXEDやEXCLUDEと同様に、フィルターの影響を受けます

フィルター:オーダー日を2024年1月~2024年3月に限定

:カテゴリ

マーク > テキスト

AVG({ INCLUDE [サブカテゴリ] : COUNTD([オーダー日]) })

結果:フィルターの影響を受けて、平均オーダー日数が変化します。

これもFIXEDとの違いの1つです。
「どのフィルターがかかってからINCLUDEが適用されるか」はFIXEDと異なります。
FIXEDではディメンションフィルターを適用しても、値に変化はありませんでしたが、INCLUDEはディメンションフィルターが適用されます。
これは、INCLUDEがディメンションフィルターの後に評価されるためです。
Tableauの計算順序(クエリパイプライン)では、

  1. ディメンションフィルター
  2. EXCLUDE / INCLUDE の評価
  3. メジャーフィルター

INCLUDEを使うときの思考フレーム

最後に、INCLUDEを書く前に考えてほしいことをまとめます。
以下の順番で考えるとよりINCLUDEの理解が深まると思います。

  1. 今のビューの粒度は何か
    → 行や列に配置されているディメンションを確認
  2. 計算に必要だけど、ビューには表示したくないディメンションは何か
    → 追加したい粒度を明確に
  3. 使う集計関数は何か
    → COUNTD、AVG、MIN、MAXなど非加算的な集計で効果を発揮
  4. フィルターの影響を受けることを理解しているか
    → INCLUDEはディメンションフィルター後に評価される

この視点を持つだけで、「なんとなくINCLUDEを書く」ことは大きく減っていきます。


まとめ

いかがだったでしょうか。INCLUDEは、「ビューの粒度に、指定したディメンションを追加して計算する」という特性を持っています。FIXEDが「ビューに関係なく」計算するのに対し、INCLUDEは「ビューに追加して、より細かい粒度で計算する」という考え方です。

だからこそ、
ビューには表示したくないけど、計算には必要なディメンションを扱える
という特性があります。

INCLUDEは、ビューをシンプルに保ちながら、裏側で細かい粒度の計算を実現できる武器です。

これで、FIXED、INCLUDEの2つのLOD計算を解説しました。
それぞれの特性を理解し、適切に使い分けることで、Tableauでの分析の幅が大きく広がります。
次回はEXCLUDEについて解説します。

ぜひ、実際のデータで試してみてください。

真打ち登場LOD ~TableauのFIXED関数を知ろう~前のページ

DataformでactAs権限に適合する設定をする次のページ

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Tableau

    Tableau:抽出を含んだワークブックを10.4以下にダウングレードする

    こんにちは、エクスチュアの渡部です。Tableauの小ネタです。…

  2. Tableau

    Tableau:分かりやすいLOD-概要編

    こんにちは、エクスチュアの渡部です。今回からLOD計算について、複…

  3. Google BigQuery

    Tableau : BigQueryでLOD計算が使えない場合の対処法

    こんにちは、エクスチュアの渡部です。Tableau×BigQu…

  4. Tableau

    真打ち登場LOD ~TableauのFIXED関数を知ろう~

    こんにちは。エクスチュアの大吉です。前回の記事では、LOD(…

  5. Excel

    コホート分析(Cohort Analysis)って何?〜Tableau/GA/Excel/Sprea…

    はじめにさぁ、ようやく皆さんお待ちかねの「コホート分析」です。我々…

  6. Tableau

    Tableau:分かりやすいLOD-FIXED編

    こんにちは、エクスチュアの渡部です。LODブログ第二弾です。今回は…

カテゴリ
最近の記事
  1. DataformでactAs権限に適合する設定をする
  2. 真打ち登場LOD ~TableauのINCLUDE関数を知ろ…
  3. 真打ち登場LOD ~TableauのFIXED関数を知ろう~…
  4. 真打ち登場LOD ~Tableauで苦戦するアイツを知ろう~…
  5. モック作成が面倒で “楽” した話
  1. Mouseflow

    Mouseflowのセッションリプレイのしくみ
  2. IT用語集

    ドキュメント(Document)って何?
  3. IT用語集

    アベイラビリティ(Availability)って何?
  4. Google Apps Script(GAS)

    GoogleスプレッドシートのデータをGASで整理する【setValue・set…
  5. ヒートマップ

    【Tips】フリクションとは?
PAGE TOP