Microsoft Fabric API for GraphQL を使用すると、厳密に型指定されたスキーマと豊富なクエリ言語を使用して、Fabric SQL データベースやその他の Fabric データ ソース (Data Warehouse や Lakehouse など) からデータのクエリと変更を簡単に行えるようになり、開発者はカスタム サーバー コードを記述せずに直感的な API を作成できます。 ストアド プロシージャを使用すると、入力の検証やデータ変換など、複雑なビジネス ロジックをカプセル化して再利用できます。
この例では、ストアド プロシージャを使用して、検証、書式設定、および ID 生成のためのサーバー側ロジックを使用して、新しい製品を登録する方法について説明します。これは、すべて Fabric の GraphQL の変更によって公開されます。
始めましょう
ここでは、Fabric で SQL データベースを作成することから始めます。
- 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;
[ 実行 ] をクリックして実行をテストします。 SalesLT データベースのストアド プロシージャ フォルダーの下に、新しいストアド プロシージャRegisterProduct があります。 プロシージャ ロジックをテストするには、次のクエリを使用します。
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: GraphQL API を作成する
SQL テーブルから API を作成することは、高速で簡単で簡単です。 SQL データベース リボンの [ GraphQL 用の新しい API ] ボタンをクリックし、API に名前を付けるだけで済みます。
次に、データベース内の SalesLT テーブルと先ほど作成したストアド プロシージャを選択し、[ 読み込み] をクリックします。
GraphQL API、スキーマ、およびすべてのリゾルバーは、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
}
}
ヒント
- Fabric GraphQL は、プロシージャの出力で定義された結果セットを返すストアド プロシージャの変更フィールドを自動的に生成します。
- ビジネス ロジックは、クライアントではなく、プロシージャ内に存在します。
- 決定論的 ID の生成は、ID 列に依存しない場合にのみ使用します。
Fabric API を使用してストアド プロシージャを公開すると、データの SQL で堅牢で一貫性のある規則を定義し、GraphQL を介してクリーンにアクセスできます。