次の方法で共有


GraphQL 用 Fabric API で複数のデータ ソースに対してクエリを実行する

GraphQL 用 Fabric API の主な利点の 1 つは、単一の統合 API エンドポイントを介して複数のデータ ソース (Lakehouse、Warehouse、データベースなど) を公開できることです。 つまり、アプリケーションは 1 つの GraphQL クエリで異なるソースからデータを取得できるため、複数の API またはデータベースに個別に接続する必要がなくなります。

たとえば、ある倉庫に顧客データがあり、別のレイクハウスに在庫データがあるとします。 2 つの個別の API 呼び出しを行う代わりに、GraphQL API を使用して両方のソースに対して同時にクエリを実行できるため、ネットワークのオーバーヘッドが軽減され、アプリケーション コードが簡略化されます。

マルチソース クエリのしくみ

複数のデータ ソースにまたがる GraphQL クエリを発行すると、API は各データ ソースへの個々の要求を自動的に並列でファンアウトし、結果を 1 つの応答に結合します。 この方法の特徴は次のとおりです。

  • ラウンド トリップを減らす: アプリケーションが複数の順次呼び出しの代わりに 1 つの要求を行う
  • パフォーマンスの向上: 並列実行は全体的な応答時間の短縮を意味します
  • クライアント コードを簡略化: データの格納場所に関係なく、1 つの API インターフェイスを使用できます

Important

マルチソース クエリには、次の制限があります。

  • 異なるデータ ソースにまたがる型間にリレーションシップを作成することはできません。 リレーションシップは、1 つのデータ ソース内でのみ機能します。
  • 各データ ソースに対する個々の要求は、保証された順序なしで並列で実行されます。
  • データ ソースに対する各要求は独立しています。複数のソースにまたがるトランザクションはありません。

クエリの例

ビジネス シナリオ: 顧客情報と製品在庫の状態を並べて表示するダッシュボードを構築しているとします。 顧客データは販売倉庫 (ContosoSales) に存在し、製品在庫はサプライ チェーン システムによって更新された別のレイクハウス (ContosoInventory) で管理されます。 マルチソースのサポートがなければ、2 つの個別の API 呼び出しを行い、2 つの異なる接続を管理し、アプリケーション コードでデータを自分で組み合わせる必要があります。

GraphQL 用 Fabric API を使用すると、1 つのクエリで両方のソースからデータを取得できます。

query {
  customers (first: 1) {
    items {
      FirstName
      LastName
    }
  }
  inventories (first: 1) {
    items {
      Name
    }
  }
}

この 1 つの要求は 、ContosoSales データ ソースから顧客レコードを取得し、 ContosoInventory データ ソースからインベントリ項目を並列で取得し、それらを 1 つの応答に結合します。 ダッシュボードは、2 つではなく 1 つの API 呼び出しで必要なすべてのデータを取得します。

要求に対する出力は次のとおりです。

{
  "data": {
    "customers": {
      "items": [
        {
          "FirstName": "Orlando",
          "LastName": "Gee"
        }
      ]
    },
    "inventories": {
      "items": [
        {
          "Name": "AWC Logo Cap"
        }
      ]
    }
  }
}

応答構造は、クエリ構造を反映します。 data オブジェクト内には、作成した 2 つのクエリに対応する 2 つの最上位フィールド (customersinventories) があります。 各フィールドには、実際の結果を含む items 配列が含まれています。 customers項目にはFirstNameLastNameなどのプロパティが含まれますが、inventories項目にはクエリで要求されたとおりに、Nameなどのプロパティがあります。

この要求を実行すると、クエリ ビューがどのように表示されるかを次に示します。

2 つのデータ ソースにまたがるクエリを示すエディター画面のスクリーンショット。