
5. HandsOn - Intermediate IIでの新たな発見
Ordealがどんどん難しくなってきました。
「統計と予測」「分布の確認」といった専門的なところもTableau に準備されているアナリティクス機能を使えば、専門知識がなくても分析できてしまいます。
いかに楽して分析するか!という究極のめざすところに向けて、日々Tableau さんと向き合っています。毎日新たな発見だらけです。
ということで、今回はOrd5をやってみてのTipsです。
1.コンテキストフィルター
まだまだ私も自分のものになっていないのですが、Tableau ではいくつもあるフィルター等に優先順位がついています。
いわゆる、クエリーパイプラインです。

コンテキストフィルターはダッシュボードやシートで一番最初に実行されるフィルターなので、この特性を活かして以下のような使い方ができます。
▼特定のディメンジョンに絞って上位/下位を抽出する
おなじみのサンプルスーパーストアのデータには、カテゴリ>サブカテゴリという階層のついたディメンジョンがあります。
サブカテゴリ別の売上(次を使用して計算:表/下)に順位をつけると下図の真ん中ピンクの丸にあるようになると思います。
ちなみに、カテゴリ内に区切って(次を使用して計算:ペイン/下)順位をつけると右側の水色四角にあるようになります。

サブカテゴリで売上のTOP3でフィルターすると、家具の椅子・本棚と家電のコピー機が表示されます。(上の図のピンクの丸の順番)
ここまではシンプルです。

カテゴリ:家具の中で売上TO3のサブカテゴリを表示したい時にどうするか。シンプルに[カテゴリ:家具]をフィルターにいれると椅子と本棚の2つしか表示されません。
これは、クエリ―パイプラインでは、ディメンジョンフィルターよりも上位/下位の抽出の方が上位にあるからです。「サブカテゴリで売上TOP3」がフィルターされた後に「家具」がフィルターされた状態になってしまっています。

そこで登場するのがコンテキストフィルターです。[カテゴリ:家具]のフィルターをコンテキストに追加すると、上位/下位の抽出よりもコンテキストフィルターの方が上位にあるため、「家具」でフィルターされた後に「サブカテゴリで売上TOP3」がフィルターされ、家具の中で売上TO3のサブカテゴリが表示されます。(上の図の水色の順位)
このように一番最初に実行されるという特性を活かしたフィルターが可能です。
フィルターのディメンジョンを右クリック>コンテキストに追加(グレーマークに変化)

ちなみに、フィルターの順番が重要という意味では、ディメンションフィルターとメジャーフィルターの順番をうまく活用することでコンテキストフィルターを使わなくても同じ表現ができます。
[カテゴリ:家具]をフィルターに追加するところは同じです。そこに、売上合計のランク(メジャー)からTOP3を抽出する条件を追加すれば、ディメンションの「家具」でフィルターされた後に、メジャーの「売上TOP3」でフィルターされるので同じ結果になります。

▼パフォーマンス改善
一番最初に実行されるということは、コンテキストフィルターを通過するデータのみが処理することになるので、パフォーマンスを改善する効果があると言われています。
ディメンションフィルターやメジャーフィルターはデータソースの全ての行にアクセスするため、データ量が多いとパフォーマンスが悪化しがちです。コンテキストフィルターを活用すれば、ディメンションフィルターやメジャーフィルターがアクセスする行数自体を減らしてしまえるのでパフォーマンスを改善することができるというロジック。
ですが、そもそも不要なデータがあるなら抽出フィルターやデータソースフィルターといったデータを取り込む段階で抽出しておいた方が、根本的なパフォーマンス改善につながると思います。
2.属性
またまた新しい概念です。
属性ってなに??って感じでした。
辞書を引くとこんな感じですが、まったく意味不明…
ぞく‐せい【属性】の解説
1 ある事物に属する性質・特徴。「ゴムの—である弾力性」
2 哲学で、事物が本来具有する根本的性質。それなしには実体が考えられないような本質的な性質。
3 コンピューターで、ファイルのもつ性質。また、表示・印刷などの際に設定する特性。アトリビュート。
Tableau では、基本的にディメンションは右クリックで[属性]を選ぶことがきます。
[属性]になるとディメンションはどうなるのか。
ざっくり言うと、ディメンションは分類に使う項目なので分類するための情報を持っています。それが[属性]になると分類するための情報がなくなって単なるラベルみたいになる、というのが私の理解です。
なので、詳細レベルに影響を与えません。
ここからは、私が実際に遭遇した[属性]に関する事例です。
ダッシュボード用の選択カードを作ろうと思い、マークカードの[テキスト]に表示したい情報を入れました。
当然ですが、オーダー日の年と売上合計が表示されています。

次に、ツールヒントに顧客区分を追加したかったので(テキストとしては表示しない)、マークカードの[詳細]に[顧客区分]を入れました。
そうすると、ツールヒントで[顧客区分]を選ぶことができるようになりましたが、テキスト部分が3つの塊に分かれてしまいました。
一つ下の属性③の画像と見比べてみるとわかるのですが、売上合計が顧客区分別に分類されてしまっています。


ここで登場するのが[属性]です。
顧客区分別に分類はさせたくないけどラベル情報としては欲しいので、[顧客区分]を[属性]にすると、テキストは元に戻りました。
ツールヒントでも[顧客区分]が選べます。

属性については、この後のOrdでも出てきます。
いくつかWOWをやってみた中でも、Bizの細かい調整をするために属性を使ったりしているので、美しいBizを作るために役立つテクニックなのではと感じています。