Χρήση αποθηκευμένων διαδικασιών με το API Fabric για GraphQL

Το Microsoft Fabric API για GraphQL διευκολύνει την υποβολή ερωτημάτων και τη μετάλλαξη δεδομένων από μια βάση δεδομένων SQL στο Fabric και σε άλλες προελεύσεις δεδομένων Fabric, όπως αποθήκες και λίμνες, με σχήματα με έντονη πληκτρολόγηση και μια πλούσια γλώσσα ερωτημάτων που επιτρέπει στους προγραμματιστές να δημιουργήσουν ένα διαισθητικό API χωρίς να γράψουν προσαρμοσμένο κώδικα διακομιστή. Μπορείτε να χρησιμοποιήσετε αποθηκευμένες διαδικασίες για να συμπυκνώσετε και να επαναχρησιμοποιήσετε σύνθετη επιχειρηματική λογική, συμπεριλαμβανομένης της επικύρωσης εισόδου και του μετασχηματισμού δεδομένων.

Ποιος χρησιμοποιεί αποθηκευμένες διαδικασίες με το GraphQL

Οι αποθηκευμένες διαδικασίες στο GraphQL είναι πολύτιμες για:

  • Μηχανικοί δεδομένων που υλοποιούν ροές εργασιών επικύρωσης, μετασχηματισμού και επεξεργασίας δεδομένων σε βάσεις δεδομένων SQL στο Fabric
  • Προγραμματιστές υποστήριξης που εκθέτουν πολύπλοκη επιχειρηματική λογική από αποθήκες Fabric μέσω σύγχρονων API GraphQL
  • Αρχιτέκτονες εφαρμογών που σχεδιάζουν ασφαλή, αποδοτικά API που ενσωματώνουν επιχειρηματικούς κανόνες εντός της πλατφόρμας Fabric
  • Προγραμματιστές βάσεων δεδομένων που εκσυγχρονίζουν υπάρχουσες βάσεις δεδομένων SQL σε αποθηκευμένες διαδικασίες Fabric με διασυνδέσεις GraphQL

Χρησιμοποιήστε αποθηκευμένες διαδικασίες όταν χρειάζεστε λογική από την πλευρά του διακομιστή για επικύρωση δεδομένων, σύνθετους υπολογισμούς ή λειτουργίες βάσης δεδομένων πολλών βημάτων.

Αυτό το άρθρο δείχνει πώς να εκθέσετε μια αποθηκευμένη διαδικασία μέσω μιας μετάλλαξης GraphQL στο Fabric. Το παράδειγμα υλοποιεί μια ροή εργασιών εγγραφής προϊόντος με επικύρωση από την πλευρά του διακομιστή, μετασχηματισμό δεδομένων και δημιουργία αναγνωριστικού—όλα ενσωματωμένα σε μια αποθηκευμένη διαδικασία και προσβάσιμα μέσω του GraphQL.

Προαπαιτούμενα

Πριν ξεκινήσετε, χρειάζεστε μια βάση δεδομένων SQL στο Fabric με δείγμα δεδομένων:

  1. Στον χώρο εργασίας Fabric, επιλέξτε Νέο στοιχείο>βάσης δεδομένων SQL (έκδοση προεπισκόπησης)
  2. Δώστε ένα όνομα στη βάση δεδομένων σας
  3. Επιλέξτε Δείγμα δεδομένων για να δημιουργήσετε τους απαιτούμενους πίνακες και δεδομένα

Αυτό δημιουργεί το δείγμα βάσης δεδομένων AdventureWorks, το οποίο περιλαμβάνει τον πίνακα που χρησιμοποιείται σε αυτό το SalesLT.Product παράδειγμα.

Σενάριο: καταχώρηση νέου προϊόντος

Αυτό το παράδειγμα δημιουργεί μια αποθηκευμένη διαδικασία για την καταχώριση νέων προϊόντων με ενσωματωμένη επιχειρηματική λογική:

  • Επικύρωση: Διασφαλίζει ότι η τιμή καταλόγου είναι μεγαλύτερη από το StandardCost
  • Μετασχηματισμός δεδομένων: Γράφει κεφαλαία το όνομα του προϊόντος και κανονικοποιεί τον αριθμό προϊόντος
  • Δημιουργία αναγνωριστικού: Εκχωρεί αυτόματα το επόμενο διαθέσιμο ProductID

Ενσωματώνοντας αυτήν τη λογική σε μια αποθηκευμένη διαδικασία, εξασφαλίζετε σταθερή ποιότητα δεδομένων ανεξάρτητα από την εφαρμογή πελάτη που υποβάλλει τα δεδομένα.

Βήμα 1: Δημιουργήστε την αποθηκευμένη διαδικασία

