Tableauの標準機能の1つ、パフォーマンスログをご紹介します
Tableauで作成したワークブック(Desktop)やビュー(TableauServer等)を開いて表示する際、何の処理にどれくらい時間がかかっているか調べることができるパフォーマンスログについてご紹介します。
パフォーマンスログの取得方法
Tableau Desktopでログを取得する方法
Tableau Desktopを使ってワークブックを作成していく中、ダッシュボードの表示に時間がかかるケースなど見られた際に、
パフォーマンスログを取得して、何に時間がかかっているか調べて改善に役立てることができます。
<ログ取得手順>
- Tableau Desktopを開きます。
- メニューバー → ヘルプ → ”設定とパフォーマンス” → ”パフォーマンスの記録を開始” で、ログ取得を開始します。
- ワークブックを操作します。
(ファイルを開く、ダッシュボードのフィルタなどを変更、ソート切替え、選択、パラメータ切替え等)
- メニューバー → ヘルプ → ”設定とパフォーマンス” → ”パフォーマンスの記録を停止” で、ログ取得を終了します。
- 少し待つと、以下のようなパフォーマンスログ用のワークブックが自動で開かれます。
パフォーマンス結果のワークブック表示の例
1)Performance Summary シート
主に、Performance Summary とEvent Sorted by Timeの2つについて確認することができます。
Performance Summaryは、ログを取り始めてからの処理を順に並べて表示したもので、それぞれの処理にどれだけ時間がかかって
いるか確認することができます。デフォルトは0.01秒からのものが表示されるようにセットされていますが、処理時間の長いものだけ表示するように調整することも可能です。
次に、Event Sorted by Timeですがこちらは、各処理イベントでどれだけ時間がかかっているか大きい順にサマリー表示されます。
処理時間が大きいイベントが何か瞬時に把握することができます。
主なイベントは以下となります。
- Executing Query(クエリの実行)
- ライブ接続でクエリに時間がかかりすぎる場合は抽出を検討。
- 抽出でクエリに時間がかかりすぎる場合はフィルタの見直しを検討。(フィルタ削減、コンテキストやアクションフィルタの利用)
- Compile Query(クエリのコンパイル)
- コンパイルに時間がかかる場合は、クエリが複雑なケースが考えられる。(フィルターが多かったり、長い計算やLOD計算、ネストされた計算などで複雑になっているケースの場合、ワークブックの簡略化や計算過程を前処理に移行する等検討)
- Geocoding(ジオコーディング)
- データ量を減らすことを検討(少ないデータを利用するか、フィルタの利用など)
- Connecting to Data Source(データソースへの接続)
- 接続が遅い場合は、ネットワーク、またはデータベース、サーバーの問題が考えられる。
- Computing Layout(レイアウト計算)
- ワークブックの簡素化の検討。
- Generating extract(抽出の生成)
- データ量を減らすことを検討(少ないデータを利用するか、フィルタの利用など)
- Blending data(データのブレンド)
- データ量を減らすことを検討(少ないデータを利用するか、フィルタの利用など)
- Server rendering(サーバー レンダリング)※Tableau Server のみ
- 別のマシンで追加の VizQL Server プロセスを実行することを検討。
2)Detail Views シート
こちらは、上級ユーザーが分析に活用できるビューとして用意されています。
- 画面上部は、深度という言わば処理の階層のようなもので、上位のアクティビティによって子アクティビティが生成され、
下層に表示されるようになっています。
※アクティビティとは、ユーザー要求の処理の一部として実行される作業単位です。
- 画面下部では以下3つの観点で確認が可能です。
-排他的なCPU時間は、CPUの大部分を消費するアクティビティを識別するのに役立ちます。
-包括的CPU時間は、CPUの大部分を消費する高レベルのアクティビティを識別するのに役立ちます。
-経過時間(Elapsed Time )は、アクティビティを処理時間が大きい順に確認することができます。
Tableau Serverでログを取得する方法
次はTableau Serverでのログ取得の方法をご紹介します。
<パフォーマンスログの開始>
1)パフォーマンスを記録したいビューを開きます。
ビューを開くと、Tableau Server により URL の後に ":iid=<n>" が追加されます。
(例:http://●●●●●/#/views/××××/▽▽▽?:iid=1)
2)セッション ID の直前、表示 URL の末尾に :record_performance=yes&
と入力します。
(例:http://●●●●●/#/views/××××/▽▽▽?:record_performance=yes&:iid=1)
3)ツールバーで、[更新] ボタンをクリックします。
4)ビューを読み込みます。
パフォーマンスの記録が開始されたことを視覚的に確認するには、[表示] ツールバーの [パフォーマンス] オプションを
使用します。
5)[パフォーマンス] をクリックして、パフォーマンス ワークブックを開きます。
これにより、TableauDesktopでログ取得後にワークブックが起動したのと同じように、新たにブラウザのページが表示され
パフォーマンス結果が表示されます。
これは、通常のワークブックと同様にダウンロードして、TableauDesktopで確認することも可能です。
※TableauServerの場合は、パフォーマンスをクリックする度、最新の状態としてスナップショットで保存されます。
そのままビューの操作を継続して、追加のスナップショットを取ることもできます。(ログが蓄積されていく)
<パフォーマンスログの終了>
別のページへ移動するか URL から :record_performance=yes
を削除すると、記録が停止します。
パフォーマンス分析の例
上記のダッシュボードでパフォーマンス分析をするのは、初めて触る方には難しいかもしれません。
そこで、もう少し簡単な分析の例を紹介させて頂きます。
ワークシート単位でログをチェック
1)まずは、パフォーマンスログを上記のとおり取得する。
※このとき、できるだけ最小のアクションの単位でログを取得してみると、分析がしやすくなります。
例えば、Tableau Desktopを開く ➡ パフォーマンスログを開始する ➡ ワークブックを開く ➡ パフォーマンスログを終了する のようにすることです。
この例は、ワークブックを開くときのパフォーマンスに絞ってログを取得しています。
複数のアクションが混ざると、どの処理に時間がかかっているのかわかりづらくなるかもしれませんので、まずは単体検証がわかりやすいかと思います。
2)Eventsシートに切り替える。
3)Eventシートにて、行の”Start Index”と、マークの”Worksheet”、”Dashboard”、”Data Source”、”Start Index”を削除する。
4)次に、Elapsed Timeをメジャーの合計にする。(マークと行の2か所)
5)EventのElapsed Timeの大きい順にソートする。
これにより、どのイベントで時間がかかっているかまず把握します。
この例では、クエリの実行に12秒も時間がかかっているのと、ジオコーディング、テーブルの計算処理に4~5秒かかっているのがわかります。
それでは、もう少し細かく見て行きましょう。
6)Worksheet単位で処理時間をチェック!
Worksheetを行に追加し、Elapsed Timeの大きい順にソートします。(ソートの設定はネストで行う)
実行結果を見てみると、
-
- 実行クエリでは、今年の製品売上というシートで7秒弱かかっている他、Sales Map、2020_bottom10、2021_bottom10 で1~2秒かかっていることがわかる。
- ジオコーディングでは、Sales Mapのシートで5秒かかっていることがわかる。
- テーブルの計算処理では、今年の製品売上のシートで5秒弱かかっていることがわかる。
このように、シート別で見て行くと、パフォーマンス分析がしやすくなります。
ダッシュボードやデータソースなどの切り口でもチェック
ほかにも、以下のような項目もあり、どのデータソース、どのダッシュボードのパフォーマンスか表示させることができ、
各イベントの具体的なタスク(クエリ実行や、ビューのレイアウト計算等)をみることもできます。
ワークシートを多数使用しているダッシュボードなどは、知らず知らずのうちに処理時間が積み重なって(1シートが僅かな秒数でもちりも積もれば・・・)、全体的に表示が遅く感じてしまうダッシュボードになっている可能性もあり、注意が必要です。
ダッシュボードで扱うシートはなるべく減らすよう心掛けましょう。
また、前段のデータ準備をTableauPrepなどで行っている場合は、TableauDesktopでの計算処理をなるべく減らすように、検討してみてください。一見、Desktop側で計算させるほうが楽かもしれませんが(表計算やLOD計算など)、パフォーマンス面ではできるだけDesktop側はシンプルなものにすると効果的です。
冒頭の「パフォーマンス結果のワークブック表示」で触れた各イベントの確認事項を、ダッシュボードやワークシート、データソースに対して調べていくことで、ネックとなっている箇所を特定し、解消することができるかもしれないので、気になる方はぜひ実行してみてください。
パフォーマンスログは一見難しく見えますが、まずはわかり易い単位で調べてみてはいかがでしょうか?