はじめに
Microsoft Fabric (以降 Fabric) では、Ignite 2024 で Azure SQL Database とのミラーリングが一般公開されましたので、その機能に関して触れてみたいと思います。
Microsoft Fabric Advent Calendar 2024 の 17 日目の記事です。
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
ミラーリング とは
ミラーリングは Fabric と外部のソースをほぼリアルタイムで連携する機能になります。ミラーリングには 3 種類ありますが、ここではテーブルのレプリケーションを示すデータベースミラーリングを対象にします。
以下の表にあるように、様々な種類の外部データソースが対象となっています。Ignite 2024 では他社製品の Snowflake へのミラーリングの一般公開に加えて、Azure SQL Database への機能も一般公開されました。
ミラーリング機能によって、リレーショナルデータベースである Azure SQL Database で生じたトランザクションをほぼリアルタイムで Fabirc に連携することができます。その結果、トランザクションで生じたデータも Fabric 上のデータと組み合わせて分析を行うことが可能です。
制限事項
利用に際して対象となるテーブル、列に関していくつか制限がありますが、それはこちらにまとめられています。特に利用可能な Fabric のリージョンに関しては、一覧がありますので試される際にはご確認ください。
Azure SQL データベースからの Microsoft Fabric ミラー化データベースの制限事項
その他には、ミラーリング機能の対象となる Azure SQL Database 側のサービスレベルについても記載があります。
手順
以下の公開情報に具体的な手順がありますので、こちらを参考に進めていきます。
チュートリアル: Azure SQL Database から Microsoft Fabric ミラー化データベースを構成する
1.Azure SQL Database を作成する
既に Azure SQL Database が存在する場合は、手順 1 はスキップしても問題ありません。
以下の公開情報に沿って Azure SQL Database を作成することができます。
その際には、ミラーリングがサポートされるサービスレベルである必要があります。今回は、Standard S3 (DTU 100) で作成しました。
クイックスタート: 単一データベースを作成する - Azure SQL Database
2.マネージド ID を有効にします
Azure Portal 上の Azure SQL Database の論理サーバーの [ID] から、マネージド ID を有効化します。
ここではシステム割り当て ID とします。
3.Azure SQL Database にアクセスします
SQL Server Management Studio (SSMS) などから権限のあるユーザーで、Azure SQL Database にログインします。
クイック スタート:SSMS を使用して Azure SQL Database または Azure SQL Managed Instance に接続してクエリを実行する
4.ログインを生成します
作成した Azure SQL Database の master データベースにアクセスし、ログインを生成するため以下のクエリを実行します。
CREATE LOGIN fabric_login WITH PASSWORD = '<strong password>';
ALTER SERVER ROLE [##MS_ServerStateReader##] ADD MEMBER fabric_login;
5.ユーザーの作成します
上記ログインに紐づくユーザーを作成するため、ミラーリング対象データベースにアクセスし、以下のクエリを実行します。
CREATE USER fabric_user FOR LOGIN fabric_login;
GRANT CONTROL TO fabric_user;
6.データベース上にテーブルを作成します
以下のクエリでテーブルを作成しておきます。
こちらのリンクのデータを参考に、New York のタクシーの乗車に関するトランザクションデータが生じるようなシナリオを想定します。
-- テーブルの作成
CREATE TABLE YellowTaxiTripRecords (
TripID INT PRIMARY KEY,
PickupDateTime DATETIME,
DropoffDateTime DATETIME,
PickupLocationID INT,
DropoffLocationID INT,
TripDistance FLOAT,
FareAmount DECIMAL(10, 2),
RateCodeID INT,
PaymentType INT,
PassengerCount INT
);
7.ミラー化 Azure SQL データベースを選択します
Fabric ポータルにアクセスして、ワークスペースから [作成] アイコンを選択します。
[データ ウェアハウス] セクションにおいて、[ミラー化された Azure SQL Database] を選択します。
8.ミラー化 Azure SQL データベースを設定します
[新しいソース] で [Azure SQL Database] を選択し、[新規接続] から以下を入力していきます。
- サーバー: server-name.database.windows.net の形式で、Azure portal の対象サーバーの [概要] ページから確認できます
- データベース: Azure SQL データベースの名前を入力します
- 接続: 新規接続を作成します
- 接続名: 自動的に名前が指定されますが、変更も可能です
- 認証の種類: 基本 (SQL 認証)
- ユーザー名: 手順 4 で作成した fabric_login に該当するログイン名を入力します
- パスワード: 手順 4 のログイン作成時に設定したパスワードを入力します
9.ミラーリングするテーブルを選択します
ミラーリングの構成が適切に完了すると、Fabric 側の設定画面から [YellowTaxiTripRecords] テーブルを確認できるためミラーリングの対象として選択します。
10.データベース側で更新を行います
再度 Azure SQL Database に接続し、データベース側でトランザクションが生じたとして、以下のクエリを実行します。
INSERT INTO YellowTaxiTripRecords (TripID, PickupDateTime, DropoffDateTime, PickupLocationID, DropoffLocationID, TripDistance, FareAmount, RateCodeID, PaymentType, PassengerCount)
VALUES
(1, '2024-12-01 08:00:00', '2024-12-01 08:15:00', 1, 2, 3.5, 12.50, 1, 1, 1),
(2, '2024-12-01 09:00:00', '2024-12-01 09:25:00', 3, 4, 5.0, 18.75, 1, 2, 2),
(3, '2024-12-01 10:00:00', '2024-12-01 10:20:00', 5, 6, 2.8, 10.00, 2, 1, 1),
(4, '2024-12-01 11:00:00', '2024-12-01 11:20:00', 7, 8, 4.2, 15.00, 1, 1, 3),
(5, '2024-12-01 12:00:00', '2024-12-01 12:30:00', 9, 10, 6.0, 20.50, 2, 2, 1),
(6, '2024-12-01 13:00:00', '2024-12-01 13:15:00', 11, 12, 3.0, 12.00, 1, 1, 2),
(7, '2024-12-01 14:00:00', '2024-12-01 14:25:00', 13, 14, 5.5, 18.00, 2, 2, 1),
(8, '2024-12-01 15:00:00', '2024-12-01 15:20:00', 15, 16, 4.0, 14.75, 1, 1, 3),
(9, '2024-12-01 16:00:00', '2024-12-01 16:30:00', 17, 18, 6.5, 22.00, 2, 2, 2),
(10, '2024-12-01 17:00:00', '2024-12-01 17:15:00', 19, 20, 3.2, 11.50, 1, 1, 1);
11.テーブルが更新されていることを確認する
上記クエリを実行してから少々待機すると、[レプリケーションの監視] にて、10 行更新されたことが表示されます。
[ミラー化された Azure SQL Database] の右上から [SQL 分析エンドポイント] を選択します。
以下のように [Tables] の配下に YellowTaxiTripRecords テーブルが作成されており、ID 10 まで反映されていることが見受けられます。
これでデータベースにて生じた更新を Fabric でほぼリアルタイムにレプリケートされることを確認できました。
ミラーリングしたデータの活用
ミラーリングしたことで Fabric 上から Azure SQL Database のデータを確認できましたが、これをレイクハウス上に存在するテーブルと組み合わせて分析したいと思います。
1.レイクハウスでショートカットを作成します
対象のレイクハウスの Tables から [新しいショートカット] を選択し、内部ソースの [Microsoft OneLake] を選択します。
2.データソースの種類を選択します
データソースとして、先ほど作成した [ミラー化された Azure SQL Database] を選択します。
3.テーブルを選択します。
対象となるテーブル YellowTaxiTripRecords を選択し作成を行うことで、テーブルをレイクハウス上に作成することが可能です。
4.レイクハウスの SQL 分析エンドポイントからデータを参照します。
対象レイクハウスの [SQL 分析エンドポイント] から以下のクエリを実行することで、YellowTaxiTripRecords を参照可能できます。
SELECT * FROM YellowTaxiTripRecords;
今回のシナリオでは、参照した New York のタクシーのサイトから、zone id と紐づくデータが保存されている taxi_zone_lookup.csv を予めダウンロードし、レイクハウス上にテーブルとして取り込んでいます。
こちらも同様に SELECT クエリで参照することができ、以下のような出力結果になります。
SELECT * FROM taxi_zone_lookup;
taxi_zone_lookup テーブルの結果を参考に YellowTaxiTripRecords と JOIN することで、Azure SQL Database に存在するデータと Fabric 上に存在するデータを組み合わせて分析が可能です。
SELECT * FROM YellowTaxiTripRecords as YR join taxi_zone_lookup TZ on YR.PickupLocationID = TZ.LocationID;
まとめ
Microsoft Fabric で一般公開された Azure SQL Database に対するミラーリング機能によって、データベースで生じた変更をほぼリアルタイムにレプリケートできることを確認しました。加えて、Fabric 上に存在するデータを組み合わせた分析に関しても検証しました。
ミラーリング機能に関しては今後もアップデートが期待されますので、様々な外部リソースとのスムーズな連携が注目されています。