この記事は GiXo アドベントカレンダー の 15 日目の記事です。
昨日は、トチカチを支える技術でした。
Design & Science Div.の松田です。本記事では、弊チームが利用しているBIツールの一つ「Tableau(タブロー)」のLOD表現を利用にするにあたって注意すべきポイントをご紹介します。
TableauのLODがどのような機能かは、こちらで詳しく説明しています。
- TableauのLOD表現とは(1) | LOD表現の概要について | Tableau分析塾
- TableauのLOD表現とは(2) | INCLUDEの概要と使い方について | Tableau分析塾
- TableauのLOD表現とは(3) | EXCLUDEの概要と使い方について | Tableau分析塾
- TableauのLOD表現とは(4) | FIXEDの概要と使い方について | Tableau分析塾
LODはとてもよく使う機能で、これを使わずに分析することはないといっても過言ではありません。上記のリンク先の「市区町村別の売り上げを全国の売り上げと比較」するケースのように、粒度が違う集計と比較したり、「一人当たりの〇〇」といった指標を出したりする場合に重宝します。
ただし便利な反面、気を付けていなければミスのもとにもなります。Tableauに少し慣れてきてLODを使う機会も多くなってきた方や、これからLODを利用した集計にチャレンジしたい方に向けて、ミスが生まれるケースとその対処法についてご紹介します。
例
下記のようなホームセンターの売上データがあるとします。
まずはカテゴリごとに一人当たりの購買金額を見ていきます。先ほどご紹介した式に加えて、カテゴリごとで一人当たりの購買金額を計算するために、式を以下のように書き換えてみます。
このような結果になりました。
ここで品名のフィルターを使って、「星形オーナメント」を除外してみます。
値が変わったのでフィルターが適用されたように見えます。しかし、察しの良い方はもうお分かりだと思いますが、この計算の最小粒度は会員番号×カテゴリなので、正しい値ではありません。一見正しく反映されているので見落としやすいのですが、ここがLOD表現を使う上での気を付けるべきポイントです。
コンテキストフィルターを適用する
とはいえ、品名を先ほどのFIXEDの式に追加するやり方では、より細かい粒度で平均を計算しようとすることになるため不適切です。そんなときに便利なのが、フィルターをコンテキストフィルターにしてしまうという方法です。
フィルターをコンテキストに追加すると、LODで定めている粒度を無視してフィルターを適用することができます。どうしても粒度を変えられないときや、すぐにフィルターの適用結果を確認したいときに有効です。以下の方法で簡単に設定できます。
適用させようとしていたフィルターの上で右クリック⇒「コンテキストに追加」
これで正しい値になりました。コンテキストに追加されているフィルターはグレーになっています。
これで正しい値になりました。コンテキストに追加されているフィルターはグレーになっています。
このようなケースは、計算している粒度より細かい粒度でフィルターやディメンションを追加したときに発生します。特にフィルターの数や計算フィールドを増やしていく過程で起こりやすいので注意しましょう。もちろん、最初から品名でフィルターをかけることを想定して、詳細レベルより細かい粒度での計算を行う「INCLUDE」を使うことも有効です。
おわりに
数字が常に正しいかどうかを気にしながら作業するのは非常に神経を使いますが、有象無象のデータの山を整理し、可視化して意味のあるものに変えていくというのはとてもやりがいのある仕事です。こういったミスのせいでせっかく作った可視化の価値を損なわないよう、私も日々注意していきたいと思います。
明日は「Firestore のデータを TypeScript と Security Rules で安全に扱う話」を公開予定です。
Mizuki Matsuda
Design & Science Div. 所属
データ分析業務を担当。大阪オフィス勤務。