メジャー、リレーションシップ、ビジュアルのパフォーマンスを確認する

完了

セマンティック モデルに複数のテーブル、複雑なリレーションシップ、複雑な計算、複数のビジュアル、または冗長データがある場合、レポートのパフォーマンスが低下する可能性があります。 レポートのパフォーマンスが低いと、ユーザー エクスペリエンスが低下します。

レポートのパフォーマンスに影響する要因のスクリーンショット。

パフォーマンスを最適化するには、まず、問題の原因を特定する必要があります。つまり、レポートとセマンティック モデルのどの要素がパフォーマンスの問題を引き起こしているかを特定する必要があります。 その後、これらの問題を解決するための措置を講じることで、パフォーマンスを向上させることができます。

レポート パフォーマンスのボトルネックを特定する

レポートで最適なパフォーマンスを実現するには、クエリとメジャーの実行速度が速い、効率的なセマンティック モデルを作成する必要があります。 基礎が良好な場合は、クエリ プランと依存関係を分析し、必要な部分を変更してパフォーマンスの最適化を進めると、モデルをさらに改善できます。

必要な結果を得るのに最も効率的な方法を使用していることを確認するには、セマンティック モデル内のメジャーとクエリを確認する必要があります。 開始点は、コード内に存在するボトルネックを特定することです。 セマンティック モデルで最も遅いクエリを特定すると、まず最大のボトルネックに注目し、他の問題を解決するための優先順位リストを作成することができます。

パフォーマンスを分析する

Power BI Desktop でパフォーマンス アナライザーを使用すると、ユーザーが各レポート要素を操作したときに、各レポート要素のパフォーマンスの状況を確認できます。 たとえば、ユーザーの操作によって開始されたときに、特定のビジュアルが更新されるまでにかかる時間を特定できます。 パフォーマンス アナライザーは、パフォーマンスの問題の原因となっている要素を特定するのに役立ちます。これは、トラブルシューティング時に有用です。

パフォーマンス アナライザーを実行する前に、分析 (テスト) で最も正確な結果が確実に得られるように、ビジュアル キャッシュとデータ エンジン キャッシュを必ず消去した状態で開始します。

  • ビジュアル キャッシュ - ビジュアルを読み込む場合、Power BI Desktop を閉じて再度開かない限り、このビジュアル キャッシュをクリアすることはできません。 使用中のキャッシュを回避するには、ビジュアル キャッシュがクリーンな状態で分析を開始する必要があります。

    ビジュアル キャッシュがクリアであることを確認するには、Power BI Desktop (.pbix) ファイルに空白ページを追加し、そのページを選択した状態でファイルを保存して閉じます。 分析する Power BI Desktop (.pbix) ファイルを再度開きます。 これで、空白のページで表示されます。

  • データ エンジン キャッシュ - クエリが実行されると、結果がキャッシュされるため、分析の結果が誤解を招く可能性があります。 ビジュアルを再実行する前にデータ キャッシュをクリアする必要があります。

    データ キャッシュをクリアするには、Power BI Desktop を再起動するか、DAX Studio をセマンティック モデルに接続して "キャッシュのクリア" を呼び出します。

キャッシュをクリアし、空白のページで Power BI Desktop ファイルを開いたら、表示 タブに移動して パフォーマンス アナライザー オプションを選択します。

分析プロセスを開始するには、記録の開始 を選択し、分析するレポートのページを選択して、測定するレポートの要素を操作します。 作業中、操作の結果が パフォーマンス アナライザー ペインに表示されます。 終了したら、停止 ボタンを選択します。

パフォーマンス アナライザーの開始画面のスクリーンショット。

詳細については、パフォーマンス アナライザーを使用してレポート要素のパフォーマンスを確認するを参照してください。

結果の確認

パフォーマンス テストの結果は、パフォーマンス アナライザー ペインで確認できます。 期間 (最長から最短) 順にタスクを確認するには、期間 (ミリ秒) 列ヘッダーの横にある 並べ替え アイコンを右クリックして、降順合計時間 を選択します。

アナライザーで結果を並べ替える方法を示すスクリーンショット。

