Lakehouseを中心としたエコシステム
Microsoft Fabricはデータに関するタスク全般をカバーするSaaS製品のため、全体像を理解すること、各手法のドキュメントにアクセスすること、いろいろ大変です。ということで‥まずはLakehouse周辺のエコシステムを図にまとめました😊
図の番号順にまとめています。参考になれば嬉しいです。
①ショートカットを構成する
Lakehouseを構成するファーストステップは、各種データソースからショートカットを構成してLakehouseからデータにアクセスできるようにすることです。
②Notebookで、TablesやFilesにあるデータをSpark Dataframeに取り込む
# CSVを読み込む
df = spark.read.format("csv").option("header","true").load("abfss_file_path")
# Dataframeを表示する
display(df)
TablesにあるデータはDelta形式のため、format("delta")とする。
df = spark.read.format("delta").load("abfss_file_path")
# Dataframeを表示する
display(df)
abfssパスはファイルやテーブルを右クリックすると、コピーできる。
format optionはcsv,parquet,jsonなどに対応。Headerをどうするかなどoptionも豊富。
以下ドキュメント参照
③Spark DataframeをLakehouseのTablesに書き込む
df.write.format("delta").mode("overwrite").saveAsTable("TableName")
書き込みモードは、append
もあります。
TablesにDelta形式で書き込まれると、テーブルアイコンに▲マークがつきます。
④Notebookで、TablesやFilesにあるデータをPandas Dataframeに取り込む
PandasのDataframeに読み込むためには若干コードが変わります。
import pandas as pd
は必要です。
import pandas as pd
df = pd.read_csv("abfss_file_path")
# Dataframeを表示する
display(df)
LakehouseのFileにあるデータを右クリックして「データの読み込み → Pandas」で自動生成されるコードは以下です。(結果は同じ)
# Lakehouseをマウント
mssparkutils.fs.mount("workspace_abfss_path", "/lakehouse/{Lakehouse_Name}")
import pandas as pd
df = pd.read_csv(mssparkutils.fs.getMountPath('/lakehouse/{Lakehouse_Name}/') + "file_path")
# Dataframeを表示する
display(df)
mssparkutils
のドキュメントは以下。
⑤ Pandas DataframeとSpark Dataframeを相互に変換する
PySpark → Pandas
pyspark.sql.DataFrame オブジェクトには toPandas() というメソッドがあるため、これを使えば変換できます。
pandas_df = spark_df.toPandas()
Pandas → PySpark
SparkSession オブジェクトには createDataFrame というメソッドがあるため、これを使うと pandas.DataFrame を pyspark.sql.DataFrame に変換できます。
import pandas as pd
spark_df = spark.createDataFrame(pandas_df)
⑥Lakehouseの SQL 分析エンドポイント
Lakehouseでテーブルを作成すると、SQLエンドポイントも一緒に作成されます。
ブラウザやSSMSを利用してSQLタスクをこなすことが可能です。
SQL 分析エンドポイントは、レイクハウスのデルタ テーブルに対して読み取り専用モードで動作します。 SQL 分析エンドポイントを使用してデルタ テーブルからデータの読み取りのみを行えます。 関数、ビューを保存し、SQL オブジェクト レベルのセキュリティを設定できます。
⑦Power BI Sematic Model (Import Mode)のOneLake統合
Importモードで作成されたPower BI Semantic Model (以前はデータセットと呼ばれていました)から、OneLakeにデータをエクスポートできます。ドキュメントだけだと手順がわかりにくいため、テクテク日記も参照すると〇です。
⑧Direct Lake Mode
Import Mode、Direct Query Modeに加えて、第3のデータアクセス方法として、Direct Lake が利用可能になりました。Import Modeは早いけど、コピーが発生します。Direct Query Modeはリアルタイムだけど低速。Direct Lakeはコピーが発生せず、リアルタイムで、かつ高速です。
Direct Lake 用のSemantic Modelの作成方法は以下ドキュメント参照。
⑨Semantic Link
Semantic Link を使うとDatascienceを行いデータをエンリッチする際に、Power BI Semantic Model内のデータを利用できます。
具体的な手順は以下ドキュメントを参照。
(AI生成) PandasとPySparkのDataFrameの違い
-
Pandas:
- Pythonのオープンソースライブラリで、構造化された表形式のデータを扱うために広く使用されています
- データ分析、機械学習、データサイエンスプロジェクトで頻繁に利用されます
- CSV、JSON、SQLなどのフォーマットからデータをロードし、行と列を含むデータフレームを作成します
- 分散処理をサポートしていないため、大規模なデータセットに対応する際にはリソースを追加する必要があります
- データフレームは可変であり、遅延評価されず、統計関数はデフォルトで各列に適用されます
-
PySpark:
- Pandasがシングルマシンで動作するのに対して、PySparkは複数台のマシンで処理を実行します
- 大規模なデータセットを扱う機械学習アプリケーションに適しており、100倍以上高速に処理できます
- Apache Sparkの機能を利用してPythonで記述されたライブラリであり、分散クラスターまたはシングルノードで並列に実行できます
- 大規模かつパワフルな分散データ処理、機械学習アプリケーションのための分析処理エンジンです
簡潔に言えば、Pandasはシングルマシンで、PySparkは複数台のマシンで動作します。大規模なデータセットを扱う場合はPySparkが最適です
まとめ
OneLakeのキャッチコピーの一つとして、One Copyがあります。様々なデータ関連のタスクをデータコピーを行うことなく実行できるというものです。が、One Copyを体現するためにはMicrosoft Fabric全体の設計と、それぞれのタスク別に考えられている機能を把握する必要があります。図をまとめることで私も理解が深まりました。