ベストプラクティスとトラブルシューティング
これらのベストプラクティスとトラブルシューティングのヒントで、Cognite Power BI connector を最大限に活用してください。
パフォーマンスのベストプラクティス
Cognite Power BI connector のパフォーマンスは、アクセスする Cognite Data Fusion(CDF)のリソースタイプによって異なります。たとえば、1M のデータポイントを読み取るには、約 2 分 30 秒から 3 分 00 秒かかります(毎秒 6K データポイント)。各フルリクエストには平均 120 ミリ秒かかり、コネクタは CDF リクエストに平均 20 ミリ秒追加します。
以下の一般的なベストプラクティスに従って、最高かつ最も信頼性の高いパフォーマンスを実現してください。
OR
式や展開テーブルは使わないでください。- 可能な限り複数のクエリを使用してください。
- インクリメンタルリフレッシュを使用します。
- 可能であればデータセットを分割します。
- 必要なデータだけを残します。不要な列やデータを削除します。
- 過去のデータを毎日必要としない場合は、別のレポートに保管してください。データが必要なときは、履歴データレポートを更新します。
- フロントエンドでの計算や操作の数を減らし、できるだけ data modeling で行うようにします。
パフォーマンスの高いクエリを書く
OData サービスは、複数の同時リクエストを受け入れ、リクエストを並行処理します。また、Power BI は可能な限り複数のクエリを同時に送信します。
したがって、たとえば OR
式や展開を使った単一の複雑なクエ リではなく、複数のクエリを作成して使用する方が得策です。単一の複雑なクエリは、各リクエストに追加したラウンドトリップ待ち時間で順次反復する必要があります。
その代わりに、複数のクエリを使用してデータをダウンロードしてみてください。
次に、Power BI データ モデルで結果のテーブルを結合し、あたかも 1 つのテーブルであるかのようにテーブルを操作します。
インクリメンタル リフレッシュを使用する
インクリメンタル リフレッシュは、Power BI で大規模なデータセットを可能にし、次のようなメリットがあります。
- リフレッシュが必要なのは、変更されたデータのみです。
- ソースシステムとの長期にわたる接続を維持する必要はありません。
- リフレッシュするデータを少なくすることで、メモリやその他のリソースの全体的な消費を抑えることができます。
インクリメンタルリフレッシュについて詳しい情報を確認してください。
大きな データセットを分割する
大きなデータ セットをダウンロードする必要がある場合は、データ セットを分割し、各パーティションを読み込むために別のクエリを作成するようにしてください。Power BI は複数のクエリを同時に処理しますが、データ セットをパーティショニングすることで、パフォーマンスを大幅に向上させることができます。
たとえば、過去 2 年間のデータポイントを読み込む場合は、クエリを 2 つに分割し、それぞれ 1 年分のデータを読み込むようにします。次に、Power BI でテーブルをマージ(連結)します。
キャッシュをクリアする
Power BI は、OData サービスのスキーマを記述するサービス マニフェストをキャッシュします。コネクタまたは OData サービスがアップグレードされると、Power BI キャッシュをクリアして、Power BI にサービス マニフェストの再読み込みを強制しなければならない場合があります。
キャッシュは次の方法でクリアします。
-
Power BI Desktopで、ファイル > オプションと設定 > オプション > データの読み込みを順に選択します。 -
データ キャッシュ管理オプションで、キャッシュをクリアを選択します。
メタデータと CDF RAW におけるプロパティの命名
メタデータと CDF ステージング領域(RAW)のプロパティ キーは有効な識別子でなければならず、文字、数字、アンダースコアのみを含めることができます。OData サービスは、それ以外の文字をアンダースコアに書き換えます。最良かつ最も予測可能な結果を得るには、取り込まれたデータがプロパティ キーの以下の命名規則に従っていることを確認してください: ^[a-zA-Z][_a-za-z0-9]\*[a-zA-Z0-9]\$
。
トラブルシューティング
Power BI で CDF をデータ ソースとして使用する際のトラブルシューティングに役立つ情報を見つけてください。
クエリに時間がかかりすぎる
CDF プロジェクトには何億行ものデータが含まれることがあり、そのすべてを Power BI に読み込むことはできません。クエリの実行に何時間もかかる場合は、データを大量に読み込もうとしている可能性が高いです。
フィルタリング記事の情報を参照して、Power BI にロードされるデータ量を制限しましょう。
すべての結果が得られない
結果が予想より少ない場合は、TimeSeries の名前列で、startswith
のように、CDF がサポートしていないフィルター関数を使用している可能性があります。
詳細については、CDF リソースでサポートされているフィルタリングを参照してください。
CDF RAW から最小値を取得できない
Power BI で CDF ステージング領域 CDF RAW のデータを使用している場合、指数表記で小さな数値を取得する際に問題が発生することがあります。
CDF RAW にはスキーマがありませんが、Power BI の OData
ライブラリはデータに適した形式を選択しようとします。現在、Power BI は指数表記の小さな数値に対して間違ったデコーダを選択するため、このようなエラーが発生することがあります。
DataSource,Error: OData: Cannot convert the literal '2.89999206870561 to the expected type 'Edm.Decimal',
この問題を解決するには、値を数値ではなく文字列として CDF RAW に取り込み、Power BI で Decimal.From
Power Query M-関数などを使って文字列を数値に戻してください。精度を失うことはなく、ほとんどの JSON デコーダーは数値の代わりに文字列を受け入れるので、数値を想定しているクライアントも動作します。