ダッシュボードのパフォーマンスを向上させる 6 つのヒント

Tableau に勤める私たちは、Tableau によって非常に簡単にデータを見て理解できることに大きな誇りを持っています。Tableau を使い始めると、シンプルなビジュアライゼーションにフィールドや式、計算を次々と加えて、直感的に掘り下げていくことができるものの、やがてはレンダリングの速度が次第に遅くなっていきます。応答に 2 秒かかることでオーディエンスを失うこともある世界では、パフォーマンスが非常に重要となります。ダッシュボードのパフォーマンスを改善するためのヒントをいくつかご紹介します。

注: このブログには、Ryan Lempa と Darren McGurran も協力しています。

Tableau に勤める私たちは、Tableau によって非常に簡単にデータを見て理解できることに大きな誇りを持っています。Tableau を使い始めると、シンプルなビジュアライゼーションにフィールドや式、計算を次々と加えて、直感的に掘り下げていくことができるものの、やがてはレンダリングの速度が次第に遅くなっていきます。応答に 2 秒かかることでオーディエンスを失うこともある世界では、パフォーマンスが非常に重要となります。

どこから手を着けるか

ダッシュボードの動作をスピードアップするにはどうしたら良いのでしょうか。最初のステップとして、パフォーマンスを記録して解釈し、問題点を特定する必要があります。パフォーマンスの記録機能は、Tableau のスピードを重視する場合に役立ちます。この機能を使うことで、ダッシュボード上で処理に長い時間がかかっているワークシートやクエリ、長いレンダリング時間を特定することができます。また、クエリのテキストも表示するため、組織内のデータベースチームと協力してデータベースレベルで最適化できるようになります。

処理が遅い原因になっているビューやデータ接続が判明したら、以下の 6 つのヒントを活用して、そのダッシュボードのパフォーマンスを改善しましょう。それぞれのヒントで、パフォーマンス低下の最も一般的な原因とその簡単な解決方法をいくつか示しています。

1.データ戦略でパフォーマンスを改善する

抽出は通常、ライブデータソースよりもはるかに高速に利用でき、特にプロトタイプの作成に適しています。 重要なのは、定義域を指定したデータの部分を使うという点です。データエンジンは、データウェアハウスの代わりになることを目的としたものではありません。迅速なプロトタイプ作成とデータディスカバリを助けるためのものです。

抽出はカラム型ストアであるため、データセットの幅が広くなれば、その分クエリの実行時間が遅くなっていきます。

  • 実行している分析に応じて、フィールド数を最小限に抑えます。[使用していないフィールドをすべて非表示] オプションを使って、使用していない列をデータソースから除いてください。
  • レコード数を最小限に抑えます。抽出のフィルターを使って、必要なデータのみを保持してください。
  • 今後のクエリをスピードアップするために抽出を最適化します。それには計算済みのデータにして、列数を減らし、高速化されたビューを使うようにします。

留意するべきなのは、抽出は必ずしも長期的な解決策だとは限らないという点です。抽出の最大規模は通常 5 ~ 10 億行であり、状況によって異なります。絶えず更新されるデータに対してクエリを実行する場合は大抵、ライブ接続を使ってビューを操作するほうがより的確な結果を得ることができます。

データ抽出の詳細については、以下の追加的なリソースをご覧ください。

ビデオ: 抽出の使用と更新
データの抽出に関するオンラインヘルプ
Tableau データ抽出を理解するために (3 回シリーズ)

2.ビューのマーク数 (データポイント数) を減らす

データの粒度が非常に高い場合、Tableau は各要素をレンダリングして正確に配置しなければなりません。それぞれのマークは、Tableau が解析する必要のある「固まり」を表します。マークが増えれば固まりの個数も増え、たとえばグラフの 1,000 個の点はチャートの 3 本の棒より描画が難しくなります。

多数のクイックフィルターがある大きなクロス集計では、Tableau のビューですべての行とディメンションを表示しようとすると、読み込み時間が長くなることがあります。

