Tableauのデータ型とパフォーマンス
Tableauのパフォーマンスを考える上でデータ型は非常に重要です。
Tableauのパフォーマンスを向上させるためには、なるべく小さい型を使用することです。
パフォーマンスで考えるとTableauのデータ型は以下の順で使用すべきです。
「ブール値 > 整数 > 浮動小数点数 > 日付 > 日付と時刻 > 文字列」
※ダッシュボードのパフォーマンスを向上させる 6 つのヒント
Tableauのパフォーマンスの記事を見ると多くの記事でこの件が書いてありますが、ここでは実際にどのようなことを考えればいいかを書こうと思います。
データソースのデータ型
まずはデータソースを設計する場合に、以下の観点で見直せないかを検討します。
- NULL以外に値が2種類しかないカラムがないか
- 小数の列を整数のデータ型として持つことはできないか
- 日時データを日付型 または 日付型 と 整数型のカラムに分けて持つことができないか
- 文字列型のデータは値の種類が限られているので、別名を活用して整数型に置き換えられないか?
NULL以外に値が2種類しかないカラムがないか
- 0と1しか持たないフラグのような整数型
- YとNしか持たない文字列型
それ以外にも2種類しか値が持たない場合はブール値型の使用を検討すべきです。
検討する上でのポイントは、「今後データが増えた時にも2種類以上に増えることがないか」 です。
2種類以上に増える可能性がある場合は、整数型で代用できないかを検討した方がいいです。データ型の変更は、影響が大きくなりがちなので今後のデータの増え方も検討すべきです。
ブール値型にする場合は、Trueにどちらの値を設定するかは
- フィルターでよく利用する値
- 計算フィールドで利用する値
など判定条件が = True になるように値を決めるのが望ましいです。
これは、設計上の経験が必要ですので迷った場合は、2種類の中でレコード数の多い値をTrueにした方がうまくいきます。
小数の列を整数のデータ型として持つことはできないか
小数のデータで小数点以下の桁数がどの値も決まっている場合は、整数型に検討できる可能性があります。
例えばパーセント表記するために持っている値は、
「小数型で表示形式を%にする」→「整数型で表示形式で%を後ろにつける」
とすることでうまくいくことがあります。
また整数型にできない場合でも、Tableau上では四捨五入して表示する場合にはデータソースでは厳密な値を持たずに事前に小数第●位までに丸めておくことも、パフォーマンス上いいアイデアです。
日時データを日付型 または 日付型 と 整数型のカラムに分けて持つことができないか
元のデータソースでは日時データ型になっているが、入っているデータは全て日付までで時間の部分が00:00:00 になっていることはありませんか?
これは、日時型を日付型に変えるべき典型的なケースですが、それ以外でも日時型の使用を避けるケースは多くあります。
ダッシュボードでは、実際に秒まで表示することは少なく、時間や分まででまとめられていることが多いと思います。秒まで必要ない場合は、時間や分の整数型のカラムを別途用意して事前にその単位にデータを集計しておくと、パフォーマンスを向上させることができます。
文字列型のデータは値の種類が限られているので、別名を活用して整数型に置き換えられないか?
文字列型はパフォーマンスを悪くする大きな原因の1つです。そのため値の種類が限られている場合は、データをコード値と呼ばれる整数の値に置き換えて、Tableauの「別名」機能を利用して表示時に文字列に置き換えることでパフォーマンスがアップします。
今後、値の種類が増える可能性がある場合は、「別名」の形にするとTableauの再パブリッシュといったメンテナンスが必要になります。めったに変わらない場合は、「別名」の利用すべきですが頻繁に追加される場合は、文字列のデータをデータソース上に持つ必要があります。
「別名」が利用できない場合でも、コード値の整数型のデータを作成することで、パフォーマンスが向上するケースがありますので、そちらは別で記事にしたいと思います。
パラメータのデータ型
パラメータの設定で許容値を「リスト」として使う場合は、データ型を小さくすることができるかもしれません。
- リストが2つしかない場合:「ブール値型」
- リストが3つ以上:「整数型」
文字列になりそうな場合もリストの表示名で別名を設定すれば代用可能です。
Tableauのパフォーマンスを向上させるためのデータ型の考え方をまとめました。データソースのデータ型に関しては、設計時点から上記を意識してデータ型を決めるようにしましょう。
ダッシュボード構築後に遅いからと言って、データ型を変更するのは手間がかかります。一方でパラメータのデータ型変更は意外と行いやすいので、パフォーマンスの影響は小さいですが細かい部分も気にして作ってみてください。
Discussion