次の方法で共有


Azure Cosmos DB v2 (ベータ)

まとめ

項目 説明
リリース状態 Beta
製品 Power BI (セマンティック モデル)
Power BI (データフロー)
ファブリック (データフロー Gen2)
サポートされている認証の種類 フィード キー

前提条件

サポートされている機能

  • インポート
  • DirectQuery (Power BI セマンティック モデル)
  • 詳細オプション
    • 再試行回数
    • "AVERAGE" 関数のパスダウンを有効にする
    • 複数の列に対して "SORT" パスダウンを有効にする

Azure Cosmos DB に接続する

Azure Cosmos DB データに接続するには:

  1. Power BI Desktop を起動します。

  2. [ホーム] タブで [データを取得] を選びます。

  3. 検索ボックスに「Cosmos DB v2」と入力します。

  4. [Azure Cosmos DB v2 (Beta)] (Azure Cosmos DB v2 (ベータ)) を選択し、[接続] を選択します。

    Azure Cosmos DB v2 の選択を示すスクリーンショット。

  5. [Azure Cosmos DB v2] 接続ページの [Cosmos Endpoint]\(Cosmos エンドポイント\) に、使用する Azure Cosmos DB アカウントの URI を入力します。 [データ接続モード] では、次の一般的なガイドラインに従って、ご自身のユース ケースに適したモードを選びます。

    • 小さいデータ セットの場合は、[インポート] を選びます。 インポート モードを使用する場合、Power BI は Cosmos DB と連携して、視覚化で使用するデータ セット全体の内容をインポートします。

    • DirectQuery モードでは、実行のために Cosmos DB コンテナーへのクエリ プッシュダウンが有効になり、コネクタのパフォーマンスが向上します。 パーティション分割された Cosmos DB コンテナーの場合、クエリにパーティション キーのフィルター (WHERE 句) も含まれている場合、集計関数を含む SQL クエリが Cosmos DB に渡されます。 たとえば、パーティション キーが "Product" と定義されている場合、Cosmos DB サーバーで渡して実行できる SQL クエリは次のようになります。

      SELECT SUM(ColumnName) FROM TableName where Product = 'SampleValue'

    Note

    Cosmos DB コンテナーに対してクロスパーティション集計関数を実行する場合は、Azure Synapse Link for Azure Cosmos DB を使用します。

    詳細情報:

    Cosmos エンドポイントのエントリと、DirectQuery に設定されたデータ接続モードを表示している接続ダイアログ ボックスのスクリーンショット。

  6. データソース認証を構成するプロンプトで、アカウント キーを入力します。 次に、 [接続](Connect) を選択します。 データ カタログ、データベース、テーブルが [ナビゲーター] ダイアログ ボックスに表示されます。

  7. [表示オプション] ウィンドウで、使用するデータ セットのチェック ボックスをオンにします。

    選択したデータを強調するナビゲーターのスクリーンショット。

  8. パーティション キー フィルターを指定する最も最適な方法 (集計関数を Cosmos DB にプッシュダウンできるようにするため) は、動的 M パラメーターを使用することです。 動的 M パラメーターを使用するには、一意のパーティション キー値を持つデータ セットを作成し、パラメーターを作成し、メイン データ セットにフィルターとして追加し、それを一意のパーティション キー データ セットにバインドして、メイン データ セットのスライサーとして使用します。 パーティション キーのフィルター処理で動的 M パラメーターを有効にするには、次の手順に従います。

    a. 一意のパーティション キー値を持つデータ セットを作成する:

    ナビゲーターで、[読み込み] ではなく [データの変換] を選択して、Power Query エディターを表示します。 クエリ データ セットを右クリックし、[複製] を選択して新しいデータ セットを作成します。

    Power Query エディターで既存のクエリから重複を選択する方法を示すスクリーンショット。

    新しいパーティション キー モデルの名前を変更し、Cosmos DB パーティション キー列を右クリックします。 この例では、Product が Cosmos DB パーティション キー列です。 [他の列の削除] を選択し、[重複部分の削除] を選択します。

    Power Query エディターの一意のパーティション キーを示すスクリーンショット。

    b. 動的フィルター処理用のパラメーターを作成する:

    Power Query エディターで、[パラメーターの管理]>[新しいパラメーター] を選択します。 フィルター パラメーターを反映するように新しいパラメーターの名前を変更し、有効な値を [現在の値] として入力します。

    Power Query エディターでパラメーターを作成する方法を示すスクリーンショット。

    c. メイン データ セットにパラメーター化されたフィルターを適用する:

    [パーティション キー] 列のドロップダウン アイコンを選択し、[テキスト フィルター]>[次の値に等しい] を選択します。 フィルターの種類を [テキスト] から [パラメーター] に変更します。 次に、手順 b で作成したパラメーターを選択します。 Power Query エディターの左上隅にある [閉じて適用] を選択します。

    パラメーター化されたフィルターを適用する手順を示すスクリーンショット。

    d. パラメーター バインドを使用してパーティション キー値スライサーを作成する:

    Power BI で、[モデル] タブを選択します。次に、パーティション キー フィールドを選択します。 [プロパティ] ウィンドウで、[詳細]>[Bind to parameter] (パラメーターにバインド) を選択します。 手順 b で作成したパラメーターを選択します。

    パラメーターをバインドする手順を示すスクリーンショット。

    [レポート] タブを選択し、一意のパーティション キーを持つスライサーを追加します。

    スライサーのスクリーンショット。

    e. 視覚化を追加し、スライサーからパーティション キー フィルターを適用する:

    スライサーで選択したパーティション キーの値は (手順 d で行われたように) パラメーターにバインドされ、パラメーター化されたフィルターは (手順 c で行われたように) メイン データ セットに適用されるため、選択したパーティション キーの値はメイン データ セットのフィルターとして適用され、パーティション キー フィルターを含むクエリはすべての視覚化で Cosmos DB に渡されます。

    パーティション キー フィルターが適用された後の視覚化のスクリーンショット。

