Fabric Notebookの作成からストアドプロシージャの作成・実行までを解説

前回の記事では、「Microsoft Fabric Notebook」の概要について説明しました。

今回はストアドプロシージャの概要、Microsoft Fabric Notebook(以下、Notebook)の作成手順、Notebook上でストアドプロシージャを作成する手順について解説していきます。

本記事の想定読者

  • Notebookを使い始めたい方
  • Notebookを活用したデータ処理・分析に興味がある方
  • ストアドプロシージャを活用したい方

前提

ストアドプロシージャの概要

ストアドプロシージャとは

ストアドプロシージャとは、複数のSQL文をひとまとめにして、データベース(サーバー側)に保存しておけるプログラムのことです。

一度作成しておけば、長く複雑なSQL文を毎回書く必要はなく、名前を指定して実行するだけで処理を行うことができます。

ストアドプロシージャを利用することで得られるメリット

ストアドプロシージャを利用することで、以下のメリットが得られます。

サーバーやネットワーク負担の軽減

ストアドプロシージャはデータベースサーバーに保存されるため、クライアントから送信されるのは「処理の呼び出し」だけです。SQL文を毎回送信する必要がないので、ネットワークトラフィックを削減できます。

さらに、複数のSQL文をひとつにまとめて実行できるため、呼び出し回数を減らし、サーバー負荷の軽減やネットワーク帯域の節約が期待できます。結果として、サーバーとクライアント間の通信効率が向上します。

セキュリティリスクの低減

ストアドプロシージャを介してデータベース操作を行うことで、アプリケーションからデータベースへの直接的なアクセスを防ぎます。

これにより、意図しないSQL実行や不正な操作を抑止し、セキュリティリスクを低減できます。

開発効率と自動化の向上

ストアドプロシージャを利用することで、同じSQL文を都度記述する必要がなくなり、コードの再利用性が向上します。さらに、Fabricでは、ストアドプロシージャをパイプラインから呼び出すことで、処理を自動化して定期的な実行が可能になります。

これにより、運用の効率化と人的ミスの削減が期待できます。

Notebookの使用方法

ここでは、Notebookの基本的な使い方について説明します。

Notebookの作成

最初に、以下の手順でNotebookの作成をします。

  1. ワークスペース画面左上の 「新しい項目」 をクリックします。
  2. 表示されたメニューから 「ノートブック」 を選択します。

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

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

使用する言語の選択

作成したNotebookをクリックして開くと、以下のような画面になります。

最初に、使用する言語の選択をします。初期状態ではPySparkが選択されていますが、今回はT-SQLを利用します。言語の変更は次の2か所で行う必要があります。

  1. 画面上部のメニューバー
  2. セル右下の言語選択メニュー

それぞれ、下図の1,2の順に作業を行います。

Warehouseへの接続

言語をT-SQLに変更したら、Warehouseに接続します。

  1. Notebook左側の「追加」をクリックします。
  2. ポップアップが表示されるので、接続したいWarehouseを選択します。
  3. 「確認」をクリックします。

接続に成功すると、追加した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を中心に扱っています。趣味は旅行です。

担当記事一覧