Udostępnij przez


Użyj procedur składowanych z Fabric API dla GraphQL

Interfejs API usługi Microsoft Fabric dla języka GraphQL ułatwia wykonywanie zapytań o dane z bazy danych SQL sieci szkieletowej i innych źródeł danych sieci szkieletowej, takich jak Data Warehouse i Lakehouse, z silnie typizowanym schematami i zaawansowanym językiem zapytań, dzięki czemu deweloperzy mogą tworzyć intuicyjny interfejs API bez konieczności pisania niestandardowego kodu serwera. Procedury składowane umożliwiają hermetyzowanie i ponowne używanie złożonej logiki biznesowej, w tym walidacji danych wejściowych i przekształcania danych.

W tym przykładzie dowiesz się, jak używać procedury składowanej do rejestrowania nowych produktów z logiką po stronie serwera na potrzeby walidacji, formatowania i generowania identyfikatorów, wszystko udostępniane za pośrednictwem mutacji GraphQL w Fabric.

Wprowadzenie

Zaczynamy od utworzenia bazy danych SQL w usłudze Fabric:

  1. W obszarze roboczym Fabric wybierz Nowy element, a następnie Baza danych SQL (wersja zapoznawcza).
  2. Nadaj bazie danych nazwę, a następnie wybierz pozycję Przykładowe dane , aby szybko utworzyć wszystkie wymagane tabele i dane w bazie danych.

Scenariusz: rejestrowanie nowego produktu

Załóżmy, że chcesz utworzyć nowy produkt za pomocą:

  • Walidacja logiki cen (na przykład. ListPrice > StandardCost)
  • Przekształcenie (na przykład, kapitalizacja pierwszej litery nazwy produktu, przycięcie, a następnie zamiana numeru produktu na wielkie litery)
  • Generowanie identyfikatora produktu (przez zwiększanie najnowszego identyfikatora produktu)

Krok 1: Utwórz procedurę składowaną

Oto procedura składowana języka T-SQL, która hermetyzuje całą potrzebną logikę biznesową. W bazie danych SQL kliknij pozycję Nowe zapytanie i użyj następującej instrukcji:

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;

Kliknij przycisk Uruchom , aby przetestować wykonanie. Zauważysz nową procedurę składowaną RegisterProduct w folderze Procedury składowane w bazie danych SalesLT . Użyj następującego zapytania, aby przetestować logikę procedury:

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. Tworzenie interfejsu API GraphQL

Tworzenie interfejsu API na podstawie tabeli SQL jest szybkie, łatwe i proste. Wystarczy kliknąć przycisk Nowy interfejs API dla języka GraphQL na wstążce bazy danych SQL i podać nazwę interfejsu API.

Następnie wybierz tabele SalesLT w swojej bazie danych oraz procedurę składowaną, którą właśnie utworzyliśmy, a następnie kliknij Załaduj:

Uzyskaj ekran danych, aby wybrać tabele i procedury dzięki API GraphQL.

Interfejs API, schemat i wszystkie programy rozpoznawania kodu GraphQL są generowane automatycznie w sekundach na podstawie tabel SQL i procedury składowanej.

Krok 3. Wywołanie procedury z programu GraphQL

Gdy interfejs API będzie gotowy, składowana procedura stanie się dostępna jako mutacja w schemacie Fabric GraphQL. Przejdź do edytora zapytań i wykonaj następującą mutację:

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

Mutacja w portalu interfejsu API GraphQL wyświetlającym wyniki.

Porady

  • Fabric GraphQL automatycznie generuje pola mutacji dla procedur składowanych, które zwracają zestaw wyników zdefiniowany w danych wyjściowych procedury.
  • Logika biznesowa znajduje się wewnątrz procedury, a nie w kliencie.
  • Użyj generowania identyfikatorów deterministycznych tylko wtedy, gdy nie korzystasz z kolumn tożsamości.

Uwidacznianie procedur składowanych za pośrednictwem interfejsów API sieci szkieletowej zapewnia możliwość definiowania niezawodnych, spójnych reguł w języku SQL dla danych i uzyskiwania do niego dostępu w sposób czysty za pośrednictwem języka GraphQL.