今回はMicrosoft Fabric(以降、Fabricと記載)を利用してパイプラインを構築し、毎月のデータをウェアハウスに蓄積する方法を前編・後編に分けて紹介します。
※Microsoft Fabricの始め方や細かい操作方法等は、以前の記事を参照ください。
- Microsoft Fabricを利用してPower BIで表を作成する【前編】 - JBS Tech Blog
- Microsoft Fabricを利用してPower BIで表を作成する【後編】 - JBS Tech Blog
データの準備
利用するデータは、以下のサイトで提供されている「Online Retail.xlsx」ファイルです。
https://archive.ics.uci.edu/dataset/352/online+retail
[DOWNLOAD]ボタンを押下することによりzipファイルがダウンロードされるので、解凍して利用します。

今回は、月次でデータを連携するシナリオに合わせるために、手作業でファイルの分割を行います。
「InvoiceDate」欄を利用して月ごとでデータを分割し、ファイル名は「retail_*.xlsx」として、「*」部分に3文字(jan、feb等)で月をいれた形で保存します。

パイプラインの構築
今回作成するパイプラインは、Data Factoryを利用して以下のように作成します。
- レイクハウスのファイルからテーブルへのコピー
- ノートブックを利用した加工
- レイクハウスのテーブルからウェアハウスへのコピー
設定後のパイプラインの状態は下図のようになります。

レイクハウスの作成
Fabricのトップページの「Synapse Data Engineering」を選択し、[レイクハウス]を押下して新しいLakehouseを作成します。今回は「Retail」という名称で作成します。

作成したレイクハウスのFilesに「2011」というサブフォルダを作成し、その中に1月分のデータである「retail_jan.xlsx」をアップロードしておきます。

ノートブックの作成
次に新しいノートブックを作成します。

ノートブックの作成が完了したら、以下の内容を記載します。ノートブックの名称も「retail_month」として保存します。

内容としては、レイクハウスの「retail」テーブルから欠損値を削除し、「retailtempview」という一時テーブルにデータを入れます。
そのあとで、現在のカラムの後ろに加工したカラムを追加し、新しく「onlineretail」テーブルに上書きで書き込みを行います。
# Welcome to your new notebook
df = spark.read.load("Tables/retail")
df =df.dropna()
df.createOrReplaceTempView("retailtempview")
df=spark.sql("""
SELECT *,
Year(InvoiceDate) as Year,
Month(InvoiceDate) as Month,
CAST(InvoiceDate AS DATE) AS Date,
Weekday(InvoiceDate) as Weekday,
Hour(InvoiceDate) as Hour,
round((Quantity * UnitPrice),2) as Total
FROM retailtempview
""")
df.write.mode("overwrite").save("Tables/onlineretail")
パイプラインの構築・実行
レイクハウスの作成とノートブックの作成ができたら、途中までパイプラインを作成し、実行します。
※ もともとのExcelファイルからノートブックを利用してカラムを追加しているため、ウェアハウスへのデータコピーの時にカラムのマッピングがやりやすくなるように、今の時点で行います。

名称は「create_retail」として作成します。

データコピー
「file to table」は、レイクハウスのFilesにアップロードしたExcelファイルを、レイクハウスのテーブルにコピーします。

【ソース】タブでの設定項目(一部抜粋)
| 接続 | Retail |
|---|---|
| ルートフォルダー | ファイル |
| ファイルパスの種類 | ワイルドカード ファイル パス |
| ワイルドカード パス | 2011 / retail_*.xlsx |
| ファイル形式 | Excel |
| シート名 | Sheet1 |
【宛先】タブでの設定項目(一部抜粋)
| 接続 | Retail |
|---|---|
| ルートフォルダー | テーブル |
| テーブル名 | retail |
※ [+新規]からテーブルを作成します
ノートブック
レイクハウスのテーブルにコピーが完了したら、先ほど作成したノートブックを指定し、ノートブックを実行するようにします。

【設定】タブでの設定項目
| ワークスペース | My workspace |
|---|---|
| ノートブック | retail_month |
パイプラインの実行
設定が完了したら、[実行]を押下します。

実行が完了すると、レイクハウスにテーブルが作成されていることを確認できます。

終わりに
今回は、月次でファイルを連携する一連の流れのうち、データの加工を行う部分の処理まで実装しました。
やり方は他にもあると思いますが、今回ご紹介した方法はノートブックを利用した簡単な加工方法になるので、参考になればと思います。
後編では、ウェアハウスへのコピーやPower BIでの表示を紹介します。