Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozhraní Microsoft Fabric API pro GraphQL usnadňuje dotazování a modifikaci dat z databáze Fabric SQL a dalších zdrojů dat Fabric, jako jsou Data Warehouse a Lakehouse, s striktně typovanými schématy a bohatým dotazovacím jazykem, který umožňuje vývojářům vytvořit intuitivní API bez psaní vlastního kódu serveru. Uložené procedury můžete použít k zapouzdření a opětovnému použití složité obchodní logiky, včetně ověřování vstupu a transformace dat.
V tomto příkladu se naučíme používat uloženou proceduru k registraci nových produktů s logikou na straně serveru pro ověřování, formátování a generování ID, a to vše vystavené prostřednictvím mutace GraphQL ve Fabric.
Začínáme
Začínáme vytvořením databáze SQL ve Fabricu.
- V pracovním prostoru Fabric vyberte Nová položka a pak databázi SQL (náhled).
- Pojmenujte databázi a pak vyberte Ukázková data a rychle vytvořte všechny požadované tabulky a data v databázi.
Scénář: Registrace nového produktu
Předpokládejme, že chcete vytvořit nový produkt s:
- Ověřování logiky cen (například. ListPrice > StandardCost)
- Transformace (například první písmeno názvu produktu velkým písmenem, oříznout a pak použít velká písmena na číslo produktu)
- Generování ID produktu (zvýšením nejnovějšího ID produktu)
Krok 1: Vytvoření uložené procedury
Tady je uložená procedura T-SQL, která zapouzdřuje veškerou obchodní logiku, kterou potřebujeme. V databázi SQL klikněte na Nový dotaz a použijte následující pří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 Spustit otestujete spuštění. Všimnete si nové uložené procedury RegisterProduct ve složce Uložené procedury v databázi SalesLT . Pomocí následujícího dotazu otestujte logiku 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: Vytvoření rozhraní GraphQL API
Vytvoření rozhraní API z tabulky SQL je rychlé, snadné a jednoduché. Stačí kliknout na tlačítko Nové rozhraní API pro GraphQL na pásu karet databáze SQL a zadat název rozhraní API.
Dále vyberte tabulky SalesLT ve vaší databázi a uloženou proceduru, kterou jsme právě vytvořili, a pak klikněte na Načíst:
Rozhraní GraphQL API, schéma a všechny překladače se automaticky generují v sekundách na základě tabulek SQL a uložených procedur.
Krok 3: Volání procedury z GraphQL
Jakmile je rozhraní API připravené, bude uložená procedura k dispozici jako mutaci ve schématu Fabric GraphQL. Přejděte do editoru dotazů a spusťte následující mutaci:
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
}
}
Tipy
- Fabric GraphQL automaticky generuje pole s mutací pro uložené procedury, které vrací sadu výsledků definovanou ve výstupu procedury.
- Obchodní logika se nachází uvnitř procedury, ne v klientovi.
- Generování deterministických ID používejte jenom v případě, že nespoléháte na sloupce identit.
Zveřejnění uložených procedur prostřednictvím rozhraní API Fabric vám umožňuje definovat robustní, konzistentní pravidla v SQL pro vaše data a přistupovat k němu čistě přes GraphQL.