Tableauの別名の3パターンの方法とパフォーマンス
Tableauで別名を表示するために、標準の別名機能とは別に2パターンの方法があります。
それぞれの特徴とパフォーマンスへの影響をまとめたいと思います。
Tableauの別名の3パターン
標準の別名機能
Tableau標準で用意されている別名機能です。パフォーマンス上もいいので積極的に活用したい機能です。
欠点としては、以下の2点あります。
- 別名の項目が多数ある場合の設定が大変。
- データ更新時に別名を更新することができない。手動更新が必要。
計算フィールドを利用した別名表示
計算フィールドにIF文やCASE文で別名を記述する方法です。パフォーマンス上もあまりよくなく、メンテナンス性も悪いので使いどころは限られます。
サンプルでTableauのモックを作る際に、標準の別名機能では項目数が多すぎて大変な場合が使う場面かと思います。
Excelの関数を使って計算フィールドの式を作れば、100以上の大量の項目の別名を簡単に設定できます。
そもそもTableau標準の別名機能がパラメータの別名設定のようにコピペができるようになれば、この手法は必要なくなるのですが。。。
別カラムで保持
データ更新時に項目の追加の可能がある場合は、別カラムで保持する方法がいいでしょう。上記2つの方法だとデータ更新の際にTableauの該当の設定を追加する必要があります。
項目の追加の可能性が稀な場合は別名機能を利用して、それなりに項目追加の可能性がある場合は別カラムで保持するのがいいでしょう。
3パターンのまとめ
この3つのパターンをまとめると下記のようになります。
パターン | 手軽さ | 数が多い場合 | 保守性 |
---|---|---|---|
別名機能 | 〇 | ― | ― |
計算フィールド | 〇 | 〇 | ✕ |
別カラムで保持 | ― | 〇 | 〇 |
更新を伴うダッシュボードの場合は別カラムで保持する形が多いと思いますが、パフォーマンスの観点からはデータソースのサイズが大きくなるということです。
例えば、1億レコードある売上データに商品IDに対応した商品名のカラムを追加することを考えてみてください。
商品名のカラムが1億レコード分追加されますが、チャートで表示する項目は少ないですが、データソース上は同じ商品名が多く存在して重複している状態になります。
別カラムでの保持する場合のデータソース削減方法
この重複している部分を削減する方法があります。
それは、商品IDと商品名だけの行を追加して、他の行では商品名のカラムは空にしておく方法です。
具体的には、以下のようなデータソースを
日付 | 商品ID | 商品名 | 売上 |
---|---|---|---|
2020-01-01 | 1002110 | Harbour Creations ロッキング チェア, 2 つセット | 1000 |
2020-01-02 | 1002110 | Harbour Creations ロッキング チェア, 2 つセット | 1500 |
2020-01-03 | 1002110 | Harbour Creations ロッキング チェア, 2 つセット | 800 |
2020-01-04 | 1002110 | Harbour Creations ロッキング チェア, 2 つセット | 2000 |
下記のような形のデータソースに変更します。
日付 | 商品ID | 商品名 | 売上 |
---|---|---|---|
2020-01-01 | 1002110 | 1000 | |
2020-01-02 | 1002110 | 1500 | |
2020-01-03 | 1002110 | 800 | |
2020-01-04 | 1002110 | 2000 | |
NULL | 1002110 | Harbour Creations ロッキング チェア, 2 つセット | NULL |
このような形のデータソースにすることで、商品名のカラムのデータ量を削減できます。
チャートで名称を表示する際には下記のような計算フィールドを作成すればいいです。
{FIXED [商品ID]: MAX([商品名])}
この方法は常に採用した方がいいパフォーマンスチューニング方法ではないです。データソースは小さくなりますが、FIXED式を使っているため処理が重くなります。
データ量が多い場合(目安としては1000万行以上)に、パフォーマンスを検証して採用するかどうかを検討するのがいいと思います。
私が開発した案件でもいくつか採用した実績のあるチューニング方法です。
まとめ
Tableauの別名の3パターンの方法と別名をDBで持たせる際のパフォーマンス改善のアイデアをまとめました。
パフォーマンス改善のアイデア自体はFIXEDを使うだけですので難しくないですが、データソースの持ち方を工夫と併せてTableau機能を活用すると劇的にパフォーマンスが向上することがあります。
ぜひ参考にしていただければと思います。
Discussion