Κοινή χρήση μέσω


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

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

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

Ξεκινήσετε

Θα ξεκινήσουμε με τη δημιουργία μιας βάσης δεδομένων SQL στο Fabric:

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

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

Ας υποθέσουμε ότι θέλετε να δημιουργήσετε ένα νέο προϊόν με:

  • Επικύρωση λογικής τιμολόγησης (για παράδειγμα, ListPrice > StandardCost)
  • Μετασχηματισμός (για παράδειγμα, κεφαλαίο το πρώτο γράμμα του ονόματος προϊόντος, αποκοπή και, στη συνέχεια, αριθμός προϊόντος με κεφαλαία)
  • Δημιουργία ProductID (προσαυξώντας το πιο πρόσφατο ProductID)

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

Ακολουθεί μια αποθηκευμένη διαδικασία T-SQL που περικλείει όλες τις επιχειρηματικές λογική που χρειαζόμαστε. Στη βάση δεδομένων SQL, κάντε κλικ στο Νέο ερώτημα και χρησιμοποιήστε την ακόλουθη πρόταση:

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;

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

Η δημιουργία ενός API από τον πίνακα SQL είναι γρήγορη, εύκολη και απλή. Απλώς πρέπει να κάνετε κλικ στο κουμπί Νέο API για GraphQL στην κορδέλα βάσης δεδομένων SQL και να δώσετε ένα όνομα στο API σας.

Στη συνέχεια, επιλέξτε τους πίνακες SalesLT στη βάση δεδομένων σας και την αποθηκευμένη διαδικασία που μόλις δημιουργήσαμε και, στη συνέχεια, κάντε κλικ στην επιλογή Φόρτωση:

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

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

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

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

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

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

Συμβουλές

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

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