Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’API Microsoft Fabric pour GraphQL permet d’interroger et de muter facilement des données à partir d’une base de données Fabric SQL et d’autres sources de données Fabric telles que Data Warehouse et Lakehouse, avec des schémas fortement typés et un langage de requête enrichi permettant aux développeurs de créer une API intuitive sans écrire de code serveur personnalisé. Vous pouvez utiliser des procédures stockées pour encapsuler et réutiliser une logique métier complexe, notamment la validation d’entrée et la transformation des données.
Dans cet exemple, nous apprenons à utiliser une procédure stockée pour inscrire de nouveaux produits, avec une logique côté serveur pour la validation, la mise en forme et la génération d’ID, toutes exposées via une mutation GraphQL dans Fabric.
Commencez
Nous commençons par créer une base de données SQL dans Fabric :
- Dans votre espace de travail Fabric, sélectionnez Nouvel élément , puis base de données SQL (préversion).
- Donnez un nom à votre base de données, puis sélectionnez Exemples de données pour créer rapidement toutes les tables et données requises dans votre base de données.
Scénario : inscrire un nouveau produit
Supposons que vous souhaitez créer un produit avec :
- Validation de la logique de tarification (par exemple, ListPrice > StandardCost)
- Transformation (par exemple, mettre en majuscule la première lettre du nom du produit, découper le numéro de produit puis le mettre en majuscules)
- Génération de ProductID (en incrémentant le dernier ProductID)
Étape 1 : Créer la procédure stockée
Voici une procédure stockée T-SQL qui encapsule toute la logique métier dont nous avons besoin. Dans votre base de données SQL, cliquez sur Nouvelle requête et utilisez l’instruction suivante :
CREATE PROCEDURE SalesLT.RegisterProduct
@Name nvarchar(50),
@ProductNumber nvarchar(25),
@StandardCost money,
@ListPrice money,
@SellStartDate datetime
AS
BEGIN
SET NOCOUNT ON;
SET IDENTITY\_INSERT SalesLT.Product ON;
-- Validate pricing logic
IF @ListPrice <= @StandardCost
THROW 50005, 'ListPrice must be greater than StandardCost.', 1;
-- Transform product name: capitalize first letter only
DECLARE @CleanName nvarchar(50);
SET @CleanName = UPPER(LEFT(LTRIM(RTRIM(@Name)), 1)) + LOWER(SUBSTRING(LTRIM(RTRIM(@Name)), 2, 49));
-- Trim and uppercase product number
DECLARE @CleanProductNumber nvarchar(25);
SET @CleanProductNumber = UPPER(LTRIM(RTRIM(@ProductNumber)));
-- Generate ProductID by incrementing the latest existing ID
DECLARE @ProductID int;
SELECT @ProductID = ISNULL(MAX(ProductID), 0) + 1 FROM SalesLT.Product;
INSERT INTO SalesLT.Product (
ProductID,
Name,
ProductNumber,
StandardCost,
ListPrice,
SellStartDate
)
OUTPUT
inserted.ProductID,
inserted.Name,
inserted.ProductNumber,
inserted.StandardCost,
inserted.ListPrice,
inserted.SellStartDate
VALUES (
@ProductID,
@CleanName,
@CleanProductNumber,
@StandardCost,
@ListPrice,
@SellStartDate
);
END;
Cliquez sur Exécuter pour tester l’exécution. Vous remarquez qu’une nouvelle procédure stockée RegisterProduct se trouve sous le dossier Procédures stockées de la base de données SalesLT . Utilisez la requête suivante pour tester la logique de procédure :
DECLARE @RC int
DECLARE @Name nvarchar(50)
DECLARE @ProductNumber nvarchar(25)
DECLARE @StandardCost money
DECLARE @ListPrice money
DECLARE @SellStartDate datetime
-- TODO: Set parameter values here.
Set @Name = 'test product'
Set @ProductNumber = 'tst-0012'
Set @StandardCost = '10.00'
Set @ListPrice = '9.00'
Set @SellStartDate = '2025-05-01T00:00:00Z'
EXECUTE @RC = \[SalesLT\].\[RegisterProduct\]
@Name
,@ProductNumber
,@StandardCost
,@ListPrice
,@SellStartDate
GO
Étape 2 : Créer une API GraphQL
La création d’une API à partir de votre table SQL est rapide, simple et simple. Vous devez simplement cliquer sur le bouton Nouvelle API pour GraphQL dans le ruban de base de données SQL et donner un nom à votre API.
Sélectionnez ensuite les tables SalesLT dans votre base de données et la procédure stockée que nous venons de créer, puis cliquez sur Charger :
L’API GraphQL, le schéma et tous les résolveurs sont générés automatiquement en secondes en fonction des tables SQL et de la procédure stockée.
Étape 3 : Appeler la procédure à partir de GraphQL
Une fois l’API prête, la procédure stockée devient disponible en tant que mutation dans le schéma Fabric GraphQL. Accédez à l’éditeur de requête et exécutez la mutation suivante :
mutation {
executeRegisterProduct (
Name: " graphQL swag ",
ProductNumber: "gql-swag-001",
StandardCost: 10.0,
ListPrice: 15.0,
SellStartDate: "2025-05-01T00:00:00Z"
) {
ProductID
Name
ProductNumber
StandardCost
ListPrice
SellStartDate
}
}
Conseils
- Fabric GraphQL génère automatiquement des champs de mutation pour les procédures stockées qui retournent un jeu de résultats défini dans la sortie de la procédure.
- La logique métier réside à l’intérieur de la procédure, et non dans le client.
- Utilisez la génération d’ID déterministe uniquement si vous ne vous fiez pas aux colonnes d’identité.
L’exposition de procédures stockées via des API Fabric vous permet de définir des règles robustes et cohérentes dans SQL pour vos données, et de l’accéder correctement via GraphQL.