Δημιουργήστε μια αποθηκευμένη διαδικασία T-SQL που υλοποιεί τη λογική καταχώρισης προϊόντος:

  1. Στη βάση δεδομένων SQL, επιλέξτε Νέο ερώτημα

  2. Εκτελέστε την ακόλουθη δήλωση:

    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. Επιλέξτε Εκτέλεση για να δημιουργήσετε την αποθηκευμένη διαδικασία

  4. Μετά τη δημιουργία, θα δείτε το RegisterProduct στην περιοχή Αποθηκευμένες διαδικασίες στο σχήμα SalesLT . Δοκιμάστε τη διαδικασία για να επαληθεύσετε ότι λειτουργεί σωστά:

    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
    

Βήμα 2: Δημιουργία API GraphQL

Τώρα δημιουργήστε ένα GraphQL API που εκθέτει τόσο τους πίνακες όσο και την αποθηκευμένη διαδικασία:

  1. Στην κορδέλα της βάσης δεδομένων SQL, επιλέξτε Νέο API για το GraphQL
  2. Δώστε ένα όνομα στο API σας
  3. Στην οθόνη Λήψη δεδομένων, επιλέξτε το σχήμα SalesLT
  4. Επιλέξτε τους πίνακες που θέλετε να εκθέσετε και την αποθηκευμένη διαδικασία RegisterProduct
  5. Επιλέξτε Φόρτωση

Λήψη οθόνης δεδομένων για να επιλέξετε πίνακες και διαδικασίες στο API για GraphQL.

Το API GraphQL, το σχήμα και όλα τα στοιχεία επίλυσης δημιουργούνται αυτόματα σε δευτερόλεπτα με βάση τους πίνακες SQL και την αποθηκευμένη διαδικασία.

Βήμα 3: Καλέστε τη διαδικασία από το GraphQL

Το Fabric δημιουργεί αυτόματα μια μετάλλαξη GraphQL για την αποθηκευμένη διαδικασία. Το όνομα της μετάλλαξης ακολουθεί το μοτίβο execute{ProcedureName}, οπότε η διαδικασία RegisterProduct γίνεται executeRegisterProduct.

Για να ελέγξετε τη μετάλλαξη:

  1. Ανοίξτε το API στο πρόγραμμα επεξεργασίας ερωτημάτων

  2. Εκτελέστε την ακόλουθη μετάλλαξη:

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

Μετάλλαξη στην πύλη GraphQL API που εμφανίζει τα αποτελέσματα.

Παρατηρήστε πώς η επιχειρηματική λογική της αποθηκευμένης διαδικασίας επεξεργάζεται αυτόματα την είσοδο:

  • Το "graphQL swag" γίνεται "Graphql swag" (με κεφαλαία)
  • Το "gql-swag-001" γίνεται "GQL-SWAG-001" (κεφαλαία)
  • Το ProductID δημιουργείται αυτόματα ως ο επόμενος διαδοχικός αριθμός

Βέλτιστες πρακτικές

Όταν χρησιμοποιείτε αποθηκευμένες διαδικασίες με API για GraphQL:

  • Επιστροφή συνόλων αποτελεσμάτων: Το Fabric δημιουργεί αυτόματα μεταλλάξεις για αποθηκευμένες διαδικασίες που χρησιμοποιούν OUTPUT ή επιστρέφουν σύνολα αποτελεσμάτων. Οι στήλες που επιστρέφονται γίνονται ο τύπος επιστροφής της μετάλλαξης GraphQL.
  • Ενθυλάκωση επιχειρηματικής λογικής: Διατηρήστε την επικύρωση, τον μετασχηματισμό και τους σύνθετους υπολογισμούς στην αποθηκευμένη διαδικασία και όχι στον κώδικα πελάτη. Αυτό εξασφαλίζει συνέπεια σε όλες τις εφαρμογές.
  • Χειριστείτε τα σφάλματα με χάρη: Χρησιμοποιήστε THROW δηλώσεις για να επιστρέψετε ουσιαστικά μηνύματα σφάλματος που μπορούν να εμφανιστούν μέσω του GraphQL API.
  • Εξετάστε το ενδεχόμενο δημιουργίας αναγνωριστικού: Χρησιμοποιήστε λογική δημιουργίας προσαρμοσμένου αναγνωριστικού (όπως η αύξηση του MAX) μόνο αν δεν χρησιμοποιείτε στήλες ταυτότητας. Για σενάρια παραγωγής, οι στήλες ταυτότητας είναι συνήθως πιο αξιόπιστες.
  • Παράμετροι εγγράφου: Χρησιμοποιήστε σαφή ονόματα παραμέτρων που μεταφράζονται καλά σε ονόματα πεδίων GraphQL.

Εκθέτοντας αποθηκευμένες διαδικασίες μέσω του Fabric API για GraphQL, συνδυάζετε τη δύναμη της διαδικαστικής λογικής της SQL με την ευέλικτη διεπαφή ερωτημάτων της GraphQL, δημιουργώντας ισχυρά και διατηρήσιμα μοτίβα πρόσβασης δεδομένων.