Tableau の操作の順序

Tableau の操作の順序は、クエリ パイプラインとも呼ばれ、Tableau がさまざまなアクションを実行する順序です。アクションは操作とも呼ばれます。多くの操作でフィルターが適用されます。つまり、ビューを構築してフィルターを追加すると、操作の順序で確立された順序で常にフィルターが実行されます。

ビデオを視聴する: Tableau での関連する概念について説明した、1 時間の無料ビデオ プレゼンテーション「Tableau の操作の順序」(新しいウィンドウでリンクが開く)をご覧ください。

この記事では、ビューを更新し、操作の順序による問題を修正する 2 つのシナリオ (ディメンション フィルターからコンテキスト フィルターへの変換、および表計算から FIXED 詳細レベルの式への変換) を提供します。

操作の順序 (クエリ パイプライン) について

ユーザーが予測していたフィルターの実行順序と、操作の順序が指示する順序が異なる場合、予期しない結果になる可能性があります。これが発生した場合、パイプラインの操作の実行順序を変更できる場合があります。

Tableau の操作順序は、上から下に次のようになります。

: 操作の順序で、最新の日付フィルターはワークブックにグローバルに適用されますが、コンテキスト フィルターはワークシートごとに適用されます。最新の日付は、ワークブックを開いて初めて使用した直後、データ ソース フィルターの後、コンテキスト フィルターの前に決まります。その時点で日付が設定され、最新の日付プリセットがディメンション フィルターとして使用されます。

例 1: ディメンション フィルターをコンテキスト フィルターに変換する

これの例と次の例では、Tableau Desktop に付属の "Sample – Superstore (サンプル - スーパーストア)" データ ソースを使用します。

この例では、ビューは次の質問を解決します。ニューヨーク市内の、合計売上高が上位 10 の顧客。

ビューには 2 つのディメンション フィルターが含まれます。1 つは [フィルター] ダイアログ ボックスの [全般] タブ、もう 1 つは [上位 N] タブで作成します。問題は、"上位 n" 全般フィルターを適用後の結果にフィルターを実行するよう、全般フィルターを適用した後に "上位 n" フィルターに適用する必要があるのに、これらのフィルターが同時に実行されることです。解決策として明確な優先順位を確立するため、フィルターをコンテキスト フィルターとして再定義します。

このビューを構築するには、次の手順を行います。

  1. [列]"Sales (売上高)" をドラッグします。

  2. "City (市町村)""Customer Name (顧客名)"[行] にドラッグします。

  3. [データ] ペインから (今回は [フィルター] シェルフに) "City (市町村)" フィールドをドラッグします。[フィルター] ダイアログ ボックスの [全般] タブで、1 つの値のみを表示するようフィルターを設定します。ニューヨーク市。これを行うには、[なし] をクリックしてから、"New York City (ニューヨーク市)" を選択します。

    これにより、全般ディメンション フィルターが作成されます。

  4. ツールバーの [降順に並べ替え] ボタン () をクリックします。ビューは次のような表示になります。

    リストの最初の名前をいくつかメモします。Ashbrook、Fuller、Vernon など。

  5. 次に、[顧客名][データ] ペインから [フィルター] にドラッグし、合計売上高が上位 10 の顧客のみを示す "上位 10" フィルターを作成します。

    この 2 番目のフィルターを適用した後、ビューは正しいように見えますが、名前が前とは異なっていることに注意してください。

    前回 2 位だった Peter Fuller に何が起こったのでしょうか。目的はニューヨーク市内の上位 10 顧客を表示することですが、実際に現在ビューに表示されているのは、全体での上位 10 顧客です。

    問題は、上位フィルターと全般ディメンション フィルターが同時に適用されることです。これらは両方ともディメンション フィルターで、Tableau の操作の順序の同じ場所に表示されます。

    これを解決するには、全般ディメンションフィルター ("City (市町村)" で) をコンテキストに追加します。つまり、ワークシートで作成した他のフィルターの前に実行される、コンテキスト フィルターに切り替えます。

    詳細については、コンテキスト フィルターの使用を参照してください。

  6. [フィルター] シェルフで "City (市町村)" を右クリック (Mac では Control を押しながらクリック) し、[コンテキストに追加] を選択します。このフィルターはコンテキスト フィルターとして、ディメンション フィルターより優先されるようになりました。そのため、本来の姿でビューが表示されます。

