前回の記事では、「Microsoft Fabric Notebook」の概要について説明しました。
今回はストアドプロシージャの概要、Microsoft Fabric Notebook(以下、Notebook)の作成手順、Notebook上でストアドプロシージャを作成する手順について解説していきます。
本記事の想定読者
- Notebookを使い始めたい方
- Notebookを活用したデータ処理・分析に興味がある方
- ストアドプロシージャを活用したい方
前提
- Microsoft Fabric(以下、Fabric)環境は構築済み
- Warehouseにデータを投入済み
- 本記事では、以下のチュートリアルで使用されているサンプルデータを利用します。
- Notebookの概要を理解している
- Notebookの概要から学びたい方は以下の記事をご覧ください
ストアドプロシージャの概要
ストアドプロシージャとは
ストアドプロシージャとは、複数のSQL文をひとまとめにして、データベース(サーバー側)に保存しておけるプログラムのことです。
一度作成しておけば、長く複雑なSQL文を毎回書く必要はなく、名前を指定して実行するだけで処理を行うことができます。
ストアドプロシージャを利用することで得られるメリット
ストアドプロシージャを利用することで、以下のメリットが得られます。
サーバーやネットワーク負担の軽減
ストアドプロシージャはデータベースサーバーに保存されるため、クライアントから送信されるのは「処理の呼び出し」だけです。SQL文を毎回送信する必要がないので、ネットワークトラフィックを削減できます。
さらに、複数のSQL文をひとつにまとめて実行できるため、呼び出し回数を減らし、サーバー負荷の軽減やネットワーク帯域の節約が期待できます。結果として、サーバーとクライアント間の通信効率が向上します。
セキュリティリスクの低減
ストアドプロシージャを介してデータベース操作を行うことで、アプリケーションからデータベースへの直接的なアクセスを防ぎます。
これにより、意図しないSQL実行や不正な操作を抑止し、セキュリティリスクを低減できます。
開発効率と自動化の向上
ストアドプロシージャを利用することで、同じSQL文を都度記述する必要がなくなり、コードの再利用性が向上します。さらに、Fabricでは、ストアドプロシージャをパイプラインから呼び出すことで、処理を自動化して定期的な実行が可能になります。
これにより、運用の効率化と人的ミスの削減が期待できます。
Notebookの使用方法
ここでは、Notebookの基本的な使い方について説明します。
Notebookの作成
最初に、以下の手順でNotebookの作成をします。
- ワークスペース画面左上の 「新しい項目」 をクリックします。
- 表示されたメニューから 「ノートブック」 を選択します。

以下のような画面が表示されるので、ノートブック名と作成先のワークスペースを入力し、作成ボタンを押します。これでNotebookの作成は完了です

作成が完了すると、ワークスペースにNotebookが表示されます。

使用する言語の選択
作成したNotebookをクリックして開くと、以下のような画面になります。

最初に、使用する言語の選択をします。初期状態ではPySparkが選択されていますが、今回はT-SQLを利用します。言語の変更は次の2か所で行う必要があります。
- 画面上部のメニューバー
- セル右下の言語選択メニュー
それぞれ、下図の1,2の順に作業を行います。

Warehouseへの接続
言語をT-SQLに変更したら、Warehouseに接続します。
- Notebook左側の「追加」をクリックします。
- ポップアップが表示されるので、接続したいWarehouseを選択します。
- 「確認」をクリックします。

接続に成功すると、追加したWarehouseが表示されます。

セルの追加・削除
追加方法
既存セルの上か下にカーソルを合わせると「コード」ボタンが表示されます。クリックすると、新たなセルが作成されます。

削除方法
不要なセルを消したい場合は、セル右上のごみ箱アイコン をクリックすることで削除できます。

ストアドプロシージャの作成
ここからは、ストアドプロシージャの作成方法について説明していきます。
作業の概要
今回実装するストアドプロシージャの内容は、不要な日付情報が含まれている「Date」テーブルから必要な日付情報のみを抽出し、新たに作成する「DateSummary」テーブルへコピーするというものです。
「Date」テーブルは32のカラムで構成されており、すべてが日付に関する情報です。以下は「Date」テーブルの一部ですが、1つの日付や日にちをさまざまな形式で保持していたり、各日付が週の何日目かといった情報も含まれています。
今回は、重複した日付表現のうち、特定の形式のみが必要となるケースを想定し、これら計32カラムのうち7つのカラムだけを抜き出します。

データ移行先のテーブルを作成
ストアドプロシージャを作成する前に、テーブルを新たに作成します。
今回は以下の内容でテーブルを作成します。
CREATE TABLE dbo.DateSummary (
DateID INT,
Date datetime2(0),
DayName VARCHAR(9),
DayOfMonth VARCHAR(2),
Month VARCHAR(2),
Year CHAR(4),
HolidayUSA VARCHAR(50)
);
セルを実行するには、セルの左側にある実行ボタンを押します。実行に成功すると、セル内左下にチェックマークがつきます。

パスに指定した「dbo」というスキーマの下に「DateSummary」テーブルが作成されていることが確認できます。

参考として、もし実行に失敗した場合はチェックマークではなく×が付き、さらにその下にエラー内容が表示されます。

ストアドプロシージャの作成
データの移行先となるテーブルを作成できたので、続いて「Date」テーブルから「DateSummary」テーブルにデータを移すプロシージャを作成していきます。以下のような構文でプロシージャを作成します。
CREATE PROCEDURE [スキーマ名].[プロシージャ名]
AS
BEGIN
実行したい作業をここに記述
END;
今回は以下の内容のSQL文を作成します。
CREATE PROCEDURE dbo.get_date_info
AS
BEGIN
INSERT INTO dbo.DateSummary (
DateID,
Date,
DayName,
DayOfMonth,
Month,
Year,
HolidayUSA
)
SELECT
DateID,
Date,
DayName,
DayOfMonth,
Month,
Year,
HolidayUSA
FROM
dbo.Date
END;
コードを実行してプロシージャの作成が成功すると、「dbo」スキーマ内の 「Stored Procedures」フォルダにプロシージャが表示されます。これで、ストアドプロシージャの作成が完了です。

ストアドプロシージャの実行
続いて、作成したストアドプロシージャの実行手順の説明に移っていきます。
まず、ストアドプロシージャを実行する前準備として、先ほど作成したテーブルにデータが登録されていないことを確認します。レコード件数を確認するSQLは以下のように記述します。
SELECT COUNT(*) FROM [スキーマ名].[テーブル名]
実行結果は0となっており、テーブルにデータが存在していないことを確認できました。

次はプロシージャの実行です。以下のように記述します。
EXEC [スキーマ名].[プロシージャ名]
プロシージャを実行します。

再度件数を確認してみます。5844件となっており、プロシージャが実行されてデータが投入されたことが分かります。これで、ストアドプロシージャが正常に動作することを確認できました。

まとめ
本記事では、ストアドプロシージャの概要と、Notebookの作成手順、Notebook上でストアドプロシージャを作成する手順について説明しました。
次回は、パイプラインでストアドプロシージャを自動実行する手順について説明します。
森 一輝(日本ビジネスシステムズ株式会社)
クラウドテクノロジーサービス事業本部 Data&AIプラットフォーム部Dataソリューション1グループ所属。Microsoft Fabricを中心に扱っています。趣味は旅行です。
担当記事一覧