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

完了

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

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

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

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

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

セマンティック モデルのメジャーとクエリを確認して、必要な結果を得るために最も効率的な方法を確実に使用するようにする必要があります。 開始点は、コード内に存在するボトルネックを特定することです。 セマンティック モデルの中で最も時間がかかるクエリを特定するときに、まず最大のボトルネックに焦点をあててから、他の問題に対処するための優先順位の一覧を作成できます。

パフォーマンスの分析

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 のオプションには、次のものがあります。

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

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

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

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

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

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

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

    • 列のプロファイル - 縦棒統計グラフと列分布グラフを表示します。

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

Note

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 で自動の日付/時刻を適用する」を参照してください。