Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met De Microsoft Fabric-API voor GraphQL kunt u eenvoudig query's uitvoeren op gegevens uit een Fabric SQL-database en andere Fabric-gegevensbronnen, zoals Data Warehouse en Lakehouse, met sterk getypte schema's en een uitgebreide querytaal, zodat ontwikkelaars een intuïtieve API kunnen maken zonder aangepaste servercode te schrijven. U kunt opgeslagen procedures gebruiken om complexe bedrijfslogica in te kapselen en opnieuw te gebruiken, inclusief invoervalidatie en gegevenstransformatie.
Wie gebruikt opgeslagen procedures met GraphQL
Opgeslagen procedures in GraphQL zijn waardevol voor:
- Data engineers implementeren gegevensvalidatie, transformatie en verwerking van werkstromen in Fabric SQL-databases
- Back-end-ontwikkelaars die complexe bedrijfslogica van Fabric-magazijnen beschikbaar maken via moderne GraphQL-API's
- Toepassingsarchitecten ontwerpen veilige, performante API's die bedrijfsregels in het Fabric-platform inkapselen
- Databaseontwikkelaars moderniseren bestaande opgeslagen procedures voor Fabric SQL-databases met GraphQL-interfaces
Gebruik opgeslagen procedures wanneer u logica aan de serverzijde nodig hebt voor gegevensvalidatie, complexe berekeningen of databasebewerkingen met meerdere stappen.
In dit artikel wordt gedemonstreerd hoe u een opgeslagen procedure beschikbaar maakt via een GraphQL-mutatie in Fabric. In het voorbeeld wordt een werkstroom voor productregistratie geïmplementeerd met validatie aan de serverzijde, gegevenstransformatie en het genereren van id's, allemaal ingekapseld in een opgeslagen procedure en toegankelijk via GraphQL.
Vereiste voorwaarden
Voordat u begint, hebt u een Fabric SQL-database met voorbeeldgegevens nodig:
- Selecteer in uw Fabric-werkruimte Nieuw item>SQL-database (preview)
- Geef uw database een naam
- Voorbeeldgegevens selecteren om de vereiste tabellen en gegevens te maken
Hiermee maakt u de AdventureWorks-voorbeelddatabase, die de SalesLT.Product tabel bevat die in dit voorbeeld wordt gebruikt.
Scenario: een nieuw product registreren
In dit voorbeeld wordt een opgeslagen procedure gemaakt voor het registreren van nieuwe producten met ingebouwde bedrijfslogica:
- Validatie: Zorgt ervoor dat ListPrice groter is dan StandardCost
- Gegevenstransformatie: de productnaam in hoofdletters en normaliseert het productnummer
- Id-generatie: hiermee wordt automatisch de volgende beschikbare product-id toegewezen
Door deze logica in een opgeslagen procedure in te kapselen, zorgt u voor consistente gegevenskwaliteit, ongeacht welke clienttoepassing de gegevens verzendt.
Stap 1: De opgeslagen procedure maken
Maak een opgeslagen T-SQL-procedure waarmee de productregistratielogica wordt geïmplementeerd:
Selecteer nieuwe query in uw SQL-database
Voer de volgende opdracht uit:
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;Selecteer Uitvoeren om de opgeslagen procedure te maken
Na het maken ziet u RegisterProduct onder Opgeslagen procedures in het SalesLT-schema . Test de procedure om te controleren of deze correct werkt:
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
Stap 2: Een GraphQL-API maken
Maak nu een GraphQL-API die zowel de tabellen als de opgeslagen procedure beschikbaar maakt:
- Selecteer op het lint van de SQL-database de optie Nieuwe API voor GraphQL
- Geef uw API een naam
- Selecteer in het scherm Gegevens ophalen het SalesLT-schema
- Selecteer de tabellen die u wilt weergeven en de opgeslagen procedure RegisterProduct
- Laden selecteren
De GraphQL-API, het schema en alle resolvers worden in seconden automatisch gegenereerd op basis van de SQL-tabellen en opgeslagen procedure.
Stap 3: De procedure aanroepen vanuit GraphQL
Fabric genereert automatisch een GraphQL-mutatie voor de opgeslagen procedure. De mutatienaam volgt het patroon execute{ProcedureName}, dus de RegisterProduct-procedure wordt executeRegisterProduct.
De mutatie testen:
Open de API in de query-editor
Voer de volgende mutatie uit:
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 } }
U ziet hoe de bedrijfslogica van de opgeslagen procedure automatisch de invoer verwerkt:
- "graphQL swag" wordt "Graphql swag" (met hoofdletter)
- "gql-swag-001" wordt "GQL-SWAG-001" (hoofdletters)
- Product-id wordt automatisch gegenereerd als het volgende opeenvolgende getal
Beste praktijken
Wanneer u opgeslagen procedures gebruikt met API voor GraphQL:
-
Resultatensets retourneren: Fabric genereert automatisch mutaties voor opgeslagen procedures die
OUTPUTgebruiken of resultatensets retourneren. De geretourneerde kolommen worden het retourtype van de GraphQL-mutatie. - Bedrijfslogica inkapselen: validatie, transformatie en complexe berekeningen behouden in de opgeslagen procedure in plaats van in clientcode. Dit zorgt voor consistentie in alle toepassingen.
-
Fouten probleemloos verwerken: gebruik
THROWinstructies om zinvolle foutberichten te retourneren die kunnen worden weergegeven via de GraphQL-API. - Overweeg id-generatie: gebruik alleen logica voor het genereren van aangepaste id's (zoals het verhogen van MAX) als u geen identiteitskolommen gebruikt. Voor productiescenario's zijn identiteitskolommen meestal betrouwbaarder.
- Documentparameters: Gebruik duidelijke parameternamen die goed vertalen naar GraphQL-veldnamen.
Door opgeslagen procedures beschikbaar te maken via fabric-API voor GraphQL, combineert u de kracht van de procedurele logica van SQL met de flexibele queryinterface van GraphQL, waardoor robuuste en onderhoudbare patronen voor gegevenstoegang worden gemaakt.