例 2: 表計算を FIXED 詳細レベルの式に変換する

この例では、ビューは次の質問を解決します。製品のサブカテゴリー別の合計売上高に対する割合は何ですか。

ビューには、ディメンション フィルターと表計算が含まれます。Tableau は、ディメンション フィルターを適用してから表計算を実行します。これらの操作の順序を反転させるには、表計算の代わりに FIXED 詳細レベルの式を使用します。

このビューを構築するには、次の手順を行います。

  1. 新しいワークシートで、"Sales (売上高)"[列] にドラッグします。

  2. [行]"Sub-Category (サブカテゴリー)" をドラッグします。

  3. [列][SUM(Sales)] を右クリックして、[簡易表計算] > [合計に対する割合] を選択します。

  4. カテゴリーを最も高いものから低いものに並べ替えるには、ツール バーの [降順] ボタン () をクリックします。

  5. ビューにメジャー バリューを表示するには、ツール バーの [マーク ラベルの表示] ボタン () をクリックします。

    ビューは次のような表示になります。

    最初の数件のパーセンテージをメモします。14.37%、14.30% など。

  6. [行][サブカテゴリー] を右クリックし、[フィルターの表示] を選択します。

  7. フィルターで "Chairs (椅子)" のチェック マークをオフにします。

    これで、ビューに表示されるパーセンテージが変わり、最も高いパーセンテージが 16% を超えました。これで求めていた結果が出る場合もありますが (つまり、クイック フィルターを操作してパーセンテージを再計算する場合)、そうでなければ、フィルター アイテムを出し入れしてもパーセンテージを安定させることが必要なことがあります。この場合がまさにそうです。操作の順序では、ディメンション フィルターは表計算の前に適用されます。

    クイック フィルターを適用する前にパーセンテージを計算するには、FIXED 詳細レベルの式を作成し、表計算の代わりに使用します。

    FIXED 詳細レベルの式は、ビュー内のディメンションに関係なく、指定されたディメンションを使用して値を計算します。

    FIXED 詳細レベル表現は、ビュー内のディメンションに関係なく、指定されたディメンションを使用して値を計算します。このパーセンテージは全般ディメンション フィルターには影響しません。なぜでしょうか。これは、FIXED 詳細レベルの式はディメンション フィルターを適用する前に計算されるためです。

    詳細については、Tableau での詳細レベル表現の作成を参照してください。

  8. FIXED 詳細レベルの式は、"Sales (売上高)" の合計 (特定のメジャー バリューに対する) をビューの "Sales (売上高)" の合計で除算する必要があります。分子は集計されるため、分母も集計する必要があります。したがって、次のような式を作成します。

    SUM([Sales])/SUM({FIXED : SUM([Sales])})

  9. その式を "FixedSumOfSales" として保存して [データ] ペインから [列] にドラッグし、表計算を使用する既存の "SUM(Sales)" フィールドの右にドロップします。(比較のためビューに両方を表示したままにします。)これが現在のビューです。

    右側のグラフのパーセンテージの数値は、クイック フィルターで選択/選択解除したフィールドにかかわらず、一定になります。後は、"FixedSumOfSales" の値の書式をパーセント表示に設定するだけです。

  10. [列]"FixedSumOfSales" を右クリックし、[書式設定] を選択します。[書式設定] ペインで、[数値][パーセンテージ] の順に選択します。

    これで、最終的なビューが得られます。

    [サブカテゴリー] クイック フィルターでアイテムを選択/選択解除すると、左側の棒グラフのパーセンテージは変化しますが、右側の棒グラフのパーセンテージは変化しません。

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