見出し画像

Performance Best Practice(Ord7)

先日、ord7の勉強会に参加してきました。復習して改めて知識が定着できていないことが分かったので、今のうちに記録に残しておきたいと思います。


なぜパフォーマンスが大事か

タスクに対する分析フロー中にパフォーマンス劣化により処理が長時間化した場合、以下のような悪影響が発生してしまいます。
・答えを得るのに時間がかかる
・フローに乗れない
・イライラする
・本当のタスクを忘れる
Tableauの処理フローなどを理解し、パフォーマンス劣化に原因を切り分けて特定し、対処できる必要があります。

前提知識①:処理フロー

処理フローは下記の通りです。Tableau Desktopの場合、DBもTableauも処理を実行しているPCということになります。Tableau Serverの場合、DBはサーバ側、TableauはPC側で処理することになります。

前提知識②:フィルター/計算等処理順

フィルターの処理順は下記の通りです。これらを覚えておくことで、パフォーマンス劣化の原因を突き止め、フィルターを使用し、件数を削減して対応することもできます。(抽出フィルター、データソースフィルター)

1.抽出フィルター

右上の「抽出」ボタンの近くにある「編集」をクリックする
ウィンドウに表示されている「追加」オプションをクリックする
リストからフィルターをかけるフィールドを選択

2.データソースフィルター

「フィルター 追加」をクリック
「追加」をクリック
フィールドを選び、所望のフィルター条件を設定

3.コンテキストフィルター

ディメンションフィルターを右クリックして、コンテキストに追加をクリック
ピルが濃い灰色となる

4.LOD表現(FIXED)

FIXED関数
市区町村レベルのLODのビューの中に、異なるLOD(都道府県)で集計された売上を表示

5.ディメンションフィルター

ディメンションをフィルターに挿入し、リスト等から設定

6.LOD表現(INCLUDE/EXCLUDE)

都道府県ごとに売上を平均
INCLUDE関数を使うことで「オーダー単位」の売上平均にする
右クリックで集計をメジャーを「平均」に変更

7.メジャーフィルター

メジャーをフィルターに挿入し、フィルター範囲の方法とフィルター範囲を設定

パフォーマンスのベストプラクティス

1.Tableau Server vs Tableau Desktop

サーバは同時タスク/同時アクセスを処理しているため、Tableau Desktopで表示が遅くてもTableau Serverで高速に表示できるわけではないです。

2.データ量 vs パフォーマンス

近年、ハードウェアの性能が向上する一方で、データ量も増加傾向です。ハードウェアなどの性能には上限があるので、データ量を適切な量にして処理する必要があります。

  1. レコード数を削減する(抽出/データソースフィルターを利用)

  2. ディメンション項目におけるNULLを避ける

  3. DB側で集計済みデータを準備する

3.結合 vs ブレンディング vs クロスデータベース結合

結合/ブレンディング/クロスデータベース結合の概要
結合/ブレンディング/クロスデータベース結合の違い

4.ライブ接続 vs 抽出接続

データエンジンとは、データの読み込み、変換、最適化、クエリの実行を担当する部分です。データの抽出を行う際にはデータエンジンが使われます。最適化されていないデータベースではデーエンジンが早いので抽出の方が早くなりますが、きちんと最適化されたデータベースの場合データエンジンが比較的遅いのでライブ接続の方が早いです。

5.計算フィールド vs ネイティブ機能

ネイティブ機能は計算フィールドよりも速いので、ネイティブ機能をなるべく使いましょう。

■データ型の速さ
整数型>ブール型>文字列型
なるべく文字列を使わない方がよいです。例えば、パラメータには整数を、ロジック計算にはブール値を利用するのが望ましいです。

■日付関数
日付になっていない型を日付に変換する場合、計算フィールドではなく、できるだけネイティブ機能を利用するのが望ましいです。

ネイティブ機能による日付型変換

■日付フィルター
日付フィルターには以下の三種類があります。この中では、相対日付フィルターが最も処理スピードが速くなります。

  1. 不連続フィルター

  2. 連続フィルター

  3. 相対日付フィルター

6.クイックフィルター vs アクションフィルター

クイックフィルターにて、項目表示する際にもクエリの処理を行っています。したがって、クイックフィルターの項目数が多い場合はパフォーマンスに影響が出る場合があります。そのような場合は、カスタムリストなどの利用が望ましいです。
ただ、Tableauの利点を活かすのであれば、クイックフィルターはなるべく少なくし、アクションフィルターを活用することを考えながらダッシュボードを作成する必要があります。

いいなと思ったら応援しよう!