Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
API Microsoft Fabric для GraphQL позволяет легко запрашивать и изменять данные из базы данных SQL Fabric и других источников данных Fabric, таких как хранилище данных и Lakehouse, с строго типизированными схемами и расширенным языком запросов, что позволяет разработчикам создавать интуитивно понятный API без написания пользовательского кода сервера. Хранимые процедуры можно использовать для инкапсулации и повторного использования сложной бизнес-логики, включая преобразование входных данных и проверки данных.
В этом примере мы узнаем, как использовать хранимую процедуру для регистрации новых продуктов с помощью логики на стороне сервера для проверки, форматирования и создания идентификаторов, доступных через мутацию GraphQL в Fabric.
Начало работы
Мы приступим к созданию базы данных SQL в Fabric:
- В рабочей области Fabric выберите новый элемент , а затем базу данных SQL (предварительная версия).
- Присвойте базе данных имя, а затем выберите пример данных , чтобы быстро создать все необходимые таблицы и данные в базе данных.
Сценарий: регистрация нового продукта
Предположим, вы хотите создать новый продукт с помощью:
- Проверка логики ценообразования (например, 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, схема и все сопоставители автоматически создаются в секундах на основе таблиц SQL и хранимой процедуры.
Шаг 3. Вызов процедуры из GraphQL
После готовности API хранимая процедура становится доступной в виде изменения в схеме GraphQL Fabric. Перейдите в редактор запросов и выполните следующую мутацию:
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 Fabric автоматически создает поля мутаций для хранимых процедур, возвращающих результирующий набор, определенный в выходных данных процедуры.
- Бизнес-логика находится внутри процедуры, а не клиента.
- Используйте детерминированное поколение идентификаторов, только если вы не используете столбцы идентификаторов.
Предоставление хранимых процедур с помощью API Fabric дает возможность определять надежные, согласованные правила в SQL для данных и получать к ним доступ с помощью GraphQL.