4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microsoft FabricAdvent Calendar 2024

Day 17

Microsoft Fabric のミラーリング機能で Azure SQL Database と連携する

Last updated at Posted at 2024-12-16

はじめに

Microsoft Fabric (以降 Fabric) では、Ignite 2024 で Azure SQL Database とのミラーリングが一般公開されましたので、その機能に関して触れてみたいと思います。

Microsoft Fabric Advent Calendar 2024 の 17 日目の記事です。

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

ミラーリング とは

ミラーリングは Fabric と外部のソースをほぼリアルタイムで連携する機能になります。ミラーリングには 3 種類ありますが、ここではテーブルのレプリケーションを示すデータベースミラーリングを対象にします。

以下の表にあるように、様々な種類の外部データソースが対象となっています。Ignite 2024 では他社製品の Snowflake へのミラーリングの一般公開に加えて、Azure SQL Database への機能も一般公開されました。

image.png

ミラーリングの種類

ミラーリング機能によって、リレーショナルデータベースである 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

image.png

2.マネージド ID を有効にします
Azure Portal 上の Azure SQL Database の論理サーバーの [ID] から、マネージド ID を有効化します。
ここではシステム割り当て ID とします。

image.png

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 のタクシーの乗車に関するトランザクションデータが生じるようなシナリオを想定します。

TLC Trip Record Data

-- テーブルの作成
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] を選択します。

image.png

8.ミラー化 Azure SQL データベースを設定します
[新しいソース] で [Azure SQL Database] を選択し、[新規接続] から以下を入力していきます。

  • サーバー: server-name.database.windows.net の形式で、Azure portal の対象サーバーの [概要] ページから確認できます
  • データベース: Azure SQL データベースの名前を入力します
  • 接続: 新規接続を作成します
  • 接続名: 自動的に名前が指定されますが、変更も可能です
  • 認証の種類: 基本 (SQL 認証)
  • ユーザー名: 手順 4 で作成した fabric_login に該当するログイン名を入力します
  • パスワード: 手順 4 のログイン作成時に設定したパスワードを入力します

image.png

9.ミラーリングするテーブルを選択します
ミラーリングの構成が適切に完了すると、Fabric 側の設定画面から [YellowTaxiTripRecords] テーブルを確認できるためミラーリングの対象として選択します。

image.png

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 分析エンドポイント] を選択します。

image.png

以下のように [Tables] の配下に YellowTaxiTripRecords テーブルが作成されており、ID 10 まで反映されていることが見受けられます。
これでデータベースにて生じた更新を Fabric でほぼリアルタイムにレプリケートされることを確認できました。

image.png

ミラーリングしたデータの活用

ミラーリングしたことで Fabric 上から Azure SQL Database のデータを確認できましたが、これをレイクハウス上に存在するテーブルと組み合わせて分析したいと思います。

1.レイクハウスでショートカットを作成します
対象のレイクハウスの Tables から [新しいショートカット] を選択し、内部ソースの [Microsoft OneLake] を選択します。

image.png

2.データソースの種類を選択します
データソースとして、先ほど作成した [ミラー化された Azure SQL Database] を選択します。

image.png

3.テーブルを選択します。
対象となるテーブル YellowTaxiTripRecords を選択し作成を行うことで、テーブルをレイクハウス上に作成することが可能です。

image.png

4.レイクハウスの SQL 分析エンドポイントからデータを参照します。
対象レイクハウスの [SQL 分析エンドポイント] から以下のクエリを実行することで、YellowTaxiTripRecords を参照可能できます。

SELECT * FROM YellowTaxiTripRecords;

image.png

今回のシナリオでは、参照した New York のタクシーのサイトから、zone id と紐づくデータが保存されている taxi_zone_lookup.csv を予めダウンロードし、レイクハウス上にテーブルとして取り込んでいます。
こちらも同様に SELECT クエリで参照することができ、以下のような出力結果になります。

SELECT * FROM taxi_zone_lookup;

image.png

taxi_zone_lookup テーブルの結果を参考に YellowTaxiTripRecords と JOIN することで、Azure SQL Database に存在するデータと Fabric 上に存在するデータを組み合わせて分析が可能です。

SELECT * FROM YellowTaxiTripRecords as YR join taxi_zone_lookup TZ on YR.PickupLocationID = TZ.LocationID;

image.png

まとめ

Microsoft Fabric で一般公開された Azure SQL Database に対するミラーリング機能によって、データベースで生じた変更をほぼリアルタイムにレプリケートできることを確認しました。加えて、Fabric 上に存在するデータを組み合わせた分析に関しても検証しました。
ミラーリング機能に関しては今後もアップデートが期待されますので、様々な外部リソースとのスムーズな連携が注目されています。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?