🕌

【Microsoft Fabric】Delta Lakeを試してみる

2024/02/16に公開

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.deltalake-demo
*事前セットアップ*
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' 
)
1.deltalake-demo
-- データの中身をチェック
SELECT * FROM demo_tripdata LIMIT 1000

グリーン タクシー乗車記録には、乗車と降車の日時、乗車と降車の場所、移動距離、料金明細、料金の種類、支払いの種類、運転手から報告された乗車人数が入力されたフィールドが含まれています。
グリーン タクシーのメタデータ情報

1.deltalake-demo
-- レコード数を確認
SELECT COUNT(*) FROM demo_tripdata


全部で72439レコードあります。


フォーマットタイプと現在のバージョンを確認

1.deltalake-demo
DESCRIBE DETAIL demo_tripdata


formatがdelta形式であることがわかります。

1.deltalake-demo
DESCRIBE HISTORY demo_tripdata

まだ変更してないので、versionが0しかありません。


データを更新&更新履歴を確認

1.deltalake-demo
*テーブルの更新*
1. $10未満のtip_amountを削除
2. 残ったレコード数を確認
3. $20未満のtip_amountを削除
4. 残ったレコード数を確認
5. DESCRIBE HISTORYからテーブルの履歴の表示
6. 前のバージョンのテーブルを確認(タイムトラベル)
  • 本来は、データを変更したら別のテーブルとして保存するのが一般的です。
  • Delta Lakeではデータの変更履歴を保存することができるので今回はあえて同じテーブルを更新していきます。
1.deltalake-demo
-- 1. $10未満のtip_amountを削除
DELETE FROM demo_tripdata WHERE tip_amount < '10'


70899レコードに影響がありました。ほとんどのTipが$10以下であることがわかります。

1.deltalake-demo
-- 2. 残ったレコード数を確認
SELECT COUNT(*) FROM demo_tripdata 


残り1540レコードです。

1.deltalake-demo
-- 3. $20未満のtip_amountを削除
DELETE FROM demo_tripdata WHERE tip_amount < '20'

1360レコードに影響がありました。

1.deltalake-demo
-- 4. 残ったレコード数を確認
SELECT COUNT(*) FROM demo_tripdata


180レコード残っています。
ここまで2回にわたってデータを削除しました。
delta Lakeでどのような履歴が残っているか確認してみます。


タイムトラベル機能

1.deltalake-demo
-- 5. DESCRIBE HISTORYからテーブルの履歴の表示
DESCRIBE HISTORY demo_tripdata


versionが0から2まで表示されました。
またoperationsを見るとどういう作業を実施したがわかります。

1.deltalake-demo
-- 6. 前のバージョンのテーブルを確認(タイムトラベル)
SELECT COUNT(*) FROM demo_tripdata VERSION AS OF 0;

versionを指定し、データ削除前のテーブルを確認することができます。

1.deltalake-demo
-- 前のバージョンのテーブルを確認(タイムトラベル)
SELECT COUNT(*) FROM demo_tripdata VERSION AS OF 1;


まとめ

  • Microsoft Fabricのレイクハウスを使用してDelta Lakeの機能を試してみました。
  • GUIで簡単にファイルのアップロード、テーブルへのロードを実行できます。
  • Notebook上での元データの確認、更新、履歴の確認、タイムトラベル機能を試してみました。
  • データの変更履歴を保存することができるので、機械学習への応用も簡単にできます。

Discussion