【Microsoft Fabric】Delta Lakeを試してみる
Delta Lakeとは
- Microsoft Fabricのレイクハウスアーキテクチャーは構造化データと非構造化データを統合し、データの統合、分析、可視化を行うためのプラットフォームです。
- レイクハウスではデフォルトでDelta Lakeが使用されます。
- Delta Lake は、ACID (原子性、一貫性、分離性、持続性) トランザクションを Apache Spark とビッグ データ ワークロードに導入するオープンソースのストレージ レイヤーです。
レイクハウス作成
- Microsoft Fabricにサインインします
- 任意のワークスペースからレイクハウスを作成
[New]>[Lakehouse]を選択
任意の名前を入力してレイクハウスを作成
- しばらくするとレイクハウスが作成されます。FilesとTablesの2つがあります。
- Filesは名前の通りFileをアップロードする場所で、CSV,画像,テキストファイルなどのファイルをアップロードできます。
TablesはDeltaテーブル形式でデータを読み込む場所です。
- PARQUET または CSV ファイルの種類の読み込みがサポートされています
- 単一ファイルの読み込みやフォルダレベルの読み込みができます
- CLIはもちろんのことGUIで簡単にDelta形式に変換可能のです。
レイクハウスへファイルのアップロード
- Filesタブを右クリックし、[Upload]>[Upload files]を選択しファイルをアップロードします。
- 今回はNYC TaxiのデータをCSVにして使用します。
- 以下のデモはgreen_tripdata_2022-12を使用しました。
- Parquet形式のままでも使用可能です。
- 他のデータでも使用可能です。こちらから適当なファイルをダウンロードしてください。
データをアップロードしたら[Upload]をクリックします。
OneLake ファイル エクスプローラーを使用してデータをアップロード
上記のようにブラウザからデータを入力することも可能ですが、OneDriveのようにファイルエクスプローラーと連携することも可能です。
- OneLake ファイル エクスプローラーをダウンロードしてインストールします。
- 作成したレイクハウスまで移動しファイルアップロードするとレイクハウスのFilesにもアップロードされます。OneDriveと同じような感覚で使用できます。
ファイルをTableにロード
Filesタブを右クリックし、[Load to tables]>[New table]を選択します。
-
任意のTable Nameを入力し、[Load]をクリックします。
-
必要に応じてスキーマ情報等を変更することも可能です。
-
読み込んだTableはTablesタブに表示されます。
-
データを操作するためにnotebookを使用します。
-
[Open notebook]>[New notebook]を選択します。
-
Notebookを任意の名前に変更します。
-
言語は[Spark SQL]を使用します。
Notebook上でデータを確認
*事前セットアップ*
1. すでにdemo_tripdataがあれば削除する。→DROP TABLE IF EXISTS demo_tripdata
2. Filesのgreen_tripdata_2022-12.csvからdemo_tripdataとしてTableを作成する。
CREATE TABLE demo_tripdata
USING csv
OPTIONS (
path 'Files/green_tripdata_2022-12.csv',
header 'true',
inferSchema 'true'
)
-- データの中身をチェック
SELECT * FROM demo_tripdata LIMIT 1000
グリーン タクシー乗車記録には、乗車と降車の日時、乗車と降車の場所、移動距離、料金明細、料金の種類、支払いの種類、運転手から報告された乗車人数が入力されたフィールドが含まれています。
グリーン タクシーのメタデータ情報
-- レコード数を確認
SELECT COUNT(*) FROM demo_tripdata
全部で72439レコードあります。
フォーマットタイプと現在のバージョンを確認
DESCRIBE DETAIL demo_tripdata
formatがdelta形式であることがわかります。
DESCRIBE HISTORY demo_tripdata
まだ変更してないので、versionが0しかありません。
データを更新&更新履歴を確認
*テーブルの更新*
1. $10未満のtip_amountを削除
2. 残ったレコード数を確認
3. $20未満のtip_amountを削除
4. 残ったレコード数を確認
5. DESCRIBE HISTORYからテーブルの履歴の表示
6. 前のバージョンのテーブルを確認(タイムトラベル)
- 本来は、データを変更したら別のテーブルとして保存するのが一般的です。
- Delta Lakeではデータの変更履歴を保存することができるので今回はあえて同じテーブルを更新していきます。
-- 1. $10未満のtip_amountを削除
DELETE FROM demo_tripdata WHERE tip_amount < '10'
70899レコードに影響がありました。ほとんどのTipが$10以下であることがわかります。
-- 2. 残ったレコード数を確認
SELECT COUNT(*) FROM demo_tripdata
残り1540レコードです。
-- 3. $20未満のtip_amountを削除
DELETE FROM demo_tripdata WHERE tip_amount < '20'
1360レコードに影響がありました。
-- 4. 残ったレコード数を確認
SELECT COUNT(*) FROM demo_tripdata
180レコード残っています。
ここまで2回にわたってデータを削除しました。
delta Lakeでどのような履歴が残っているか確認してみます。
タイムトラベル機能
-- 5. DESCRIBE HISTORYからテーブルの履歴の表示
DESCRIBE HISTORY demo_tripdata
versionが0から2まで表示されました。
またoperationsを見るとどういう作業を実施したがわかります。
-- 6. 前のバージョンのテーブルを確認(タイムトラベル)
SELECT COUNT(*) FROM demo_tripdata VERSION AS OF 0;
versionを指定し、データ削除前のテーブルを確認することができます。
-- 前のバージョンのテーブルを確認(タイムトラベル)
SELECT COUNT(*) FROM demo_tripdata VERSION AS OF 1;
まとめ
- Microsoft Fabricのレイクハウスを使用してDelta Lakeの機能を試してみました。
- GUIで簡単にファイルのアップロード、テーブルへのロードを実行できます。
- Notebook上での元データの確認、更新、履歴の確認、タイムトラベル機能を試してみました。
- データの変更履歴を保存することができるので、機械学習への応用も簡単にできます。
Discussion