Tableauのフィルターについて
Tableauで使用できる様々なフィルターの種類とその使用方法を解説します。どの順番でフィルターが適用されるかを理解して(クエリパイプライン)、データの絞り込みを効果的に行えるようになりましょう。
自身のためにも覚書!
データ:サンプルスーパーストア
クエリパイプライン
Tableauには大きく分けて6種類のフィルターが用意されており、複数の段階でフィルターがかけられます。各フィルターとほかの処理の実行される順序は以下となります。
フィルターの種類
クエリパイプラインのフィルター6つを解説します。
●抽出フィルター
抽出フィルターはTableauで最初にかかるフィルターで、抽出データをフィルターします。データ量の削減、パフォーマンスの改善に効果があります。
規定では「ライブ」になっていますが「抽出」を選択して、フィルターをかけるところは「編集」をクリックします。
データの抽出ウィンドウが立ち上がります。
フィルターの「編集」をクリックします。
フィルターの追加をクリックし、例として「カテゴリ」を選択します。
必要なデータ
テクノロジー、家具を選択します。
すると、フィルターのところにカテゴリのテクノロジーおよび家具を保持
という文言が表示され、抽出されたことが確認できます。
カテゴリの事務用品を含む行は削除され、抽出してくるフィルターをかけました。Tableauは扱うデータが少ない分パフォーマンスが良くなります。
またそもそもフィールドを削除したい場合は、フィールド名の右上にある▼ボタンから「非表示」を選択します。
抽出を選択した状態で「シート」へ移動すると
Tableauの抽出ファイル「.hyper」がファイルを保存する指示があります。
これを保存すれば実際にデータから抽出されたファイルが作られ、これに対してTableauの操作していくことになります。
●データソースフィルター
データソースフィルターは2番目にかかるフィルターです。
データソース全体をフィルターするため、ワークブックにある全てのシートでデータソースフィルターがかかったデータを使用することになります。
データソースの右上に表示されているフィルター項目の下にある「追加」をクリックすると、編集ウィンドウが立ち上がります。
今のところフィルターは空ですが追加ボタンを押すと、フィルターを追加する事ができます。
先ほどと同じように必要なフィールドを選択します。
絞り込む内容を設定すればフィルターをかける事ができます。
抽出フィルターを作成し、抽出されたファイルに接続している状態で
更にデータソースにフィルターを適用していることになります。
なので、このデータソースフィルターは抽出フィルターの後に適用されます。
ライブ接続の場合は抽出フィルタはかからないので、一番初めにかかるのはデータソースフィルターとなります。
●コンテキストフィルター
「フィルタ」シェルフでかけるフィルターの中では最初に作用するフィルターです。
特徴としては、フィルターシェルフ内で最初に適用されるフィルターになります。複数のフィルターがある場合は並列に適用されますが、コンテキストフィルターを設定するとそのフィルターが最初に独立して適用されるように定義できます。
●ディメンションフィルター
「フィルター」シェルフにディメンションをドロップしたものは、4つの種類でフィルターがかけられます。
①全般
フィルター条件をリストから設定する事ができます。
一般的にはビューに残したいものにチェックを入れて使用しますが、右下にある「除外」にチェックを入れると除外条件として利用する事もできます。
②ワイルドカード
ワイルドカードではフィルター条件を[全部一致][前方一致][後方一致][完全一致]などの検索条件を使って設定します。
例えば「道」の部分一致であれば北海道のみ表示されます。
③条件
条件ではディメンションの各値が持つ集計結果からフィルター条件を設定します。
[フィールド設定]を選択した場合は、規定にフィールドから集計条件を選択できます。[式指定]では関数なども利用した柔軟な条件を作成できます。
例えばフィールドの指定
利益の合計が500000より大きい都道府県フィルターをかけます。
④上位
上位ではディメンションの各値が持つ集計結果のランクからフィルター条件を設定します。
[フィールド指定]を選択した場合は、規定のフィールドの集計結果によるランクを基に条件を作成できます。[式指定]では条件タブ同様に任意の計算式で定義できます。
例えばフィールド指定
利益の合計上位5位をフィルターします。
●メジャーフィルター
「フィルター」シェルフにメジャーをドロップしたものは、4つの種類でフィルターがかけられます。
①値の範囲
保持を行う値の最小値と最大値を設定します。
②最小
保持を行う値の最小値を設定します。
③最大
保持を行う値の最大値を設定します。
④特別
NULLを含める、NULL以外の値、を選択することができます。
●表計算フィルター
表計算フィルターは最後にかかるフィルターで、表計算を使った計算フィールドを使うフィルターです。後ほど詳しく説明します。
フィルター使用例
製品ごとの売上棒グラフで見ていきます。
地域をフィルターへドラック&ドロップします。
東北地方を選択してOKします。
更に製品名をフィルターへドラック&ドロップします。
合計売上の上位5位を選択します。
すると上位5位に設定したにもかかわらず。
1つの製品しか表示されないという結果となりました。
フィルターの2つは並列の処理されるため全国で売上5位となっている製品で、東北地方でフィルターされて絞られているためとなります。
東北地方に絞って更に上位5位の製品をフィルターするには、先に東北地方フィルターをかかるように設定します。
クエリパイプラインの中でコンテキストフィルターにしたことで、上位5位より先にフィルターされるという処理を実現する事ができました。
次に
表計算フィルターを使用した場合の例を説明します。
前年比成長率を表示します。
売上も表示します。
売上を上に前年比成長率を下に表示します。
表示名が分かりづらいので「前年比成長率」へ変更します。
フィルターを設定していきます。
オーダー日を年でフィルターします。
2016年だけ選択します。
すると、前年比成長率がNULLになってしまいました。
これはクエリパイプラインで話すと、2016年のディメンションフィルターが先に適用され、その後に前年比成長率の表計算が行われるため2016年に絞って表計算しようとすると前年の値がないため、前年比成長率がNULLになってしまいます。
なのでディメンションフィルターで日付をフィルターするのではなく、表計算でフィルターをかけて解決したいと思います。
フィルターのオーダー日を外して、計算フィールドを作成します。
LOOKUP関数
STR(LOOKUP(MAX(YEAR([オーダー日])),0))
現在の行の「オーダー日」の最大値を取得します。
出来上がった「表計算フィルター」を数値から文字列へ変更します。
確認のため行へ入れてみると計算式で「年」が取得できていることが分かります。
表計算フィルターをフィルターへ入れて「2016」を選択しOKします。
すると先ほど表示出来ていなかった前年比成長率が表示されました。
表計算の後に表計算フィルターがかかるため、前年比成長率が計算された後に2013年のフィルターがかけられたということになります。