Aracılığıyla paylaş


GraphQL için Fabric API ile saklı yordamları kullanma

GraphQL için Microsoft Fabric API, geliştiricilerin özel sunucu kodu yazmadan sezgisel bir API oluşturmasına olanak sağlayan kapsamlı şemalar ve zengin bir sorgu diliyle bir Fabric SQL veritabanı ve Veri Ambarı ve Lakehouse gibi diğer Fabric veri kaynaklarından verileri sorgulamayı ve değiştirmeyi kolaylaştırır. Giriş doğrulama ve veri dönüştürme dahil olmak üzere karmaşık iş mantığını kapsüllemek ve yeniden kullanmak için saklı yordamları kullanabilirsiniz.

Bu örnekte, doğrulama, biçimlendirme ve kimlik oluşturma için sunucu tarafı mantığı kullanarak yeni ürünleri kaydetmek amacıyla saklı yordam kullanımını, Fabric'te bir GraphQL mutasyonu aracılığıyla öğreniyoruz.

Başlayın

Fabric'te bir SQL veritabanı oluşturarak çalışmaya başlıyoruz:

  1. Doku çalışma alanınızda Yeni Öğe'yi seçin ve ardından SQL veritabanı (önizleme) seçeneğini seçin.
  2. Veritabanınıza bir ad verin, ardından veritabanınızda gerekli tüm tabloları ve verileri hızla oluşturmak için Örnek veriler'i seçin.

Senaryo: Yeni bir ürün kaydetme

Aşağıdakilerle yeni bir ürün oluşturmak istediğinizi varsayalım:

  • Fiyatlandırma mantığının doğrulanması (örneğin, ListPrice > StandardCost)
  • Dönüştürme (örneğin, ürün adının ilk harfini büyük harfe çevirme, kesme ve sonra ürün numarasını büyük harfe çevirme)
  • ProductID oluşturma (en son ProductID'yi artırarak)

1. Adım: Saklı Yordamı Oluşturma

İhtiyacımız olan tüm iş mantığını içeren bir T-SQL saklı prosedür burada. SQL veritabanınızda Yeni Sorgu'ya tıklayın ve aşağıdaki deyimi kullanın:

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;

Yürütmeyi test etmek için Çalıştır'a tıklayın. SalesLT veritabanındaki Saklı Yordamlar klasörünün altında RegisterProduct adlı yeni bir saklı yordam olduğunu fark edeceksiniz. Yordam mantığını test etmek için aşağıdaki sorguyu kullanın:

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. Adım: GraphQL API'si oluşturma

SQL tablonuzdan API oluşturmak hızlı, kolay ve basittir. SQL veritabanı şeridinde GraphQL için Yeni API düğmesine tıklamanız ve API'nize bir ad vermeniz yeterlidir.

Ardından veritabanınızdaki SalesLT tablolarını ve yeni oluşturduğumuz saklı yordamı seçip Yükle'ye tıklayın:

GraphQL için API'de tabloları ve yordamları seçmek için veri alma ekranı.

GraphQL API'si, şeması ve tüm çözümleyiciler, SQL tablolarına ve saklı yordama göre saniyeler içinde otomatik olarak oluşturulur.

3. Adım: GraphQL'den prosedürü çağırma

API hazır olduğunda saklı yordam, Fabric GraphQL şemasında bir mutasyon olarak kullanılabilir hale gelir. Sorgu düzenleyicisine gidin ve aşağıdaki mutasyonu yürütür:

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 portalında sonuçları gösteren mutasyon.

İpuçları

  • Fabric GraphQL, saklı yordamların yordam çıkışında tanımlanan bir sonuç kümesi döndürmesi durumunda, bu yordamlar için mutasyon alanlarını otomatik olarak oluşturur.
  • İş mantığı, istemcinin değil prosedürün içinde yer alır.
  • Belirlenimci kimlik oluşturma özelliğini yalnızca kimlik sütunlarına bağımlı değilseniz kullanın.

Saklı yordamların Doku API'leri aracılığıyla kullanıma sunulması, verileriniz için SQL'de sağlam ve tutarlı kurallar tanımlama ve GraphQL aracılığıyla bu kurallara temiz bir şekilde erişme gücü sağlar.