コンテキスト フィルターの使用

既定では、Tableau で設定したすべてのフィルターは個別に計算されます。つまり、各フィルターは他のフィルターにかかわらず、データ ソース内のすべての行にアクセスします。ただし、ビューのコンテキスト フィルターとして 1 つまたは複数のカテゴリー フィルターを設定することができます。コンテキスト フィルターは、独立したフィルターと考えることができます。設定するその他のフィルターは、コンテキスト フィルターを通過するデータのみを処理するので、依存型フィルターとして定義されます。

コンテキスト フィルターは次の目的で作成できます。

  • 最初にフィルターを強制的に実行します。
  • 依存型数値フィルターまたは上位 N フィルターを作成します。対象データのみを含めるコンテキスト フィルターを設定してから、数値フィルターまたは上位 N フィルターを設定できます。

たとえば、大手食料品店チェーンの朝食製品を担当しているとします。タスクは、全店舗に関して収益性の面で上位 10 位の朝食用製品を見つけることです。データ ソースが非常に大きい場合、朝食用製品のみを含めるようにコンテキスト フィルターを設定します。その後、依存型フィルターとして収益面で上位 10 位のフィルターを作成すると、コンテキスト フィルターを通過するデータのみが処理されます。

コンテキスト フィルターの作成

コンテキスト フィルターを作成するには、既存のカテゴリー フィルターのコンテキスト メニューで [コンテキストに追加] を選択します。コンテキストが一度計算され、ビューが生成されます。その他のフィルターは、すべてそのコンテキストを基準として計算されます。コンテキスト フィルター:

  • [フィルター] シェルフの上部に表示されます。
  • [フィルター] シェルフ上の灰色のアイコンで示されます。
  • シェルフに再配置することはできません。

下のように、"Ship Mode (出荷モード)" ディメンションがビューのコンテキストとなるように設定されます。"Region (地域)" フィルターは、"Ship Mode (出荷モード)" を通過したデータのみを使用して計算されます。

コンテキスト フィルターは次の方法で変更できます。

  • [フィルター] シェルフからフィールドを削除する – シェルフに他のコンテキスト フィルターが残っている場合、新しいコンテキストが計算されます。
  • フィルターを編集する – コンテキスト フィルターを編集するたびに新しいコンテキストが計算されます。
  • [コンテキストから削除] を選択する – フィルターは標準のフィルターとしてシェルフに残ります。コンテキスト フィルターがシェルフに残っている場合、新しいコンテキストが計算されます。

コンテキスト フィルターの高速化

特に大きいデータ ソースでコンテキスト フィルターのパフォーマンスを向上させるには、次の一般的な規則に従います。
  • データ セットのサイズを大幅に削減できる 1 つのコンテキスト フィルターを使用する方が、多くのコンテキスト フィルターを適用するよりはるかに優れています。
  • データのモデル化をすべて完了してから、コンテキストを作成します。データ モデルの変更 (ディメンションからメジャーへの変換など) では、コンテキストの再計算が必要です。
  • コンテキストに必要なフィルターを設定し、コンテキストを作成してからフィールドを他のシェルフに追加します。この作業を最初に行うことにより、他のシェルフ上のフィールドを削除するときに実行されるクエリが非常に高速になります。
  • 日付に対してコンテキスト フィルターを設定する場合、連続する日付を使用することができます。ただし、不連続の日付に対して YEAR(date) のような日付ビンやコンテキスト フィルターを使用すると、非常に効果的です。

: データ ソースの [データ] メニューで [参照整合性を想定] オプションを使用すると、コンテキスト フィルターがクエリ パフォーマンスの向上に悪影響を及ぼす可能性があります。詳細については、「結合の参照整合性を仮定する」を参照してください。

例: コンテキスト フィルターの作成

この例では、コンテキスト フィルターを作成する方法を示します。まず、売上高が上位 10 位の製品を表示するようにビューをフィルターします。次に、上位 10 位の家具製品を表示できるように、製品カテゴリーでコンテキスト フィルターを作成します。

  1. サンプル - スーパーストア データ ソースを使用して、下のような初期ビューを作成します。このビューでは、売上高が最も高いものが一番上になるように、すべてのサブカテゴリーが並べ替えられています。

  2. 次に、上位 10 位フィルターを作成し、ベストセラー製品のみを表示します。このフィルターは、[フィルター] シェルフに "Sub-Category (サブカテゴリー)" フィールドをドラッグすることによって作成できます。[フィルター] ダイアログ ボックスで [上位] タブに切り替え、合計売上高が上位 10 位のフィルターを定義します。上位 N フィルターの定義の詳細については、ビューからのデータのフィルター(新しいウィンドウでリンクが開く)を参照してください。

  3. [OK] をクリックすると、ビューがフィルターされ、売上高が上位 10 位の製品が表示されます。

  4. ここで、家具製品のみを表示する別のフィルターを追加しましよう。[フィルター] シェルフに "Category (カテゴリー)" フィールドをドラッグし、"Furniture (家具)" のみを選択します。終了したら、[OK] をクリックします。

    ビューはフィルターされますが、10 製品ではなく 3 製品のみが表示されます。これは、既定ではすべてのフィルターは個別に評価され、ビューには結果の交差点が表示されるためです。そのため、このビューは、全体の上位 10 位の製品の 3 つは家具製品であることを示しています。

  5. 上位 10 位の家具製品を確認するには、"Category (カテゴリー)" フィルターをコンテキスト フィルターにする必要があります。[フィルター] シェルフのフィールドを右クリックし、[コンテキストに追加] を選択します。

  6. コンテキスト フィルターとしてマークされたフィルターとビューが更新され、上位 4 位の家具製品が表示されます。なぜ上位 10 位ではないのでしょうか?なぜならば、サブカテゴリーのうち 4 つのみが家具を含んでいるからです。ただし、そのコンテキストの結果で上位 10 位フィルターが評価されていることがわかります。

フィードバックをお送りいただき、ありがとうございます。フィードバックは正常に送信されました。ありがとうございます!