ビュー上のマーク (つまりデータポイント) が多すぎても、ビジュアル分析の価値は下がります。大きくて遅い表を手作業で調べる場合、情報過多となり、データを見て理解することが難しくなることがあります。

以下を行うことで、このような落とし穴を回避することができます。

  • 誘導形式の分析にします。表示しようと考えている情報のすべてを 1 つのビューに収める必要はありません。関連するビューをまとめてからアクションフィルターを使って結びつけ、概要から粒度の高いビューへと、考えるスピードで移動できるようにしましょう。
  • 詳細シェルフから不要なディメンションを削除します
  • いろいろと検討します。別タイプのビューにデータを表示してみましょう。

3.フィルターの数と種類を絞り込む

Tableau のフィルターは非常に強力で、表現力に優れています。しかし、非効率的で過剰なフィルターが原因で、ワークブックやダッシュボードのパフォーマンスが低下することもよくあります。留意するべきなのは、フィルターダイアログボックスを表示するとき、Tableau はメンバーを読み込む必要があるとともに、フィルタリングされたディメンションがビューに表示されていない場合は特に、追加のクエリが作成されることがあるという点です。

  • 使うフィルターの数を減らします。ビューのフィルター数が多すぎるとより複雑なクエリが作成され、結果が返ってくるまでの時間も長くなります。フィルターを再確認し、不要なものは削除しましょう。
  • 包含フィルターを使用します。包含フィルターとは異なり、除外フィルターではディメンションの定義域全体が読み込まれます。メンバー数が多いディメンションでは特に、包含フィルターのほうが除外フィルターよりもはるかに高速に実行されます。
  • 連続日付フィルターを使用します。連続日付フィルター (相対日付範囲のフィルター) は、データベースが持つインデックス作成の特性を利用することができ、不連続日付フィルターより高速です。
  • ブール値や数値のフィルターを使用します。PC は、文字列よりもはるかに高速に整数やブール値 (真/偽) を処理します。
  • パラメーターアクションフィルターを使用します。クエリ負荷 (とデータソース全体の処理量) が抑えられます。

4.計算を最適化し計算済みのデータにする

  • データベースで計算を実行します。可能な場合、特に本番環境のビューでは、Tableau でのオーバーヘッドを減らすためにデータベースで計算を実行します。Tableau の計算フィールドには集計計算が適しています。可能な場合、行レベルの計算はデータベースで実行してください。
  • ネストされた計算の数を減らします。計算を展開してから構築する処理は、ネストの階層が増えればその分かかる時間も長くなっていきます (ロシアのマトリョーシカ人形を想像してみてください)。
  • ビューの詳細レベル (LOD) 計算や表計算の粒度を低くします。計算の粒度が高くなると、処理時間も長くなっていきます。
    • LOD - 計算で使っている一意のディメンションメンバーの数を確認してください。
    • 表計算 - ビューのマーク数が増えると、計算にかかる時間も長くなっていきます。

5.Tableau のクエリ最適化機能を利用する

  • 粒度が低いディメンションでブレンドします。ブレンドでメンバーが多くなると、処理時間も長くなっていきます。ブレンドは、リレーションシップのレベルでデータを集計します。行レベルの結合を置き換えるためのものではありません。
  • 結合された表の数を最小限に抑えます。結合が多いと時間もかかります。多数の結合された表でデータ接続を作成している場合は、データベースでビューを計算済みの状態にすることで高速化できる可能性があります。
  • カスタム SQL を削除します。データ接続でカスタム SQL が使われていなければ、Tableau はデータベース最適化のメリットを生かすことができます。

6.ワークブックをクリーンアップする

  • ダッシュボードの対象範囲を狭めます。ダッシュボードでワークシートの数が多すぎると、パフォーマンスに影響することがあります。
  • 使われていないワークシートとデータソースを削除または集約します。無駄のないワークブックが優れたワークブックとなります。

上記に挙げたポイントをはじめとした内容について詳しくは、効率的なワークブックの設計に関するホワイトペーパーをご覧ください。