Tableau の操作の順序
Tableau の操作の順序は、クエリ パイプラインとも呼ばれ、Tableau がさまざまなアクションを実行する順序です。アクションは操作とも呼ばれます。多くの操作でフィルターが適用されます。つまり、ビューを構築してフィルターを追加すると、操作の順序で確立された順序で常にフィルターが実行されます。
ビデオを視聴する: Tableau での関連する概念について説明した、1 時間の無料ビデオ プレゼンテーション「Tableau の操作の順序」(新しいウィンドウでリンクが開く)をご覧ください。
この記事では、ビューを更新し、操作の順序による問題を修正する 2 つのシナリオ (ディメンション フィルターからコンテキスト フィルターへの変換、および表計算から FIXED 詳細レベルの式への変換) を提供します。
操作の順序 (クエリ パイプライン) について
ユーザーが予測していたフィルターの実行順序と、操作の順序が指示する順序が異なる場合、予期しない結果になる可能性があります。これが発生した場合、パイプラインの操作の実行順序を変更できる場合があります。
Tableau の操作順序は、上から下に次のようになります。
注: 操作の順序で、最新の日付フィルターはワークブックにグローバルに適用されますが、コンテキスト フィルターはワークシートごとに適用されます。最新の日付は、ワークブックを開いて初めて使用した直後、データ ソース フィルターの後、コンテキスト フィルターの前に決まります。その時点で日付が設定され、最新の日付プリセットがディメンション フィルターとして使用されます。
例 1: ディメンション フィルターをコンテキスト フィルターに変換する
これの例と次の例では、Tableau Desktop に付属の "Sample – Superstore (サンプル - スーパーストア)" データ ソースを使用します。
この例では、ビューは次の質問を解決します。ニューヨーク市内の、合計売上高が上位 10 の顧客。
ビューには 2 つのディメンション フィルターが含まれます。1 つは [フィルター] ダイアログ ボックスの [全般] タブ、もう 1 つは [上位 N] タブで作成します。問題は、"上位 n" 全般フィルターを適用後の結果にフィルターを実行するよう、全般フィルターを適用した後に "上位 n" フィルターに適用する必要があるのに、これらのフィルターが同時に実行されることです。解決策として明確な優先順位を確立するため、フィルターをコンテキスト フィルターとして再定義します。
このビューを構築するには、次の手順を行います。
[列] に "Sales (売上高)" をドラッグします。
"City (市町村)" と "Customer Name (顧客名)" を [行] にドラッグします。
[データ] ペインから (今回は [フィルター] シェルフに) "City (市町村)" フィールドをドラッグします。[フィルター] ダイアログ ボックスの [全般] タブで、1 つの値のみを表示するようフィルターを設定します。ニューヨーク市。これを行うには、[なし] をクリックしてから、"New York City (ニューヨーク市)" を選択します。
これにより、全般ディメンション フィルターが作成されます。
ツールバーの [降順に並べ替え] ボタン () をクリックします。ビューは次のような表示になります。
リストの最初の名前をいくつかメモします。Ashbrook、Fuller、Vernon など。
次に、[顧客名] を [データ] ペインから [フィルター] にドラッグし、合計売上高が上位 10 の顧客のみを示す "上位 10" フィルターを作成します。
この 2 番目のフィルターを適用した後、ビューは正しいように見えますが、名前が前とは異なっていることに注意してください。
前回 2 位だった Peter Fuller に何が起こったのでしょうか。目的はニューヨーク市内の上位 10 顧客を表示することですが、実際に現在ビューに表示されているのは、全体での上位 10 顧客です。
問題は、上位フィルターと全般ディメンション フィルターが同時に適用されることです。これらは両方ともディメンション フィルターで、Tableau の操作の順序の同じ場所に表示されます。
これを解決するには、全般ディメンションフィルター ("City (市町村)" で) をコンテキストに追加します。つまり、ワークシートで作成した他のフィルターの前に実行される、コンテキスト フィルターに切り替えます。
詳細については、コンテキスト フィルターの使用を参照してください。
[フィルター] シェルフで "City (市町村)" を右クリック (Mac では Control を押しながらクリック) し、[コンテキストに追加] を選択します。このフィルターはコンテキスト フィルターとして、ディメンション フィルターより優先されるようになりました。そのため、本来の姿でビューが表示されます。
例 2: 表計算を FIXED 詳細レベルの式に変換する
この例では、ビューは次の質問を解決します。製品のサブカテゴリー別の合計売上高に対する割合は何ですか。
ビューには、ディメンション フィルターと表計算が含まれます。Tableau は、ディメンション フィルターを適用してから表計算を実行します。これらの操作の順序を反転させるには、表計算の代わりに FIXED 詳細レベルの式を使用します。
このビューを構築するには、次の手順を行います。
新しいワークシートで、"Sales (売上高)" を [列] にドラッグします。
[行] に "Sub-Category (サブカテゴリー)" をドラッグします。
[列] で [SUM(Sales)] を右クリックして、[簡易表計算] > [合計に対する割合] を選択します。
カテゴリーを最も高いものから低いものに並べ替えるには、ツール バーの [降順] ボタン () をクリックします。
ビューにメジャー バリューを表示するには、ツール バーの [マーク ラベルの表示] ボタン () をクリックします。
ビューは次のような表示になります。
最初の数件のパーセンテージをメモします。14.37%、14.30% など。
[行] の [サブカテゴリー] を右クリックし、[フィルターの表示] を選択します。
フィルターで "Chairs (椅子)" のチェック マークをオフにします。
これで、ビューに表示されるパーセンテージが変わり、最も高いパーセンテージが 16% を超えました。これで求めていた結果が出る場合もありますが (つまり、クイック フィルターを操作してパーセンテージを再計算する場合)、そうでなければ、フィルター アイテムを出し入れしてもパーセンテージを安定させることが必要なことがあります。この場合がまさにそうです。操作の順序では、ディメンション フィルターは表計算の前に適用されます。
クイック フィルターを適用する前にパーセンテージを計算するには、FIXED 詳細レベルの式を作成し、表計算の代わりに使用します。
FIXED 詳細レベルの式は、ビュー内のディメンションに関係なく、指定されたディメンションを使用して値を計算します。
FIXED 詳細レベル表現は、ビュー内のディメンションに関係なく、指定されたディメンションを使用して値を計算します。このパーセンテージは全般ディメンション フィルターには影響しません。なぜでしょうか。これは、FIXED 詳細レベルの式はディメンション フィルターを適用する前に計算されるためです。
詳細については、Tableau での詳細レベル表現の作成を参照してください。
FIXED 詳細レベルの式は、"Sales (売上高)" の合計 (特定のメジャー バリューに対する) をビューの "Sales (売上高)" の合計で除算する必要があります。分子は集計されるため、分母も集計する必要があります。したがって、次のような式を作成します。
SUM([Sales])/SUM({FIXED : SUM([Sales])})
その式を "FixedSumOfSales" として保存して [データ] ペインから [列] にドラッグし、表計算を使用する既存の "SUM(Sales)" フィールドの右にドロップします。(比較のためビューに両方を表示したままにします。)これが現在のビューです。
右側のグラフのパーセンテージの数値は、クイック フィルターで選択/選択解除したフィールドにかかわらず、一定になります。後は、"FixedSumOfSales" の値の書式をパーセント表示に設定するだけです。
[列] で "FixedSumOfSales" を右クリックし、[書式設定] を選択します。[書式設定] ペインで、[数値]、[パーセンテージ] の順に選択します。
これで、最終的なビューが得られます。
[サブカテゴリー] クイック フィルターでアイテムを選択/選択解除すると、左側の棒グラフのパーセンテージは変化しますが、右側の棒グラフのパーセンテージは変化しません。