試してみる前に
Tableau Desktopの「パフォーマンスの記録」機能でダッシュボードの表示が遅い原因を探る
・どのシートが遅いか
・パフォーマンスを測る指標のどの項目で時間がかかっているか
・問題がありそうなのはサーバー側かTableau側か、など
遅い原因の見当をつけてからチューニングを行うのが良いと思います。
試したいこと10選
1. 抽出を使用する
これは初歩的なことだと思いますが、データ数に問題がない場合は抽出を検討しましょう。
※レコード数が数億になってくると抽出は厳しいです。
2. シートを減らす
一つのダッシュボード内にシートを詰め込みすぎると表示に時間がかかります。本当に必要なシートなのかを検討する or ダッシュボードを分けることを検討しましょう。
3. シート内のマーク数を減らす
例えば下記のシートのように、表示しているマーク数が多いと遅くなります。
・フィルターを上手く活用して表示するマーク数を減らす
・シート内のメジャーおよびディメンションの数を制限してマーク数を減らす
4. 文字列型のカラムを数値型へ変換
整数 > ブール値 > 文字列 の順で速いです。
パラメータを利用して文字列型カラムを数値型にする。また、IF文やCASE文で文字列を使用して複雑な計算をしている場合は、数値型へ変換する。
5. テキストが多いシートを見直す
Excelで見かけるようなクロス集計表等のテキストが多くなるシートは、やはり遅くなるので避けるべきです。
本当に必要なシートか検討しましょう。
6. コンテキストフィルターを上手く使う
データ数を大きく絞り込むことができるフィルターをコンテキストに追加することで、その他のフィルターの処理速度が向上する可能性があります。
7. LOD計算を見直す
通常の計算より遅いため、使わなくても表現できそうかを確認する。
処理速度が大きく変化する可能性があります。
8. 未使用のフィールドはデータペインで非表示にする
非表示にしてもファイルのサイズ自体に変化はないですが、非表示にすることでダッシュボード内で集計する際に、読み込むデータの要素を減らすことができます。特にフィールドが数百とある場合は試してみるのが良いと思います。
※データが除外されるわけではないので、非表示フィールドを再表示できます。
9. データソースがサーバー(BigQuery等)に格納されている場合は、サーバー側のテーブルのチューニングを見直す
BigQueryの場合は、パーティショニングやクラスタリングを設定することで、ダッシュボード内の集計で不必要なデータのスキャンを避けることが可能です。BigQueryに限らずサーバー側でできることはやっておきましょう。
10. 複雑な計算はサーバー側にしてもらう
データソースがサーバー(BigQueryやSnowflake等)に格納されている場合は、サーバー側のスペックを利用してテーブル内で集計してしまうのが良いと思います。
サーバー側でできることはやっておきましょう。
以上です。