詳細オプション

Power Query では、必要に応じてクエリに追加できる詳細オプションのセットが用意されています。

次の表に、Power Query で設定できるすべての詳細オプションを示します。

詳細オプション 説明
再試行回数 408 - Request Timeout412 - Precondition Failed、または 429 - Too Many Requests の HTTP リターン コードがある場合に再試行する回数。 既定の再試行回数は 5 です。
AVERAGE 関数のパスダウンを有効にする コネクタで Cosmos DB への AVG 集計関数のパスダウンを許可するかどうかを指定します。 既定値は 1 で、コネクタは既定で AVG 集計関数を Cosmos DB に渡そうとします。 引数に AVG 集計関数の文字列、ブール値、または null 値が含まれている場合は、Cosmos DB サーバーから未定義の結果セットが返されます。 値 0 に設定すると、AVG 集計関数は Cosmos DB サーバーに渡されず、コネクタは AVG 集計操作自体の実行を処理します。
複数の列に対して SORT パスダウンを有効にする SQL クエリの ORDER BY 句で指定した場合に、コネクタで複数の列を Cosmos DB に渡すかどうかを指定します。 既定値は 0 で、ORDER BY 句で複数の列が指定されている場合、コネクタは既定では列を渡さず、代わりに順序の実行を単独で処理します。 値 1 に設定すると、SQL クエリの ORDER BY 句で指定された場合、コネクタは複数の列を Cosmos DB に渡そうとします。 複数の列を Cosmos DB に渡せるようにするには、それぞれのコレクション内の列に複合インデックスが設定されていることを確認します。 パーティション分割コレクションの場合、ORDER BY を含む SQL クエリは、クエリにパーティション キーのフィルターが含まれている場合にのみ Cosmos DB に渡されます。 また、ORDER BY 句に 8 つ以上の列が指定されている場合、コネクタは ORDER BY 句を渡さず、代わりに順序付けの実行自体を処理します。

既知の問題と制限事項

  • パーティション分割された 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 のファブリック ミラーリング機能をお勧めします。

  • V2 コネクタは、最初の 1,000 個のドキュメントのサンプリングを使用して、推論されたスキーマを作成します。 ドキュメントの一部のみが更新される場合は、スキーマ展開シナリオは推奨されません。 たとえば、何千ものドキュメントが含まれるコンテナー内の 1 つのドキュメントに新しく追加されたプロパティを、推論されたスキーマに含めないようにしたい場合があります。 このようなシナリオでは、Azure Cosmos DB のファブリック ミラーリング機能をお勧めします。

  • 現在、V2 コネクタでは、オブジェクト プロパティで文字列以外の値はサポートされていません。

  • サーバーの制限により、次の構文ではフィルターのパスダウンが無効になります。

    • 1 つ以上の集計列を含むクエリが WHERE 句で参照されている場合。