各ビジュアルのログ情報は、次のカテゴリのタスクが完了するまでにかかった時間 (期間) を示します。

  • DAX クエリ - ビジュアルがクエリを送信するためにかかった時間と Analysis Services が結果を返すためにかかった時間の合計。

  • ビジュアルの表示 - ビジュアルが画面にレンダリングされるまでにかかった時間 (Web イメージやジオコーディングの取得に要する時間を含む)。

  • その他 - ビジュアルが、クエリの準備にかかった時間、他のビジュアルの完了を待っていた時間、または他のバックグラウンド処理タスクの実行にかかった時間。 このカテゴリに長い期間が表示される場合、この期間を短縮する現実的な方法は、他のビジュアルの DAX クエリを最適化するか、レポート内のビジュアル数を削減するしかありません。

パフォーマンス アナライザーの結果のカテゴリのスクリーンショット。

分析テストの結果は、セマンティック モデルの動作を理解し、最適化する必要がある要素を特定するのに役立ちます。 レポート内の各要素の期間を比較して、長い期間を要している要素を特定できます。 これらの要素に焦点を当て、レポート ページに読み込むために時間がかかる理由を調査する必要があります。

クエリをより詳細に分析するには、DAX Studio を使用します。これは、別のサービスによって提供される無料のオープンソース ツールです。

問題の解決とパフォーマンスの最適化

分析の結果により、改善の余地がある領域やパフォーマンスの最適化の可能性が特定されます。 ビジュアル、DAX クエリ、またはセマンティック モデル内の他の要素を改善する必要が生じることがあります。 以下では、何を調べる必要があるか、またどんな変更が可能であるかについてガイダンスとなる情報を提供します。

ビジュアル

ビジュアルがパフォーマンス低下を引き起こしているボトルネックであることが判明した場合、ユーザー エクスペリエンスへの影響を最小限に抑えてパフォーマンスを向上させる方法を見つける必要があります。

レポート ページのビジュアルの数を考慮に入れてください。ビジュアルが少ないほど、パフォーマンスが向上します。 ビジュアルが本当に必要であるかどうか、それがエンド ユーザーに付加価値を与えるかどうかを自問してみてください。 答えが "いいえ" であれば、そのビジュアルを削除する必要があります。 ページで複数のビジュアルを使用するのではなく、ドリルスルー ページやレポート ページのヒントなど、他の方法で追加の詳細を提供することを検討してください。

各ビジュアルのフィールド数を調べます。 レポート上のビジュアルが多いほど、パフォーマンスの問題が発生する可能性が高くなります。 さらに、ビジュアルが多いほど、レポートに表示される情報が密集して、わかりにくくなります。 ビジュアルのフィールド数 (メジャー数または列数) の上限は 100 個です。このため、フィールド数が 100 を超えるビジュアルは、読み込みの速度が低下します。 ビジュアル内でこのすべてのデータが本当に必要であるかどうかを自問してみてください。 現在使用しているフィールド数を削減できる可能性があります。

DAX クエリ

パフォーマンス アナライザー ペインで結果を調べると、Power BI Desktop エンジンが各クエリを評価するのにかかった時間 (ミリ秒単位) を確認できます。 120 ミリ秒より長くかかっている DAX クエリから調べることをお勧めします。 この例では、評価時間が長い 1 つのクエリを特定しています。

パフォーマンス アナライザーの評価時間が長い例のスクリーンショット。

パフォーマンス アナライザーでは、潜在的な問題は強調表示されますが、それを改善するために何をする必要があるのかは表示されません。 このメジャーの処理に時間がかかった理由をさらに調べることをお勧めします。 クエリをより詳細に調べるには、DAX Studio を使用します。

たとえば、クエリのコピー を選択して、計算式をクリップボードにコピーし、それを Dax Studio に貼り付けます。 その後、計算ステップを詳細に確認することができます。 この例では、注文数量が 5 個以上の製品の合計数をカウントしようとしています。

Count Customers =
CALCULATE (
    DISTINCTCOUNT ( Order[ProductID] ),
    FILTER ( Order, Order[OrderQty] >= 5 )
)

クエリを分析した後、自身の知識と経験から、パフォーマンスに問題がある箇所を特定することができます。 また、さまざまな DAX 関数を使用してみて、それらによってパフォーマンスが向上するかどうかを確認することもできます。 次の例では、FILTER 関数が KEEPFILTER 関数に置き換えられています。 パフォーマンス アナライザーで再度テストを実行すると、KEEPFILTER 関数の結果の方が、期間が短くなりました。

