Tableauの集計済みデータによる高速化
Tableauを高速化する方法の1つとしてデータソースを集計済みデータにする方法があります。
今回は集計済みデータのメリットデメリットを考えて、どのようにデータソース設計をすればよいかを書きたいと思います。
そもそも集計済みデータとは
データソースを集計済みデータにするというのは下記のような購買データ(生データ)をダッシュボード用に事前に集計したデータとなります。
日付 | 顧客ID | カテゴリー | 購入金額 |
---|---|---|---|
2022-01-01 | 1 | 家具 | 1000 |
2022-01-01 | 1 | 家電 | 300 |
2022-01-01 | 2 | 家具 | 500 |
2022-01-02 | 2 | 家具 | 600 |
集計済みデータにする場合はいろいろなパターンがありますが、例えば日付と購入金額での集計済みデータを作成すると以下のようになります。
日付 | 購入金額 |
---|---|
2022-01-01 | 1800 |
2022-01-02 | 600 |
日別の購入金額を表示するのであればこの形がいいでしょうし、月別にするのであればさらに月単位にまとめると1行の結果になります。
集計済みデータのメリット・デメリット
集計済みデータにすると上記の例のようにデータの行数が削減されます。ただし、集計の仕方によっては当初のデータの行数よりも増える場合もあります。
一番のメリットは集計済みデータにすることにより、チャート上での処理が簡単になることでパフォーマンスが向上します。
では、デメリットとしてはデータを集計してしまうことで元の情報が一部なくなってしまうことで、ダッシュボード上でドリルダウン分析を実現することが難しくなります。
上記の集計済みデータの場合、カテゴリーの情報がなくなってしまっているので、
- フィルターでカテゴリーを絞って表示する
- カテゴリーごとの売上の内訳を表示する
- カテゴリー別の売上の推移を比較する
などが実現できなくなってしまいます。
個人的には、BIとしてこのデメリットは大きな問題だと思います。パフォーマンスの向上を目指して集計済みデータソースにした結果、深堀分析できなくなりましたとなってしまう可能性があるのです。
そもそも表示が遅くて活用されないのも問題ですが、速さを求めるあまり集計済みデータソースにする際に仕様をそぎ落としてしまって、浅い分析しかできないダッシュボードにならないかの注意が必要です。
半集計済みデータという考え方
生データでダッシュボードを作成すればパフォーマンスが悪いし、集計済みデータにすると深堀分析できなくなるといった場合に、どちらか一方を選ぶのではなく「半集計済みデータ」を作成するという方式を選ぶのをお勧めします。
データソース設計で、まずは少量のサンプルデータを生データの形でTableauでプロトタイプを作成していきます。すると、この粒度では細かすぎて分析が不要なレベルのものがでてくるはずです。一方で、一旦はこの粒度で分析しないけど、今後この粒度での分析要望はでてきそうだなというものもあります。今後分析要望がでてきそうな粒度は集計しないで、残す方向で設計するのがいいかと思います。
この全てデータソース上で集計してしまうのではなく、ある程度集計した上でさらにTableauで少し集計するというのが「半集計済みデータ」の考え方です。
完全な集計済みデータの方がパフォーマンスがよいことが多いですが、少し深堀分析をできるように半集計済みデータにしておき、パフォーマンス向上はその他の部分で工夫するというのが私の基本的な考え方です。
ユーザがダッシュボードを使い始めて理解が深まってくると、深堀分析のニーズがでてきます。完全な集計済みデータだと、その際に別途一から作り直さなければならないですが、半集計済みデータであれば簡単な改修で済むケースがでてきます。
どの粒度が分析に利用されるかは、マーケッターやアナリスト、データサイエンティストの視点が必要になるので簡単に身につくものではないと思いますが、意識して設計していくことで経験で補える部分も出てくると思います。
まとめ
Tableauの集計済みデータという考え方とメリット・デメリットをまとめた上で、半集計済みデータという考え方を紹介しました。
生データでTableauでゴリゴリ実装するというやり方は、パフォーマンス以外にも品質やメンテナンスの面でも避けた方がいいと思っています。Tableauでのデータの検証のテストは難しいので、極力前処理で計算しておくべきというのが私のスタンスです。
ただ、前処理を行うにはSQLなどTableau以外の知識も必要になり、Tableauが詳しい人はTableauで何とか実装してしまうケースを多く見てきました。
パフォーマンスのことを意識するとなるとSQLの知識は必須かと思いますので、Tableauをある程度理解した人にはぜひSQLも勉強してもらえればと思います。SQLを勉強することで、データソースの考え方が深まるはずです。
Discussion