1. はじめに
1-1 ご挨拶
初めまして、井村と申します。
Microsoft Fabricは、データの統合、エンジニアリング、分析、ビジネスインテリジェンスなどの機能を統合したSaaS型データ分析ツールです。
そしてMicrosoft Fabricは60日間のフリートライアル期間があります。
さらに、Microsoftが提供する無料のオンライン学習プラットフォームであるMicrosoft Learn(MSLearn)にはたくさんのMicrosoft Fabricに関する記事があります。
本記事はフリートライアル期間を利用してMSLearnの演習を行っていきます。
演習を通して気づいた点やTipsを、なるべく多くのスクリーンショットとともに備忘録として残します。
1-2 MSLearn
今回はMicrosoft Fabric のデータ ウェアハウスの概要を行います。
この演習の学習の目的は以下の通りです。
- Fabric のデータ ウェアハウスについて説明します。
- データ ウェアハウスと Data Lakehouse について理解します。
- Fabric でデータ ウェアハウスを操作します。
- データ ウェアハウス内でファクト テーブルとディメンションを作成および管理します。
1-3 Get started with Microsoft Fabric
以下からMicrosoft Fabricのフリートライアルを開始できます。
Get started with Microsoft Fabric
2. MSLearnの要約
2-1 データ ウェアハウスの基礎を理解する
-
データウェアハウスの構築プロセス
- データインジェスト: ソースシステムからデータを移動。
- データストレージ: 分析用に最適化された形式でデータを格納。
- データ処理: 分析ツールで使用できる形式にデータを変換。
- データ分析と配信: データを分析し、ビジネスに提供。
-
Fabric のデータ ウェアハウス エクスペリエンスを理解する。
- エンタープライズ データ ウェアハウスに期待される完全なトランザクション T-SQL 機能をサポート。
- フルマネージドでスケーラブル、高可用性。
- SQL を使用してデータのクエリと分析を行う。
- Spark を使用してデータの処理と機械学習モデルの作成を行う。
-
データウェアハウスの設計。
- テーブル構造は主にファクトテーブルとディメンションテーブル。
- ファクト テーブルには、分析する数値データが含まれています。たとえば、特定の日付または特定の店舗で発生した販売注文に対して支払われた合計金額が含まれている場合があります。
- ディメンション テーブルには、ファクト テーブル内のデータに関する説明情報が含まれています。たとえば、販売注文を行った顧客に関する情報が含まれている場合があります。
- 特殊なディメンション: 特殊なディメンションとして、時間ディメンションやスローリー・チェンジング・ディメンションがあります。
-
スキーマの設計
- スター・スキーマ: ファクトテーブルがディメンションテーブルに直接関連付け。
- スノーフレーク・スキーマ: スノーフレーク・スキーマ: ディメンションテーブルをさらに分割した構造。
2-2 Fabric のデータ ウェアハウスを理解する
-
Fabric の Lakehouse
- データ レイク上のデータベースのように機能するファイル、フォルダー、テーブル、ショートカットのコレクションです。
- Spark エンジンと SQL エンジンによってビッグ データ処理に使用される。
- オープンソースの Delta 形式のテーブルを使用する場合の ACID トランザクション用の機能を備えています。
-
Fabric のデータ ウェアハウス
- Lakehouse (Data Engineering と Apache Spark をサポートする) のレイク ビューから、従来のデータ ウェアハウスが提供する SQL エクスペリエンスに移行可能。
- レイクハウスを使うと、テーブルを読み取って SQL 分析エンドポイントを使用できます。一方、データ ウェアハウスを使うと、データを操作できます。
-
データ ウェアハウス
- テーブルとビューを使用してデータをモデル化する。
- T-SQL を実行してデータ ウェアハウスと Lakehouse 全体のデータに対してクエリを実行。
- T-SQL を使用してデータ ウェアハウス内のデータに対して DML 操作を行い、Power BI などのレポート レイヤーを提供します。
3. 演習スタート
上記URLから演習を開始できます。実際のMicrosoft Fabricを使うため、とても勉強になります。
3-1 ワークスペースの作成
1 . 【Azure】Microsoft Fabric レイクハウス内にあるファイルとテーブルにデータを取り込む。(3-1 レイクハウスを作成する)をご参照ください。
3-2 データ ウェアハウスの作成
1 . 左側のメニュー バーで、[作成] を選択します。
2 . [新規] ページの [データ ウェアハウス] セクションで、[ウェアハウス] を選択します。
3 . 任意の一意な名前を設定します。
4 . 新しいデータ ウェアハウスが作成されることを確認します。
3-3 テーブルを作成してデータを挿入する
1 . 新しいウェアハウスで、[T-SQL] タイルを選択します。
2 . 以下の CREATE TABLE ステートメントを入力します。[▷ 実行] ボタンを使用して SQL スクリプトを実行します。
CREATE TABLE dbo.DimProduct
(
ProductKey INTEGER NOT NULL,
ProductAltKey VARCHAR(25) NULL,
ProductName VARCHAR(50) NOT NULL,
Category VARCHAR(50) NULL,
ListPrice DECIMAL(5,2) NULL
);
GO
3 . ツール バーの [最新の情報に更新] ボタンを使用して、ビューを更新します。 [Schemas] > [dbo] > [Tables] の順に展開し、 [DimProduct] テーブルが作成されていることを確認します。
4 . [ホーム] メニュー タブで、 [新規 SQL クエリ] ボタンを使用して新しいクエリを作成します。以下の INSERT ステートメントを入力・実行します。
5 . [DimProduct] テーブルを選択し、テーブルに 3 行が追加されていることを確認します。
6 . [ホーム] メニュー タブで、 [新規 SQL クエリ] ボタンを使用して新しいクエリを作成します。以下URLのクエリを貼り付け実行します。シンプルなデータ ウェアハウス スキーマが作成され、データがいくつか読み込まれます。create-dw.txt
7 . ツール バーの [最新の情報に更新] ボタンを使用して、ビューを更新します。データ ウェアハウスの dbo スキーマに次の 4 つのテーブルが含まれていることを確認してください。
- DimCustomer
- DimDate
- DimProduct
- FactSalesOrder
3-4 データ モデルを定義する
リレーショナル データ ウェアハウスは、通常 “ファクト” および “ディメンション” テーブルで構成されます。
ファクト テーブルには、ビジネス パフォーマンスを分析するために集計できる数値メジャー (売上収益など) が含まれています。
ディメンション テーブルには、データ (製品、顧客、時間など) を集計できるエンティティの属性が含まれています。
Microsoft Fabric データ ウェアハウスでは、これらのキーを使用して、テーブル間のリレーションシップをカプセル化するデータ モデルを定義できます。
1 . ツール バーの [モデル レイアウト] ボタンを選択します。モデルが表示されます。
[!NOTE] ビュー frequently_run_queries、long_running_queries、exec_sessions_history、および exec_requests_history は、Fabric によって自動的に作成される queryinsights スキーマの一部です。これは、SQL 分析エンドポイントでの履歴クエリ アクティビティの総合的なビューを提供する機能です。 この機能はこの演習の範囲外であるため、現時点ではこれらのビューは無視してください。
2 . [モデル] ペインで、次のように FactSalesOrder テーブルが中央になるように、データ ウェアハウス内のテーブルを再配置します。
3 . FactSalesOrder テーブルから ProductKey フィールドをドラッグし、DimProduct テーブルの ProductKey フィールドにドロップしてください。 [新しいリレーションシップ]ダイアログボックスが表示されます。各項目を設定後、[保存]を押下します。
項目 | 値 |
---|---|
ソース テーブル | FactSalesOrder |
列 | ProductKey |
ターゲット テーブル | DimProduct |
列 | ProductKey |
カーディナリティ | 多対一 (*:1) |
クロス フィルターの方向 | 単一 |
このリレーションシップをアクティブにする | 選択済み |
参照整合性を想定する | 未選択 |
4 . 同様のプロセスを実施します。
FactSalesOrder.CustomerKey → DimCustomer.CustomerKey
FactSalesOrder.SalesOrderDateKey → DimDate.DateKey
5 . すべてのリレーションシップが定義されると、モデルは次のようになります。
3-5 データ ウェアハウスのテーブルにクエリを実行する
ファクト テーブルとディメンション テーブルに対してクエリを実行する
リレーショナル データ ウェアハウスのほとんどのクエリでは、(JOIN 句を使用して) 関連するテーブル間で (集計関数と GROUP BY 句を使用して) データが集計およびグループ化されます。
1 . [ホーム] メニュー タブで、 [新規 SQL クエリ] ボタンを使用して新しいクエリを作成します。以下の クエリを入力・実行します。
SELECT d.[Year] AS CalendarYear,
d.[Month] AS MonthOfYear,
d.MonthName AS MonthName,
SUM(so.SalesTotal) AS SalesRevenue
FROM FactSalesOrder AS so
JOIN DimDate AS d ON so.SalesOrderDateKey = d.DateKey
GROUP BY d.[Year], d.[Month], d.MonthName
ORDER BY CalendarYear, MonthOfYear;
日付ディメンションの属性を使用すると、ファクト テーブル内のメジャー(指標)を複数の階層レベル (この場合は年と月) で集計できます。
2 . [ホーム] メニュー タブで、 [新規 SQL クエリ] ボタンを使用して新しいクエリを作成します。以下の クエリを入力・実行します。
SELECT d.[Year] AS CalendarYear,
d.[Month] AS MonthOfYear,
d.MonthName AS MonthName,
c.CountryRegion AS SalesRegion,
SUM(so.SalesTotal) AS SalesRevenue
FROM FactSalesOrder AS so
JOIN DimDate AS d ON so.SalesOrderDateKey = d.DateKey
JOIN DimCustomer AS c ON so.CustomerKey = c.CustomerKey
GROUP BY d.[Year], d.[Month], d.MonthName, c.CountryRegion
ORDER BY CalendarYear, MonthOfYear, SalesRegion;
年、月、販売地域別に集計された売上収益が含まれます。
3-6 ビューを作成する
Microsoft Fabric のデータ ウェアハウスには、リレーショナル データベースで使用できるのと同じ機能が多くあります。 たとえば、ビューやストアドプロシージャなどのデータベースオブジェクトを作成して、SQL ロジックをカプセル化できます。
1 . [ホーム] メニュー タブで、 [新規 SQL クエリ] ボタンを使用して新しいクエリを作成します。以下の クエリを入力・実行します。
CREATE VIEW vSalesByRegion
AS
SELECT d.[Year] AS CalendarYear,
d.[Month] AS MonthOfYear,
d.MonthName AS MonthName,
c.CountryRegion AS SalesRegion,
SUM(so.SalesTotal) AS SalesRevenue
FROM FactSalesOrder AS so
JOIN DimDate AS d ON so.SalesOrderDateKey = d.DateKey
JOIN DimCustomer AS c ON so.CustomerKey = c.CustomerKey
GROUP BY d.[Year], d.[Month], d.MonthName, c.CountryRegion;
2 . ツール バーの [最新の情報に更新] ボタンを使用します。 新しいビューが [エクスプローラー] ペインに一覧表示されていることを確認してください。
3 . [ホーム] メニュー タブで、 [新規 SQL クエリ] ボタンを使用して新しいクエリを作成します。以下の クエリを入力・実行します。
SELECT CalendarYear, MonthName, SalesRegion, SalesRevenue
FROM vSalesByRegion
ORDER BY CalendarYear, MonthOfYear, SalesRegion;
ビューからのクエリ実行結果を取得出来ます。
ビジュアル クエリを作成する
SQL コードを記述する代わりに、グラフィカル クエリ デザイナーを使用して、データ ウェアハウス内のテーブルに対してクエリを実行できます。 このエクスペリエンスは、コードなしでデータ変換ステップを作成できる Power Query Online に似ています。 より複雑なタスクの場合は、Power Query の M (Mashup) 言語を使用できます。
1 . [ホーム] メニューで、[新しい SQL クエリ] 配下のオプションを展開し、[新しいビジュアル クエリ] を選択します。
2 . [FactSalesOrder] - [...] - [キャンパスに挿入] します。
3 . [DimProduct] - [...] - [キャンパスに挿入] します。
4 . キャンバス上の FactSalesOrder テーブルの (+) を使用して、[クエリのマージ] を選択します。
5 . [マージ]ダイアログボックスにて [マージ用の右テーブル]は[DimProduct]を選択します。[結合の種類]は[左外部]を選択します。両方のクエリで [ProductKey] を選択します。設定完了後、[OK]を押下します。
6 . 下側にある[プレビュー] では、新しい [DimProduct] 列が FactSalesOrder テーブルに追加されています。 列名の右側にある矢印をクリックして列を展開します。 [ProductName] を選択して [OK] を押下します。
7 . ProductName 列を使用してクエリ内のデータをフィルター処理できるようになりました。 [ProductName] 列をフィルター処理して、 [ケーブル ロック]のデータのみを表示します。
8 . [ケーブル ロック]のデータのみを表示後、[結果の可視化]を押下します。
9 . 右側[データ]ペイン内のテーブルにすべてチェックをいれます。可視化内でケーブルロックの売上を確認できます。
データを視覚化する
1 つのクエリやデータ ウェアハウス内でも、含まれるデータを簡単に視覚化することができます。 視覚化する前に、レポート デザイナーに適していない列またはテーブルは非表示にすることが重要です。
1 . [モデル レイアウト] ボタンを選択します。ファクトおよびディメンション テーブルで、レポートを作成する必要のない次の列を非表示にします。モデルから列が削除されるのではなく、レポート キャンバス上のビューから列が非表示になるだけです。
非表示にする列名は以下の通りです。
- FactSalesOrder
- SalesOrderDateKey
- CustomerKey
- ProductKey
- DimCustomer
- CustomerKey
- CustomerAltKey
- DimDate
- DateKey
- DateAltKey
- DimProduct
- ProductKey
- ProductAltKey
これで、レポートを作成し、このデータセットを他のユーザーが使用できるようにする準備ができました。
2 . [レポート] メニューの [新しいレポート] を選択してください。 これにより、Power BI レポートを作成できる新しいウィンドウが開きます。
3 . [データ] ペインで、[FactSalesOrder] を展開します。 非表示にした列が表示されなくなっていることを確認します。
4 . [データ] ペインで [SalesTotal]を選択します。レポートキャンパスにその列が追加されます。列は数値であるため、既定では縦棒グラフになります。続いて[カテゴリ]を追加します。
5 . [視覚化] ペインで、グラフの種類を [縦棒グラフ] から [集合横棒グラフ] に変更します。 次に、必要に応じてグラフのサイズを変更して、カテゴリを読み取ることができるように修正します。
4 . [ファイル] メニューの [保存] を選択します。
5 . 前に作成したワークスペースへレポート名を [Sales Report] とし[保存]を押下します。
6 . 左ペインのワークスペースを選択します。
7 . ワークスペースに 3 つの項目 (データ ウェアハウス、その既定のセマンティック モデル、作成したレポート) が保存されたことを確認します。
以上で演習は終了になります。
この演習では、複数のテーブルを含むデータ ウェアハウスを作成しました。 SQL を使用してテーブルにデータを挿入し、クエリを実行しました。 また、ビジュアル クエリ ツールも使用しました。 最後に、データ ウェアハウスの既定のデータセットのデータ モデルを拡張し、それをレポートのソースとして使用しました。
3-7 リソースをクリーンアップする
1 . 【Azure】Microsoft Fabric レイクハウス内にあるファイルとテーブルにデータを取り込む。(3-7 リソースをクリーンアップする)をご参照ください。
以上でワークスペースが削除されます。お疲れ様でした!
本演習を通じて Microsoft Fabric の演習 が一覧化されていることを初めて知りましたので共有致します。