Power BI を使って Azure Cosmos DB データを視覚化する
適用対象: NoSQL
この記事では、Azure Cosmos DB データを Power BI Desktop に接続するために必要な手順について説明します。
Power BI デスクトップから Azure Cosmos DB に接続するには、次のいずれかの方法を使います。
Microsoft Fabric でのミラーリングを使用して、Azure Cosmos DB データを Fabric OneLake にレプリケートします。 データベースに対する変更は、ソース データベースのパフォーマンスやリソース ユニット (RU) の消費に影響を与えることなく、ほぼリアルタイムで Fabric OneLake に自動的に同期されます。
Power BI レポートでは、DirectLake モードを使用して OneLake から直接データにアクセスできます。 Fabric 内の Power BI で強化された Copilot 機能を使用すると、生成 AI を活用して主要なビジネス インサイトを得ることができます。
Azure Synapse Link を使って、トランザクション ワークロードにパフォーマンスやコストの影響を与えず、ETL パイプラインなしで Power BI レポートを構築します。
DirectQuery またはインポート モードを使用できます。 DirectQuery を使うと、Azure Cosmos DB アカウントからのライブ データを使ってダッシュボードまたはレポートを構築できます。データを Power BI にインポートまたはコピーする必要はありません。
Power BI 用の Azure Cosmos DB コネクタを使用して、Power BI Desktop を Azure Cosmos DB アカウントに接続します。 このオプションは、インポート モードでのみ使用できます。また、トランザクション ワークロードに割り当てられた RU を使用します。
注意
Power BI Desktop で作成されたレポートは、PowerBI.com に発行できます。 PowerBI.com から Azure Cosmos DB データの直接抽出を実行することはできません。
前提条件
この Power BI チュートリアルの手順に従う前に、次のリソースにアクセスできることを確認してください。
Azure Cosmos DB データベース アカウントを作成し、Azure Cosmos DB コンテナーにデータを追加します。
PowerBI.com でレポートを共有するには、PowerBI.com のアカウントが必要です。 Power BI と Power BI Pro の詳細については、https://powerbi.microsoft.com/pricing を参照してください。
作業を開始する
Microsoft Fabric でのミラーリングを使用して BI レポートを作成する
既存の Azure Cosmos DB コンテナーでミラーリングを有効にし、このデータに対してほぼリアルタイムで BI レポート/ダッシュボードを構築できます。 Fabric とミラーリングの使用を開始する手順については、「Azure Cosmos DB でのミラーリングのチュートリアル」を参照してください。
Azure Synapse Link を使った BI レポートの構築
Azure Cosmos DB ポータルを使って数回クリックするだけで、既存の Azure Cosmos DB コンテナー上で Azure Synapse Link を有効にし、このデータを基に BI レポートを構築できます。 Power BI は、直接クエリ モードを使って Azure Cosmos DB に接続し、トランザクション ワークロードに影響を与えることなく、ライブ Azure Cosmos DB データのクエリを実行できます。
Power BI レポートまたはダッシュボードを構築するには:
Azure Portal にサインインし、Azure Cosmos DB アカウントに移動します。
[統合] セクションから [Power BI] ペインを開き、[作業の開始] を選びます。
注意
現時点では、このオプションは NoSQL 用 API アカウントでのみ使用できます。 Synapse サーバーレス SQL プール内に T-SQL ビューを直接作成し、Azure Cosmos DB for MongoDB 用の BI ダッシュボードを構築できます。 詳細については、「Power BI とサーバーレス Synapse SQL プールを使用して Synapse Link で Azure Cosmos DB データを分析する」を参照してください。
[Enable Azure Synapse Link](Azure Synapse Link を有効にする) タブで、[Enable Azure Synapse link for this account](このアカウントの Azure Synapse Link 有効にする) セクションから、アカウントの Synapse Link を有効にすることができます。 アカウントの Synapse Link が既に有効な場合、このタブは表示されません。この手順は、コンテナー上で Synapse Link を有効にするための前提条件です。
Note
Azure Synapse Link を有効にするとコストがかかります。 詳しくは、Azure Synapse Link の価格に関するセクションをご覧ください。
次に、[コンテナーの Azure Synapse リンクを有効にする] セクションで、Synapse Link を有効にする必要があるコンテナーを選びます。
一部のコンテナーで Synapse Link を既に有効にしている場合は、コンテナー名の横にあるチェック ボックスがオンになっています。 Power BI で視覚化するデータに応じて、それらをオフにすることができます。
この Synapse Link が有効になっていない場合は、既存のコンテナーでこれを有効にできます。
いずれかのコンテナーで Synapse Link の有効化が進行中の場合、それらのコンテナーのデータは含まれません。 後でコンテナーが有効になったら、このタブに戻ってデータをインポートする必要があります。
コンテナー内のデータの量によっては、Synapse Link を有効にするのに時間がかかる場合があります。 詳しくは、既存コンテナーでの Synapse Link の有効化に関する記事をご覧ください。
次の画面で示すように、ポータルで進行状況を確認できます。 進行状況が 100% に達すると、コンテナーで Synapse Link が有効になります。
[ワークスペースの選択] タブで Azure Synapse Analytics ワークスペースを選んで、[次へ] を選びます。 この手順で、前に選んだコンテナーに対する T-SQL ビューが Synapse Analytics に自動的に作成されます。 Azure Cosmos DB を Power BI に接続するために必要な T-SQL ビューについて詳しくは、ビューの準備に関する記事を参照してください。
注意
Azure Cosmos DB コンテナー プロパティは、入れ子になった詳細な JSON データを含む、T-SQL ビューの列として表示されます。 これは、BI ダッシュボードのクイック スタートです。 これらのビューは、Synapse ワークスペース/データベースで利用できます。Synapse Workspace では、データの探索、データ サイエンス、Data Engineering などに対してまったく同じビューを使用することもできます。高度なシナリオでは、パフォーマンスを向上させるために、これらのビューのより複雑なビューや微調整が必要になることに注意してください。 詳しくは、 Synapse サーバーレス SQL プールを使用する場合の Synapse Link のベスト プラクティスに関する記事を参照してください。
既存のワークスペースを選ぶか、新しく作成することができます。 既存のワークスペースを選ぶには、[サブスクリプション]、[ワークスペース]、[データベース] の詳細を指定します。 Azure portal により、お客様の Microsoft Entra 資格情報を使用して自動的に、Synapse ワークスペースに接続して T-SQL ビューが作成されます。 このワークスペースに対する "Synapse 管理者" アクセス許可を持っていることを確認してください。
次に、[.pbids のダウンロード] を選んで、Power BI のデータ ソース ファイルをダウンロードします。 ダウンロードしたファイルを開きます。 それには必要な接続情報が含まれており、Power BI デスクトップが開かれます。
Power BI デスクトップから Azure Cosmos DB のデータに接続できるようになります。 各コンテナー内のデータに対応する T-SQL ビューの一覧が表示されます。
たとえば、次の画面では保有車両のデータが示されています。 読み込む前に、このデータをさらに分析または変換することができます。
これで、Azure Cosmos DB の分析データを使ってレポートの構築を始めることができます。 データに対する変更は、データが分析ストアにレプリケートされ次第、レポートに反映されます。通常は数分以内に行われます。
Power BI コネクタを使用した BI レポートの構築
注意
Power BI コネクタによる Azure Cosmos DB への接続は、現在は Azure Cosmos DB for NoSQL アカウントと Gremlin 用 API アカウントでのみサポートされています。
Power BI Desktop を実行します。
ようこそ画面から直接 [データの取得] を実行したり、 [最近のソース] を参照したり、 [Open Other Reports] \(他のレポートを開く) を実行したりできます。 右上隅にある [X] を選択して画面を閉じます。 Power BI Desktop の [レポート] ビューが表示されます。
[ホーム] リボンをクリックし、 [データの取得] をクリックします。 [データの取得] ウィンドウが表示されます。
[Azure] をクリックし、 [Azure Cosmos DB (ベータ版)] を選択して、 [接続] をクリックします。
[Preview Connector] \(プレビュー コネクタ) ページで、 [続行] をクリックします。 [Azure Cosmos DB] ウィンドウが表示されます。
次のように、データを取得する Azure Cosmos DB アカウント エンドポイント URL を指定し、 [OK] をクリックします。 独自のアカウントを使用するには、Azure Portal の [キー] ブレードにある [URI] ボックスから URL を取得できます。 オプションで、データベース名とコレクション名を指定するか、またはナビゲーターを使用してデータベースとコレクションを選択することによってデータの取得元を識別できます。
このエンドポイントに初めて接続している場合は、アカウント キーの入力を求められます。 独自のアカウントの場合は、Azure Portal の [Read-only Keys]/(読み取り専用キー/) ブレードにある [主キー] ボックスからキーを取得します。 適切なキーを入力し、 [接続] をクリックします。
レポートを作成する際は読み取り専用キーを使用することをお勧めします。 これにより、プライマリ キーが不用意に公開される潜在的なセキュリティ リスクを抑えることができます。 読み取り専用キーは、Azure Portal の [キー] ブレードから入手できます。
アカウントが正常に接続されると、 ナビゲーター ウィンドウが表示されます。 ナビゲーター には、アカウントで利用できるデータベースの一覧が表示されます。
レポートのデータの元となるデータベースをクリックし、展開します。 次に、取得するデータを含むコレクションを選択します。
プレビュー ウィンドウに、 Record アイテムの一覧が表示されます。 Power BI では、ドキュメントは Record タイプとして表されます。 同様に、ドキュメント内の入れ子になった JSON ブロックも、 Recordとして表されます。 プロパティのドキュメントを列として表示するには、レコードの展開を表す、逆向きの 2 つの矢印がある灰色のボタンをクリックします。 同じプレビュー ウィンドウのコンテナーの名前の右側にあります。
Power BI Desktop レポート ビューは、データを視覚化するためにレポート作成を開始できる場所です。 [レポート] キャンバスにフィールドをドラッグ アンド ドロップすることにより、レポートを作成できます。
データの更新方法には、アドホック更新とスケジュールされている更新の 2 つの方法があります。 データを更新するには、[今すぐ更新] をクリックします。 スケジュールされた更新オプションについて詳しくは、Power BI のドキュメントをご覧ください。
既知の問題と制限事項
パーティション分割された Cosmos DB コンテナーの場合、クエリにパーティション キーのフィルター (WHERE 句) も含まれている場合、集計関数を含む SQL クエリが Cosmos DB に渡されます。 集計クエリにパーティション キーのフィルターが含まれていない場合、集計はコネクタによって実行されます。
TOP または LIMIT が適用された後に呼び出された場合、コネクタは集計関数を渡しません。 Cosmos DB は、クエリを処理するときに、最後に TOP 操作を処理します。 たとえば、次のクエリでは、TOP がサブクエリに適用され、集計関数はその結果セットの上に適用されます。
SELECT COUNT(1) FROM (SELECT TOP 4 * FROM EMP) E
集計関数で DISTINCT 句が指定されている場合、コネクタはその集計関数を Cosmos DB に渡しません。 集計関数に存在する場合、DISTINCT は Cosmos DB SQL API ではサポートされません。
SUM 集計関数の場合、SUM の引数のいずれかが文字列、ブール値、または null の場合、Cosmos DB は結果セットとして undefined を返します。 ただし、null 値がある場合、コネクタは、SUM 計算の一部として null 値を 0 に置き換えるようデータ ソースに要求するように、クエリを Cosmos DB に渡します。
AVG 集計関数の場合、SUM の引数のいずれかが文字列、ブール値、または null の場合、Cosmos DB は結果セットとして undefined を返します。 コネクタは、この既定の Cosmos DB 動作をオーバーライドする必要がある場合に備えて、AVG 集計関数を Cosmos DB に渡すことを無効にする接続プロパティを公開します。 AVG パスダウンを無効にすると、Cosmos DB に渡されず、コネクタが AVG 集計操作自体の実行を処理します。 詳細については、詳細オプションの「AVERAGE 関数のパスダウンを有効にする」を参照してください。
大きなパーティション キーを持つ Azure Cosmos DB コンテナーは、コネクタでは現在サポートされていません。
サーバーの制限により、次の構文では集計パスダウンが無効になります。
クエリがパーティション キーでフィルター処理されていない場合、またはパーティション キー フィルターで WHERE 句の最上位レベルにある別の述語で OR 演算子を使用する場合。
クエリが 1 つ以上のパーティション キーを WHERE 句の IS NOT NULL 句に持つ場合。
V2 コネクタは、配列、オブジェクト、階層構造などの複合データ型をサポートしていません。 これらのシナリオでは、[Azure Cosmos DB のファブリック ミラーリング](/articles/cosmos-db/analytics-and-business-intelligence-overview.md)機能をお勧めします。
V2 コネクタは、最初の 1,000 個のドキュメントのサンプリングを使用して、推論されたスキーマを作成します。 ドキュメントの一部のみが更新される場合は、スキーマ展開シナリオは推奨されません。 たとえば、何千ものドキュメントが含まれるコンテナー内の 1 つのドキュメントに新しく追加されたプロパティを、推論されたスキーマに含めないようにしたい場合があります。 このようなシナリオでは、Azure Cosmos DB のファブリック ミラーリング機能をお勧めします。
現在、V2 コネクタでは、オブジェクト プロパティで文字列以外の値はサポートされていません。
サーバーの制限により、次の構文ではフィルターのパスダウンが無効になります。
1 つ以上の集計列を含むクエリが WHERE 句で参照されている場合。
次のステップ
- Power BI の詳細については、「 Power BI の概要」を参照してください。
- Azure Cosmos DB について詳しくは、Azure Cosmos DB ドキュメントのランディング ページをご覧ください。