Count Customers =
CALCULATE (
    DISTINCTCOUNT ( Order[ProductID] ),
    KEEPFILTERS (Order[OrderQty] >= 5 )
)

この場合、FILTER 関数を KEEPFILTER 関数に置き換えることによって、このクエリの評価時間を大幅に短縮できます。 この変更を行う場合、評価時間が改善されたかどうかを確認するには、データ キャッシュをクリアして、パフォーマンス アナライザー プロセスを再実行します。

パフォーマンス アナライザーの評価時間が短い例のスクリーンショット。

セマンティック モデル

メジャーおよびビジュアルの期間が小さい値を示す (つまり、評価時間が短い) 場合、それらはパフォーマンス問題の原因ではありません。 代わりに、DAX クエリに高い期間値が表示される場合、メジャーが適切に記述されていないか、セマンティック モデルに問題が発生している可能性があります。 問題は、モデル内のリレーションシップ、列、またはメタデータによって発生する可能性があります。または、次のセクションで説明するように、自動の日付/時刻 オプションの状態であることも考えられます。

リレーションシップ

テーブル間のリレーションシップを調べて、正しいリレーションシップが確立されているかどうかを確認する必要があります。 リレーションシップのカーディナリティのプロパティが正しく構成されていることを確認します。 たとえば、一意の値を含む "1" 側の列が "多" 側の列として誤って構成されている可能性があります。 カーディナリティがパフォーマンスにどのような影響を与えるかについては、このモジュールの後半で詳しく説明します。

不要なデータの列をインポートしないのがベスト プラクティスです。 Power Query エディターで列が削除されるのを防ぐには、Power BI Desktop にデータを読み込むとき、ソースで列を処理してください。 ただし、ソース クエリから冗長な列を削除できない場合、またはデータが生の状態で既にインポートされている場合、いつでも Power Query エディターを使用して各列を調べることができます。 各列が本当に必要かどうかを自問し、各列がセマンティック モデルに追加するメリットを特定するようにしてください。 列に値が追加されないことがわかった場合、その列をセマンティック モデルから削除する必要があります。 たとえば、数千もの一意の行を含む ID 列があるとしましょう。 この特定の列がリレーションシップで使用されることはないため、レポートでは使用されないことをあなたは知っています。 したがって、この列は不要であると見なし、セマンティック モデル内のスペースを無駄にしていることを認める必要があります。

不要な列を削除すると、セマンティック モデルのサイズが小さくなり、結果としてファイル サイズが小さくなり、更新時間が短縮されます。 さらに、セマンティック モデルには関連データのみが含まれるため、レポート全体のパフォーマンスが向上します。

詳細については、インポート モデリングのデータ削減手法を参照してください。

メタデータ

メタデータは他のデータに関する情報です。 Power BI メタデータには、各列の名前、データ型、形式、データベースのスキーマ、レポート デザイン、ファイルの最終変更日時、データ更新レートなど、セマンティック モデルに関する情報が含まれています。

Power BI Desktop にデータを読み込むときは、レポートの作成を開始する前に、対応するメタデータを分析してセマンティック モデルとの不一致を特定し、データを正規化することをお勧めします。 メタデータの分析を実行すると、セマンティック モデルのパフォーマンスが向上します。これは、メタデータを分析する際に、不要な列、データ内のエラー、正しくないデータ型、読み込まれるデータの量 (トランザクション データや履歴データを含む大規模なセマンティック モデルは読み込みに時間がかかります) などが特定されるためです。

Power BI Desktop の Power Query エディターを使用して、生データの列、行、値を調べることができます。 その後、次のスクリーンショットで強調表示されているツールなど、利用可能なツールを使用して、必要な変更を加えます。

クエリ エディターの [ホーム] タブ オプションのスクリーンショット。

