【Azure】Microsoft Fabric レイクハウス内にあるファイルとテーブルにデータを取り込む。

# 1. はじめに
### 1-1 ご挨拶
初めまして、井村と申します。

Microsoft Fabricは、データの統合、エンジニアリング、分析、ビジネスインテリジェンスなどの機能を統合したSaaS型データ分析ツールです。
そしてMicrosoft Fabricは60日間のフリートライアル期間があります。

さらに、Microsoftが提供する無料のオンライン学習プラットフォームであるMicrosoft Learn（MSLearn）にはたくさんのMicrosoft Fabricに関する記事があります。

本記事はフリートライアル期間を利用してMSLearnの演習を行っていきます。
演習を通して気づいた点、Tips、なるべく多くのスクリーンショットをとりつつ備忘録として残していきます。

### 1-2 MSLearn
今回は[Microsoft Fabric でのレイクハウスの概要](https://learn.microsoft.com/ja-jp/training/modules/get-started-lakehouses/)を行います。

この演習の学習の目的は以下の通りです。

- Microsoft Fabric のレイクハウスのコア機能について説明する。
- レイクハウスを作成します。
- レイクハウス内にあるファイルとテーブルにデータを取り込む。
- SQL を使用してレイクハウス テーブルでクエリを実行する。

### 1-3 Get started with Microsoft Fabric
以下からMicrosoft Fabricのフリートライアルを開始できます。

[Get started with Microsoft Fabric](https://www.microsoft.com/en-us/microsoft-fabric/getting-started?msockid=344c93ba3c6061103b9587bd3d1a6049)

# 2. Microsoft Fabric のレイクハウスについて
Microsoft Fabricのレイクハウスについての概要になります。

- **レイクハウスの定義**：
データベースとして表示され、Delta形式テーブルを使用してデータレイクを基盤として構築されます。リレーショナルデータウェアハウスのSQLベースの分析機能とデータレイクの柔軟性とスケーラビリティを組み合わせたものです。
- **利点**：
  - SparkエンジンとSQLエンジンを使用して大規模なデータを処理し、機械学習や予測モデリング分析をサポート。
  - データの一貫性と整合性のためのACIDトランザクションがDelta Lake形式のテーブルを介してサポートされます。
  - データエンジニア、データサイエンティスト、データアナリストがデータにアクセスして使用するための一元化された場所。
- **データの取り込み**：ローカルファイル、データベース、APIなど、さまざまなソースからデータを取り込むことができます。Azure Data Lake Store Gen2やOneLakeなどの外部ソースのデータに対してショートカットを作成することも可能です。
- **セキュリティ**：ワークスペースまたはアイテムレベルの共有を通じて管理され、秘密度ラベルを含むデータガバナンス機能もサポートされています。

# 3. 演習スタート

[演習 - Microsoft Fabric レイクハウスを作成する](https://learn.microsoft.com/ja-jp/training/modules/get-started-lakehouses/5-exercise-lakehouse)

上記URLから演習を開始できます。実際のMicrosoft Fabricを使うため、とても勉強になります。

### 3-1 レイクハウスを作成する

1 . 赤枠の新しいワークスペースを押下します。

![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/02425ce1-f9fe-4ca8-84f8-2b72bd35feda.png)
2 . ワークスペースの名前を記入し適用ボタンを押下します。

![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/469edc3a-3366-4fe7-8305-2f9e59236ed0.png)
3 . 左側のメニューバーの (...) から作成を押下します。

![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/8388312a-0704-4e1d-b690-3f1a2b0d1cf8.png)
4 .  [データ エンジニアリング] セクションで、[レイクハウス] を選択します。

![004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/92d46ca5-2418-4755-8649-5017629bf8a4.png)
5 . 任意の一意の名前を付け作成ボタンを押下します。

![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/fe127660-ea6e-4efa-a1a3-157743242d80.png)
6 . 新しいレイクハウスが作成されます。

![006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/0655017d-d8b5-4531-b2a6-f4b2c4cf652f.png)

- Tables フォルダには、SQL セマンティクスを使用してクエリを実行できるテーブルが含まれています。Microsoft Fabric レイクハウスのテーブルは、Apache Spark で一般的に使用されるオープン ソースの Delta Lake ファイル形式に基づいています。

- Files フォルダーには、レイクハウスの OneLake ストレージに、マネージド デルタ テーブルに関連付けられていないデータ ファイルが含まれています。また、このフォルダにショートカットを作成して、外部に保存されているデータを参照することもできます。

### 3-2 ファイルのアップロード

検証材料であるcsvファイルは以下のURLに格納されています。このあとcsvファイルをダウウンロードし、レイクハウスにアップロードします。

[sales.csv](https://raw.githubusercontent.com/MicrosoftLearning/dp-data/main/sales.csv)

![007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/b1d981ac-9715-4608-8d26-d5c2fd228886.png)

1 .  [ファイル] フォルダーの [...] メニューで [新しいサブフォルダー] を選択し、data という名前のサブフォルダーを作成します。

![008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/064e9f4d-2b49-4256-a12b-e8f3726ede79.png)

![009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/39975533-e410-4249-a30d-d23a419251a1.png)

2 . 新しいデータ フォルダのメニューで [アップロード] と [ファイルのアップロード] を選択し、ローカル コンピューター からsales.csvファイルをアップロードします。

![010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/80433cac-daa7-41dd-bcdc-276022db797c.png)

![011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/250dfbef-f8cd-4a71-82c1-ff44347c0915.png)
3 . sales.csvがレイクハウスにアップロードされたことを確認します。

![012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/96623c9e-f8be-4f1e-b086-f99b7d230a77.png)


### 3-3 ショートカット機能の確認

レイクハウスのOneLakeストレージにデータを取り込む方法はたくさんありますが、ショートカットを使用すると、外部ソースのデータを分析ソリューションに含めることができ、オーバーヘッドやコピーに関連するデータの不整合のリスクを回避できます。

今回は利用しませんがショートカットの画面を確認します。

1 . sales.csvがレイクハウスにアップロードされたことを確認します。

![013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/40be87c8-fd88-4dbd-aa56-f274d2bb7787.png)

2 . ショートカットで使用可能なデータソースの種類を表示します。次に、ショートカットを作成せずに[新しいショートカット]ダイアログボックスを閉じます。

![014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/294b090a-6df1-4880-9e32-4c3f242ba85f.png)


### 3-4 ファイル・データをテーブルにロードする

アップロードした売上データ(sales.csv)はファイル内にあり、データ アナリストやエンジニアは Apache Spark コードを使用して直接操作できます。ここではSQL を使用してクエリを実行できるように、ファイルからテーブルにデータをロードします。

1 . sales.csv ファイルのメニューで、[テーブルに読み込む] > [新しいテーブル] を選択します。

![015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/d1d45683-1885-4341-af96-d2036af50696.png)

2 . [新しいテーブルにファイルを読み込む] ダイアログボックスで、テーブル名を sales に設定し、読み込みボタンを押下します。

![016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/a803afd0-10a0-4c02-9923-605e9aaabe65.png)

3 . Tables フォルダ配下にsalesテーブルが作成されます。sales テーブルのメニューで [ファイルの表示] を選択し、このテーブルの基になるファイルを表示します。

![017.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/b5ad77f8-14e7-4cd3-88c9-5e6567d7356f.png)

差分テーブルのファイルは Parquet 形式で保存され、テーブルに適用されたトランザクションの詳細が記録される _delta_log という名前のサブフォルダが含まれます。

![018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/48fe8416-1c23-4ef7-ab54-93b146a9225b.png)


### 3-5 SQL を使用してテーブルをクエリする

レイクハウスを作成し、その中にテーブルを定義すると、SQL ステートメントを使用してテーブルをクエリできる SQL エンドポイントが自動的に作成されます。

1 . 画面右上の [Lakehouse]から[SQL分析エンドポイント]に切り替えます。こちらを行うことで、レイクハウスの SQL 分析エンドポイントがビジュアル インターフェイスで開き、そこからテーブルに対してクエリを実行できるようになります。

![019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/52c9255e-be96-425b-8343-fd6ab271e6c5.png)

2 . ツールバーで、 [新しい SQL クエリ] オプションを展開し、 [新しい SQL クエリ] を選択して新しいクエリ エディタを開きます。
 
![020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/d2fcf626-8f02-4e2d-b60b-f52d94b1c6a5.png)

クエリ エディタを開き、次の SQL クエリを入力します。

```SQL:SQL
SELECT Item, SUM(Quantity * UnitPrice) AS Revenue
FROM sales
GROUP BY Item
ORDER BY Revenue DESC;
```

3 . [実行]ボタンを押下後、各製品の合計収益を表示する結果を表示することができます。

![021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/9e04953e-4eb0-4c86-aaca-eaedf52736f5.png)


### 3-6 ビジュアル クエリを作成する
Power BI の経験を持つデータ アナリストは、Power Query のスキルを適用してビジュアル クエリを作成できます。

1 . ツールバーで、 [新しい SQL クエリ] オプションを展開し、 [新しいビジュアル クエリ] を選択します。

![022.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/a3bdc2eb-ef0b-4fbe-a21f-86412b7fad7c.png)

2 . sales テーブルを選択し右クリック [キャンパスに挿入]を選択します。
※公式ドキュメントよりsales テーブルを新しいビジュアル クエリ エディター ウィンドウにドラッグして開く事もできるそうです。

![023.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/1fddc443-f9a1-499c-b8eb-bc34fe19e0f3.png)

![024.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/d9bdbbbd-25bb-4a96-bb14-800a5f7bb7cd.png)


3 . [列の管理] メニューで、[列の選択] を選択します。

![025.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/df4fc36c-eec6-44d3-8eb0-d2865d6b7a6c.png)

4 . [列の選択] ダイアログボックスで、SalesOrderNumber 列と SalesOrderLineNumber 列のみを選択します。[OK]を押下します。

![026.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/b7bdadc4-d3e4-4422-8bae-7738f01098cf.png)

5 . 画面遷移後、下記テーブルが2列のみになっていることを確認できます。次に、[変換] メニューで、[グループ化] を選択します。

![027.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/dc7905cf-c1e2-462d-bae1-01a96fe95974.png)

6 . [変換] メニューで、[グループ化] を選択します。次に、次の基本設定を使用してデータをグループ化します。[OK]を押下します。

- グループ化: SalesOrderNumber
- 新しい列名: LineItems
- 操作: 個別の値をカウントする
- 列: SalesOrderLineNumber

![028.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/a1de686d-49db-4592-9cb3-da87320606e9.png)


7 . 完了すると、ビジュアル クエリの結果ウィンドウに、各販売注文の品目の数が表示されます。

![029.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/84a5a2e5-5ec3-4e74-8b72-534400b2d0f2.png)


### 3-7 リソースをクリーンアップする

以上で演習は終了になります。最後はワークスペースを削除します。

1 . 左側のバーで、ワークスペースのアイコンを選択して、演習で作成したワークスペースの[...] - [ワークスペースの設定]を選択します。

![030.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/5d04af8f-2824-4ec6-b01c-23a482cb9e7c.png)

2 . [全般] セクションで、名前を確認し、[このワークスペースの削除する] を選択します。

![031.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/86722f67-0d4e-4895-9988-03e6665569a4.png)

3 . [ワークスペースを削除しますか]ダイアログボックスで、[削除] を選択します。

![032.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989465/685575a4-73ac-461a-9eac-07ed0735f872.png)

以上でワークスペースが削除されます。お疲れ様でした！