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.
Microsoft Fabric API pro GraphQL usnadňuje dotazování a mutaci dat z SQL databáze ve Fabric a dalších zdrojích dat Fabric, jako jsou sklady a jezerní domy, s silně typovanými schématy a bohatým dotazovacím jazykem, který umožňuje vývojářům vytvářet intuitivní API bez nutnosti psát vlastní serverový kód. 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.
Kdo používá uložené procedury s GraphQL
Uložené procedury v GraphQL jsou cenné pro:
- Datoví inženýři implementující workflowy pro validaci, transformaci a zpracování dat v SQL databázích ve Fabric
- Back-end vývojáři, kteří vystavují komplexní obchodní logiku ze skladů Fabric prostřednictvím moderních GraphQL API
- Architekti aplikací navrhují zabezpečená a výkonná rozhraní API, která zapouzdřují obchodní pravidla v rámci platformy Fabric.
- Vývojáři databází modernizují stávající SQL databáze ve Fabric uložených procedurách s GraphQL rozhraními
Uložené procedury použijte v případě, že potřebujete logiku na straně serveru pro ověřování dat, složité výpočty nebo databázové operace s více kroky.
Tento článek ukazuje, jak vystavit uloženou proceduru prostřednictvím mutace GraphQL ve Fabricu. Příklad implementuje pracovní postup registrace produktu s ověřováním na straně serveru, transformací dat a generováním ID – všechny zapouzdřené v uložené proceduře a přístupné prostřednictvím GraphQL.
Požadavky
Než začnete, potřebujete SQL databázi ve Fabric se vzorovými daty:
- V pracovním prostoru Fabric vyberte Nová položka>databáze SQL (Preview)
- Zadejte název databáze.
- Výběr ukázkových dat pro vytvoření požadovaných tabulek a dat
Tím se vytvoří ukázková databáze AdventureWorks, která obsahuje tabulku použitou SalesLT.Product v tomto příkladu.
Scénář: Registrace nového produktu
Tento příklad vytvoří uloženou proceduru pro registraci nových produktů s integrovanou obchodní logikou:
- Ověření: Zajišťuje, že hodnota ListPrice je větší než StandardCost.
- Transformace dat: Kapitalizace názvu produktu a normalizace čísla výrobku.
- Generování ID: Automaticky přiřadí další dostupné ID produktu.
Zapouzdřením této logiky do uložené procedury zajistíte konzistentní kvalitu dat bez ohledu na to, která klientská aplikace data odesílá.
Krok 1: Vytvoření uložené procedury
Vytvořte uloženou proceduru T-SQL, která implementuje logiku registrace produktu:
V databázi SQL vyberte Nový dotaz.
Spusťte 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;Vyberte Spustit a vytvořte uloženou proceduru.
Po vytvoření uvidíte RegisterProduct pod uloženými procedurami ve schématu SalesLT. Otestujte postup, abyste ověřili, že funguje správně:
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
Teď vytvořte rozhraní GraphQL API, které zpřístupňuje tabulky i uloženou proceduru:
- Na pásu databáze SQL vyberte Nové rozhraní API pro GraphQL.
- Zadejte název rozhraní API.
- Na obrazovce Získat data vyberte schéma SalesLT.
- Vyberte tabulky, které chcete zveřejnit, a uloženou proceduru RegisterProduct .
- Vyberte 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
Platforma Fabric automaticky generuje GraphQL mutaci pro uloženou proceduru. Název mutace se řídí vzorem execute{ProcedureName}, takže se procedura RegisterProduct změní na executeRegisterProduct.
Testovat tuto mutaci:
Otevření rozhraní API v editoru dotazů
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 } }
Všimněte si, jak obchodní logika uložené procedury automaticky zpracovává vstup:
- "graphQL swag" se stane "Graphql swag" (velká písmena)
- "gql-swag-001" se stane "GQL-SWAG-001" (nahoře)
- ID produktu se automaticky vygeneruje jako další pořadové číslo.
Osvědčené postupy
Při použití uložených procedur s rozhraním API pro GraphQL:
-
Návratové sady výsledků: Prostředky infrastruktury automaticky generují mutace pro uložené procedury, které používají
OUTPUTnebo vracejí sady výsledků. Vrácené sloupce se stanou návratovým typem mutace GraphQL. - Zapouzdření obchodní logiky: Zachovejte ověřování, transformaci a složité výpočty v uložené proceduře, nikoli v klientském kódu. Tím se zajistí konzistence napříč všemi aplikacemi.
-
Zpracování chyb bez problémů: Pomocí
THROWpříkazů můžete vracet smysluplné chybové zprávy, které je možné zobrazit prostřednictvím rozhraní GraphQL API. - Zvažte generování ID: Použijte vlastní logiku generování ID (například zvětšení maxima) pouze v případě, že nepoužíváte sloupce identit. V produkčních scénářích jsou sloupce identit obvykle spolehlivější.
- Parametry dokumentu: Použijte jasné názvy parametrů, které dobře překládají názvy polí GraphQL.
Díky zveřejnění uložených procedur prostřednictvím rozhraní Fabric API pro GraphQL zkombinujete výkon procedurální logiky SQL s flexibilním dotazovacím rozhraním GraphQL a vytvoříte robustní a udržovatelné vzory přístupu k datům.