Power Query のオプションは以下のとおりです。

  • 不要な列 - 各列の必要性を評価します。 1 つ以上の列がレポートで使用されないため、不要な場合は、ホーム タブの 列の削除 オプションを使用して削除する必要があります。

  • 不要な行 - セマンティック モデルの最初の数行をチェックして、空かどうか、またはレポートに不要なデータが含まれているかどうかを確認します。含まれている場合、ホーム タブの 行の削除 オプションを使用してそれらの行を削除します。

  • データ型 - 列のデータ型を評価して、各列が適切な型であることを確認します。 不適切なデータ型が特定された場合、変換 タブで データ型 を選択し、一覧から正しいデータ型を選択して変更します。

  • クエリ名 - クエリ ペインでクエリ (テーブル) 名を調べます。 列ヘッダー名の場合と同様、一般的ではない、または役に立たないクエリ名をわかりやすい名前、またはユーザーが使い慣れた名前に変更する必要があります。 クエリの名前を変更するには、そのクエリを右クリックして、名前の変更 を選択し、必要に応じて名前を編集して、Enter キーを押します。

  • 列の詳細 - Power Query エディターには、列に関連付けられているメタデータを分析するために使用できる次の 3 つのデータ プレビュー オプションが用意されています。 次のスクリーンショットに示すように、これらのオプションは 表示 タブにあります。

    • 列の品質 - 列内の有効な項目、エラーのある項目、または空の項目の割合を判定します。 [有効] の割合が 100 ではない場合、理由を調べて、エラーを修正し、空の値を設定する必要があります。

    • 列の分布 - 各列の値の頻度と分布が表示されます。 この詳細については、このモジュールで後ほど詳しく説明します。

    • 列プロファイル - 列統計グラフと列分布グラフが表示されます。

列プロファイル オプションのスクリーンショット。

1,000 行を超える大規模なセマンティック モデルを確認していて、そのセマンティック モデル全体を分析する場合、ウィンドウの下部にある既定のオプションを変更する必要があります。 上位 1,000 行に基づく列のプロファイリング>データセット全体に基づく列のプロファイル を選択します。

列プロファイル行のスクリーンショット。

考慮すべき他のメタデータは、ファイル サイズやデータ更新レートなど、セマンティック モデル全体に関する情報です。 このメタデータは、関連付けられている Power BI Desktop (.pbix) ファイルで確認することができます。 Power BI Desktop に読み込むデータは、VertiPaq ストレージ エンジンによって圧縮され、ディスクに保存されます。 セマンティック モデルのサイズはパフォーマンスに直接影響を与えます。セマンティック モデルのサイズが小さいほど、使用するリソース (メモリ) が少なくなり、データの更新、計算、レポート内のビジュアルのレンダリングが高速になります。

自動の日付/時刻機能

パフォーマンスを最適化する際に考慮すべきもう 1 つの項目は、Power BI Desktop の 自動日付/時刻 オプションです。 既定では、この機能はグローバルに有効になっています。つまり、特定の条件が満たされている場合、Power BI Desktop は日付列ごとに非表示の計算テーブルを自動的に作成します。 新しい非表示のテーブルは、セマンティック モデルに既に存在するテーブルに追加されます。

自動日付/時刻 オプションを使用すると、カレンダーの期間をフィルター処理、グループ化、ドリルダウンするときにタイム インテリジェンスを使用して操作できます。 カレンダー期間を操作する場合と、時間に関して単純なモデル要件がある場合にのみ、自動日付/時刻 オプションを有効のままにすることをお勧めします。

データ ソースに既に日付ディメンション テーブルを定義している場合は、そのテーブルを使用して組織内の時間を一貫して定義する必要があります。また、グローバルの 自動日付/時刻 オプションを無効にする必要があります。 このオプションを無効にすると、セマンティック モデルのサイズが小さくなり、更新時間が短縮されます。

この 自動日付/時刻 オプションをグローバルに有効/無効にして、すべての Power BI Desktop ファイルに適用することも、現在のファイルに対してこのオプションを有効/無効にして、個々のファイルにのみ適用することもできます。

この 自動日付/時刻 オプションを有効/無効にするには、ファイル>オプションと設定>オプション に移動し、グローバル ページまたは現在のファイル ページを選択します。 どちらのページでも、データの読み込み を選択し、タイム インテリジェンス セクションで、必要に応じてチェック ボックスをオンまたはオフにします。

[自動の日付/時刻] の設定方法を示すスクリーンショット。

自動日付/時刻 機能の概要と一般的な情報については、Power BI Desktop で自動の日付/時刻を適用するをご覧ください。