【MotionBorad】MotionBoardのパフォーマンス改善

BI技術者の雑記

BIツール、MotionBoardで作るダッシュボード。
使用していて表示が遅いと感じることはないでしょうか。

本ブログでは、そんな時に役立つパフォーマンス改善方法を紹介します。

1.はじめに

MotionBoardでボードを作り、いざ表示させると、「しばらく待たないとチャートが表示されない」「操作するたびに何十秒も待たされてしまう」など…。
せっかく作ったボードですが、表示までに時間がかかりすぎるようでは大問題です。

そのようなときにパフォーマンス改善を図れる方法を5つ紹介します。

2.パフォーマンス改善方法5選

最初に紹介する2つの方法は、MotionBoardの設定を一工夫することで余計な待ち時間を減らす方法です。

①表示するデータを絞る

データが多いとチャートの表示には時間がかかります。
検索条件を活用して、必要のないデータはなるべく取得しないように変更しましょう。

例として、店舗ごとの売り上げを分析するボードを作ってみました。
300万件ほどのデータを使用し、集計表と折れ線グラフの2つのチャートを表示します。
関東、東北のように店舗のあるエリアごとに絞って利用するけれど、全国すべての店舗を表示させて利用することはないと仮定します。

ボードを開くと全国すべての店舗の情報が表示されるようになっており、表示するまで毎回8秒待たされていました。
集計表にいたってはデータが多すぎて表示できず、無駄な時間が発生していました。

これらの解決法として、検索条件の編集から初期値を設定します。
今回はエリアの初期値に関東を設定しました。
ボードを開くとエリアがあらかじめ関東で絞り込まれた状態で表示されます。

今回作成したボードでは、最初の表示にかかる時間を8秒から5秒にまで短縮できました。
関東のデータは60万件で、全体の300万件よりもかなり少ないデータで済んでいます。

このように、必要な分だけデータを取得することで、ボードのパフォーマンスを改善することができます。

②無駄な検索が行われないようにする

検索が行われチャートが再表示されるたびにユーザーは待たされることになります。
必要のない検索が行われて待ち時間が発生することは防ぎましょう。

始めに、検索ボタンを押すまで検索が行われないように変更します。
①で作成したボードを引き続き使用します。
このボードにはエリア、店舗、商品分類、商品名の4つの検索条件がありますが、初期状態では条件をひとつ入力するたびに検索が行われており、複数の条件を入力する場合はそれだけ待ち時間が発生していました。

ボード管理>ボード設定から、検索アイテムの待ち時間を「実行しない」に変更します。

このままだと検索を行う方法がないため、ボードに検索用のボタンを配置します。
ボタンのアクションには、検索アクションを設定しボード上のチャートに対して検索が行われるようにします。

これで、検索条件を入力し終えて検索ボタンを押すまで検索が行われることはなくなりました。
検索条件をひとつ入力するたびに無駄に待たされていた時間がなくなります。

次に、ボードを開いたときにデータを取得しないようにします。
チャートをクリックし、プロパティを開きます。

初期ロードの、「ボードオープン時にデータを取得しない」にチェックを入れます。
必要に応じて代替テキストを設定してください。

これで、ボードが開かれた時にデータの取得が発生しないため、その分ボードの表示完了までの時間が短縮されます。
今回作成したボードでは、表示が完了するまで5秒から3秒にまで短縮できました。

最初にチャートが表示されていなくても問題ない場合には、ぜひ使ってみてください。

●チャートを非表示にしてデータ取得を防ぐ方法

上記で紹介したボードオープン時にデータを取得しないにチェックを入れる方法の他に、チャートそのものを非表示にしておく方法があります。
非表示状態のチャートはボードが開かれても読み込まれることがないため、その分ボードの表示完了までの時間を短縮できます。

ボード管理>アイテム管理から対象のチャートを右クリックし非表示にしておき、検索アクションを行うタイミングで表示させることで実現できます。

③データソースを見直す

ここからは、チャートの表示までに時間がかかる問題を解決する方法の紹介です。

チャートの表示にどの程度時間がかかっているかを知るには、画面上部の表示>データセット情報を見ましょう。
確認したいデータソースの詳細から下図のような情報が見られます。

クエリー処理時間がデータ取得にかかった時間です。
MotionBoardではなくデータベース側でかかった時間になります。
例えば、参照しているビューが多くのテーブルを結合させていた多くの項目を取得していたりすると、データの取得に時間がかかり、結果的にチャートや明細表の表示までに時間がかかります。
SQLの見直しやビューのテーブル化を行うことで、パフォーマンスが改善できる場合があります。

クエリー処理時間とは別に、全体処理時間も表示されています。
これはデータの取得からMotionBoardでの集計処理が完了するまでにかかった時間で、全体処理時間からクエリー処理時間を引いたものがMotionBoardでの集計処理自体にかかっている時間になります。
1つ目に紹介した表示するデータを絞る方法は、このMotionBoardでの集計処理時間の短縮を図っています。
クエリー処理時間は短くても全体処理時間が長い場合は、検索条件の入力を必須にするなどデータ量を抑えることを検討してください。

④チャートのデザインを再検討する

MotionBoardでボードが表示されるまでには、データの取得・集計の他に事後計算項目の集計とチャートの描画が行われます。
3つ目の方法で確認した、全体処理時間は短いのにチャートの表示までに時間がかかる場合、事後計算項目の集計とチャートの描画に時間がかかっている可能性があります。

事後計算項目は集計結果をさらに集計できる項目です。
構成比を計算したり前月と値を比較したりと分析に役立つ項目ですが、その計算が複雑な場合に処理に時間がかかってしまうことがあります。
計算を簡略化することで、パフォーマンス改善が期待できます。

また、項目が多いチャートや凝ったデザインのチャートは、描画に時間がかかりパフォーマンスが低下します。
項目の数を減らしたりシンプルなデザインにしたりすることで改善できる可能性があります。

こちらの2つの集計表は、どちらも同じビューを用いていて全体処理時間も同じです。
しかし、できる限り項目を減らした下の集計表の方が0.5秒程度、早く表示されます。

⑤動作環境を見直す

データベースやBI製品には、マニュアルやサイトに動作環境が記載されています。
MotionBoardもマニュアル内で記載があります。

ボードの設定やデータ取得の問題ではなく、メモリがマニュアル記載の動作環境に足りていなかったり他のアプリケーションを一緒に動かし過ぎていたり、使用しているPCに問題がある場合もあります。
サーバやクライアント端末が条件を満たしているか確認してみましょう。

例えばMotionBoardの場合、MotionBoard Ver.4.1のサーバの動作環境はメモリ使用量が8GBでした。
しかし、MotionBoard Ver.5.0からはメモリ使用量が16GBに増えています。
バージョンアップの際に動作環境が変更される場合もあるので注意しましょう。

3.おわりに

MotionBoardで、「表示が遅い」「待たされてばかりだ」という場面には時々遭遇します。
解決方法もひとつではないため、色々な方法を試してみてください。

特に3つ目に紹介したデータセット情報の確認は、パフォーマンスが良くない原因を探る際にとても役立つと思います。

今回の内容をぜひご参考にしていただき、ボード作成にご活用いただければ幸いです。
最後までお読みいただきありがとうございました。

BI_banner01.png