Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Το 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 με δείγμα δεδομένων:
- Στον χώρο εργασίας Fabric, επιλέξτε Νέο στοιχείο>βάσης δεδομένων SQL (έκδοση προεπισκόπησης)
- Δώστε ένα όνομα στη βάση δεδομένων σας
- Επιλέξτε Δείγμα δεδομένων για να δημιουργήσετε τους απαιτούμενους πίνακες και δεδομένα
Αυτό δημιουργεί το δείγμα βάσης δεδομένων AdventureWorks, το οποίο περιλαμβάνει τον πίνακα που χρησιμοποιείται σε αυτό το SalesLT.Product παράδειγμα.
Σενάριο: καταχώρηση νέου προϊόντος
Αυτό το παράδειγμα δημιουργεί μια αποθηκευμένη διαδικασία για την καταχώριση νέων προϊόντων με ενσωματωμένη επιχειρηματική λογική:
- Επικύρωση: Διασφαλίζει ότι η τιμή καταλόγου είναι μεγαλύτερη από το StandardCost
- Μετασχηματισμός δεδομένων: Γράφει κεφαλαία το όνομα του προϊόντος και κανονικοποιεί τον αριθμό προϊόντος
- Δημιουργία αναγνωριστικού: Εκχωρεί αυτόματα το επόμενο διαθέσιμο 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
Τώρα δημιουργήστε ένα GraphQL API που εκθέτει τόσο τους πίνακες όσο και την αποθηκευμένη διαδικασία:
- Στην κορδέλα της βάσης δεδομένων SQL, επιλέξτε Νέο API για το GraphQL
- Δώστε ένα όνομα στο API σας
- Στην οθόνη Λήψη δεδομένων, επιλέξτε το σχήμα SalesLT
- Επιλέξτε τους πίνακες που θέλετε να εκθέσετε και την αποθηκευμένη διαδικασία RegisterProduct
- Επιλέξτε Φόρτωση
Το API GraphQL, το σχήμα και όλα τα στοιχεία επίλυσης δημιουργούνται αυτόματα σε δευτερόλεπτα με βάση τους πίνακες SQL και την αποθηκευμένη διαδικασία.
Βήμα 3: Καλέστε τη διαδικασία από το GraphQL
Το Fabric δημιουργεί αυτόματα μια μετάλλαξη GraphQL για την αποθηκευμένη διαδικασία. Το όνομα της μετάλλαξης ακολουθεί το μοτίβο execute{ProcedureName}, οπότε η διαδικασία RegisterProduct γίνεται executeRegisterProduct.
Για να ελέγξετε τη μετάλλαξη:
Ανοίξτε το API στο πρόγραμμα επεξεργασίας ερωτημάτων
Εκτελέστε την ακόλουθη μετάλλαξη:
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 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, δημιουργώντας ισχυρά και διατηρήσιμα μοτίβα πρόσβασης δεδομένων.