Tallennettujen toimintosarjojen käyttäminen GraphQL:n Fabric-ohjelmointirajapinnan avulla

Microsoft Fabric API for GraphQL tekee helpoksi kyselyiden ja muuntamisen SQL-tietokannasta Fabric-tietokannasta sekä muista Fabric-tietolähteistä, kuten varastoista ja järvivarastoista, vahvasti tyypitettyjen skeemojen ja rikkaan kyselykielen avulla, joiden avulla kehittäjät voivat luoda intuitiivisen API:n ilman mukautetun palvelinkoodin kirjoittamista. Voit käyttää tallennettuja toimintosarjoja monitasoisen liiketoimintalogiikan tiivistämiseen ja uudelleenkäyttämiseen, mukaan lukien syötteiden vahvistus ja tietojen muuntaminen.

Kuka käyttää tallennettuja proseduureja GraphQL:n kanssa

GraphQL:ssä tallennetut proseduurit ovat arvokkaita:

  • Data-insinöörit, jotka toteuttavat datan validointia, muunnosta ja prosessointia SQL-tietokannoissa Fabric-ohjelmassa
  • Backend-kehittäjät paljastavat monimutkaista liiketoimintalogiikkaa Fabric-varastoista nykyaikaisten GraphQL-rajapintojen kautta
  • Sovellusarkkitehdit suunnittelevat turvallisia, suorituskykyisiä rajapintoja, jotka kapseloivat liiketoimintasääntöjä Fabric-alustaan
  • Tietokantakehittäjät modernisoivat olemassa olevaa SQL-tietokantaa Fabric-tallennetuissa proseduureissa GraphQL-rajapintojen avulla

Käytä tallennettuja proseduureja, kun tarvitset palvelinpuolen logiikkaa datan validointiin, monimutkaisiin laskelmiin tai monivaiheisiin tietokantaoperaatioihin.

Tämä artikkeli osoittaa, miten tallennettu toimenpide voidaan altistaa GraphQL-mutaation kautta Fabricissa. Esimerkki toteuttaa tuoterekisteröintityönkulun, jossa on palvelinpuolen validointi, datan muuntaminen ja ID:n generointi—kaikki kapseloituna tallennettuun proseduuriin ja käytettävissä GraphQL:n kautta.

Edellytykset

Ennen kuin aloitat, tarvitset SQL-tietokannan Fabric-muodossa, jossa on esimerkkidataa:

  1. Fabric-työtilassasi valitse New Item>SQL -tietokanta (esikatselu)
  2. Anna tietokannallesi nimi
  3. Valitse Näytedata luodaksesi tarvittavat taulukot ja tiedot

Tämä luo AdventureWorks-esimerkkitietokannan, joka sisältää tässä esimerkissä käytetyn SalesLT.Product taulukon.

Skenaario: rekisteröi uusi tuote

Tämä esimerkki luo tallennetun menettelyn uusien tuotteiden rekisteröintiin, jossa on sisäänrakennettu liiketoimintalogiikka:

  • Validointi: Varmistaa, että ListPrice on korkeampi kuin StandardCost
  • Datamuunnos: Kirjoittaa tuotteen nimen isolla ja normalisoi tuotteen numeron
  • ID:n generointi: Määrittää automaattisesti seuraavan saatavilla olevan ProductID:n

Kapseloimalla tämän logiikan tallennettuun proseduuriin varmistat johdonmukaisen datan laadun riippumatta siitä, mikä asiakassovellus lähettää tiedot.

Vaihe 1: Luo tallennettu proseduuri

Luo T-SQL-tallennettu menettely, joka toteuttaa tuotteen rekisteröintilogiikan:

  1. SQL-tietokannastasi valitse Uusi kysely

  2. Suorita seuraava lause:

    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;
    
  3. Valitse Suorita luodaksesi tallennetun proseduurin

  4. Luomisen jälkeen näet RegisterProductin SalesLT-skeemassa Stored Procedures -osiossa. Testaa menettely varmistaaksesi, että se toimii oikein:

    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
    

Vaihe 2: Luo GraphQL-ohjelmointirajapinta

Luo nyt GraphQL-rajapinta, joka paljastaa sekä taulukot että tallennetun menettelyn:

  1. SQL-tietokantanauhasta valitse Uusi API GraphQL:lle
  2. Anna API:llesi nimi
  3. Valitse Data-hakunäytöstäSalesLT-skeema
  4. Valitse haluamasi taulukot ja RegisterProduct-tallennettu menettely
  5. Valitse lataus

Hae tiedot -näyttö taulukoiden ja menettelyjen valitsemiseksi GraphQL:n API:ssa.

GraphQL-ohjelmointirajapinta, rakenne ja kaikki ratkaisut luodaan automaattisesti sekunneissa SQL-taulukoiden ja tallennetun toimintosarjan perusteella.

Vaihe 3: Kutsu toimintosarjaa GraphQL:stä

Fabric generoi automaattisesti GraphQL-mutaation tallennetulle proseduurille. Mutaation nimi noudattaa kaavaa execute{ProcedureName}, joten RegisterProduct -menettely muuttuu executeRegisterProduct.

Mutaation testaamiseen:

  1. Avaa API kyselyeditorissa

  2. Suorita seuraava mutaatio:

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

Mutaatio GraphQL API -portaalissa, joka näyttää tulokset.

Huomaa, miten tallennetun proseduurin liiketoimintalogiikka käsittelee syötteen automaattisesti:

  • "graphQL swag" muuttuu "Graphql swagiksi" (isolla isolla)
  • "gql-swag-001" muuttuu "GQL-SWAG-001" (isolla kirjaimella)
  • ProductID luodaan automaattisesti seuraavana peräkkäisenä numerona

Parhaat käytännöt

Kun käytetään tallennettuja proseduuria API:n kanssa GraphQL:lle:

  • Tulosjoukkojen palautus: Fabric generoi automaattisesti mutaatioita tallennetuille proseduureille, jotka käyttävät OUTPUT tai palauttavat tulosjoukkoja. Palautetut sarakkeet muodostavat GraphQL-mutaation palautustyypin.
  • Kapseloi liiketoimintalogiikka: Pidä validointi, muunnos ja monimutkaiset laskelmat tallennetussa prosessissa asiakaskoodin sijaan. Tämä varmistaa johdonmukaisuuden kaikissa sovelluksissa.
  • Käsittele virheitä tyylikkäästi: Käytä THROW lauseita merkityksellisten virheviestien palauttamiseen, jotka voidaan esittää GraphQL API:n kautta.
  • Harkitse ID:n generointia: Käytä mukautettua ID-generointilogiikkaa (kuten MAX:n kasvattamista) vain, jos et käytä identiteettisarakkeita. Tuotantotilanteissa identiteettisarakkeet ovat yleensä luotettavampia.
  • Dokumentin parametrit: Käytä selkeitä parametrien nimiä, jotka kääntyvät hyvin GraphQL-kenttien nimiksi.

Altistamalla tallennetut proseduurit Fabric API:n kautta GraphQL:lle yhdistät SQL:n proseduraalisen logiikan ja GraphQL:n joustavan kyselyrajapinnan voiman, luoden vahvoja ja ylläpidettäviä tiedonhakumalleja.