Zdieľať cez


Použitie uložených procedúr s rozhraním API služby Fabric pre GraphQL

Rozhranie Microsoft Fabric API pre GraphQL uľahčuje dotazovanie a zmrzačovanie údajov z databázy SQL služby Fabric a iných zdrojov údajov služby Fabric, ako sú napríklad Data Warehouse a Lakehouse, s výrazne zadanými schémami a bohatým jazykom dotazov, ktorý vývojárom umožňuje vytvárať intuitívne rozhranie API bez nutnosti písania vlastného kódu servera. Uložené procedúry môžete použiť na zapuzdrenie a opätovné použitie zložitej pracovnej logiky vrátane overenia vstupu a transformácie údajov.

V tomto príklade sa naučíme, ako používať uloženú procedúru na registráciu nových produktov s logikou na strane servera na overenie, formátovanie a generovanie ID, ktoré sú vystavené mutáciou GraphQL v službe Fabric.

Začať

Začneme vytvorením databázy SQL v službe Fabric:

  1. V pracovnom priestore služby Fabric vyberte položku Nová položka a potom databázu SQL (ukážka).
  2. Pomenujte databázu a potom výberom položky Vzorové údaje môžete rýchlo vytvoriť všetky požadované tabuľky a údaje v databáze.

Scenár: registrácia nového produktu

Predpokladajme, že chcete vytvoriť nový produkt s:

  • Overenie cenovú logiku (napríklad. ListPrice > StandardCost)
  • Transformácia (napríklad, prvé písmeno názvu produktu veľkým písmenom, orezanie a veľké číslo produktu)
  • Generovanie PRODUCTID (o zvýšenie najnovšej hodnoty ProductID)

Krok 1: Vytvorenie uloženej procedúry

Tu je uložená procedúra T-SQL, ktorá obsahuje celú potrebnú obchodnú logiku. V databáze SQL kliknite na položku Nový dotaz a použite nasledujúci príkaz:

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;

Kliknutím na položku Spustiť otestujte vykonanie. Všimnite si novú uloženú procedúru RegisterProduct v priečinku Uložené procedúry v databáze SalesLT . Na testovanie logiky postupu použite nasledujúci dotaz:

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

Krok 2: Vytvorenie rozhrania API GraphQL

Vytvorenie rozhrania API z tabuľky SQL je rýchle, jednoduché a priamočiare. Stačí kliknúť na tlačidlo Nové rozhranie API pre GraphQL na páse s nástrojmi Databázy SQL a pomenovať rozhranie API.

Ďalej vyberte tabuľky SalesLT vo vašej databáze a uloženú procedúru, ktorú sme práve vytvorili, a potom kliknite na tlačidlo Načítať:

Obrazovka Získať údaje na výber tabuliek a procedúr v API pre GraphQL.

Rozhranie API, schéma a všetky rozdeľovače GraphQL sa automaticky generujú v sekundách na základe tabuliek SQL a uloženej procedúry.

Krok 3: Volanie postupu z GraphQL

Akonáhle je rozhranie API pripravené, uložená procedúra sa stane dostupnou ako mutácia v schéme Fabric GraphQL. Prejdite na editor dotazov a vykonajte nasledujúcu mutáciu:

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

Mutácia na portáli GraphQL API zobrazujúci výsledky.

Tipy

  • Fabric GraphQL automaticky generuje mutácie polia pre uložené procedúry, ktoré vracajú výsledok súbor definovaný vo výstupe postupu.
  • Obchodná logika žije v rámci postupu, nie klienta.
  • Deterministické ID generovanie použite iba vtedy, ak sa nespoliehate na stĺpce identity.

Vystavenie uložených procedúr prostredníctvom rozhrania API služby Fabric vám umožňuje definovať pre svoje údaje robustné a konzistentné pravidlá v SQL a rýchlo k nim pristupovať prostredníctvom GraphQL.