Condividi tramite


Usare le stored procedure con l'API Fabric per GraphQL

L'API di Microsoft Fabric per GraphQL semplifica le query e le modifiche dei dati da un database SQL di Fabric e da altre origini dati di Fabric, come Data Warehouse e Lakehouse, con schemi fortemente tipizzati e un linguaggio di query avanzato che consente agli sviluppatori di creare un'API intuitiva senza scrivere codice server personalizzato. È possibile usare stored procedure per incapsulare e riutilizzare una logica di business complessa, inclusa la convalida e la trasformazione dei dati di input.

In questo esempio viene illustrato come usare una stored procedure per registrare nuovi prodotti, con logica lato server per la convalida, la formattazione e la generazione di ID, tutte esposte tramite una mutazione GraphQL in Fabric.

Inizia subito

Per iniziare, creare un database SQL in Fabric:

  1. Nello spazio di lavoro Fabric, seleziona Nuovo elemento e quindi database SQL (anteprima).
  2. Assegnare un nome al database, quindi selezionare Dati di esempio per creare rapidamente tutte le tabelle e i dati necessari nel database.

Scenario: registrare un nuovo prodotto

Si supponga di voler creare un nuovo prodotto con:

  • Convalida della logica dei prezzi , ad esempio. ListPrice > StandardCost)
  • Trasformazione (ad esempio, capitalizzare la prima lettera del nome del prodotto, tagliare e poi trasformare in maiuscolo il numero di prodotto)
  • Generazione di ProductID (incrementando l'id prodotto più recente)

Passaggio 1: Creare la Stored Procedure

Ecco una stored procedure T-SQL che incapsula tutta la logica di business necessaria. Nel database SQL fare clic su Nuova query e usare l'istruzione seguente:

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;

Fare clic su Esegui per testare l'esecuzione. Ti accorgi di una nuova stored procedure RegisterProduct nella cartella Stored Procedures nel database SalesLT. Usare la query seguente per testare la logica della procedura:

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

Passaggio 2: Creare un'API GraphQL

La creazione di un'API dalla tua tabella SQL è rapida, semplice e intuitiva. È sufficiente fare clic sul pulsante Nuova API per GraphQL nella barra multifunzione del database SQL e assegnare un nome all'API.

Selezionate innanzitutto le tabelle SalesLT nel vostro database e la stored procedure che abbiamo appena creato, quindi cliccate su Carica:

Schermata Recupera dati per selezionare tabelle e procedure nell'API per GraphQL

L'API GraphQL, lo schema e tutti i resolver vengono generati automaticamente in pochi secondi in base alle tabelle SQL e alla stored procedure.

Passaggio 3: Chiamare la procedura da GraphQL

Quando l'API è pronta, la stored procedure diventa disponibile come mutazione nello schema GraphQL di Fabric. Passare all'editor di query ed eseguire la mutazione seguente:

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
   }
}

Mutazione nel portale dell'API GraphQL che visualizza i risultati

Suggerimenti

  • Fabric GraphQL genera automaticamente campi di mutazione per le stored procedure che restituiscono un set di risultati definito nell'output della procedura.
  • La logica di business si trova all'interno della procedura, non del client.
  • Usare la generazione di ID deterministici solo se non si fa affidamento sulle colonne Identity.

L'esposizione di stored procedure tramite le API fabric consente di definire regole affidabili e coerenti in SQL per i dati e accedervi in modo pulito tramite GraphQL.