Partager via


Interroger plusieurs sources de données dans l’API Fabric pour GraphQL

L’un des principaux avantages de l’API Fabric pour GraphQL est la possibilité d’exposer plusieurs sources de données, telles que des lakehouses, des entrepôts et des bases de données, via un seul point de terminaison d’API unifié. Cela signifie que vos applications peuvent récupérer des données à partir de différentes sources dans une requête GraphQL unique, ce qui élimine la nécessité de se connecter à plusieurs API ou bases de données séparément.

Par exemple, vous pouvez avoir des données client dans un entrepôt et des données d’inventaire dans un autre lakehouse. Au lieu d’effectuer deux appels d’API distincts, vous pouvez interroger les deux sources simultanément via votre API GraphQL, ce qui réduit la surcharge réseau et simplifie votre code d’application.

Fonctionnement des requêtes multi source

Lorsque vous émettez une requête GraphQL qui s’étend sur plusieurs sources de données, l’API génère automatiquement des requêtes individuelles à chaque source de données en parallèle, puis combine les résultats en une seule réponse. Cette approche :

  • Réduit les allers-retours : votre application effectue une requête au lieu de plusieurs appels séquentiels
  • Améliore les performances : l’exécution parallèle signifie des temps de réponse globaux plus rapides
  • Simplifie le code client : vous travaillez avec une seule interface API, quel que soit l’emplacement de stockage des données

Important

Les requêtes multi source présentent les limitations suivantes :

  • Vous ne pouvez pas créer de relations entre les types qui s’étendent sur différentes sources de données. Les relations fonctionnent uniquement dans une seule source de données.
  • Les demandes individuelles adressées à chaque source de données s’exécutent en parallèle sans ordre garanti.
  • Chaque requête adressée à une source de données est indépendante : il n’existe aucune transaction couvrant plusieurs sources.

Exemple de requête

Scénario métier : Imaginez que vous créez un tableau de bord qui affiche les informations client et l’état de l’inventaire des produits côte à côte. Vos données client se trouvent dans un entrepôt de ventes (ContosoSales), tandis que votre inventaire de produits est géré dans un lakehouse distinct (ContosoInventory) mis à jour par vos systèmes de chaîne d’approvisionnement. Sans prise en charge multi source, vous devez effectuer deux appels d’API distincts, gérer deux connexions différentes et combiner les données vous-même dans votre code d’application.

Avec l’API Fabric pour GraphQL, vous pouvez récupérer des données des deux sources dans une seule requête :

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

Cette requête unique récupère les enregistrements clients de la source de données ContosoSales et des éléments d’inventaire de la source de données ContosoInventory en parallèle, en les combinant en une seule réponse. Votre tableau de bord obtient toutes les données dont elle a besoin avec un appel d’API au lieu de deux.

Le résultat de la requête est le suivant :

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

La structure de réponse reflète la structure de requête. À l’intérieur de l’objet data , vous avez deux champs de niveau supérieur (customers et inventories) correspondant aux deux requêtes que vous avez effectuées. Chaque champ contient un items tableau avec les résultats réels. Les customers éléments ont des propriétés similaires FirstName et LastName, tandis que les inventories éléments ont des propriétés comme Name, exactement comme demandé dans la requête.

Il s’agit de l’apparence de la vue de requête lorsque vous exécutez cette requête :

Capture d’écran de l’éditeur montrant une requête couvrant deux sources de données.