2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

もしあなたが、データ分析基盤 Microsoft Fabricを使って、データ分析を行い、意図した結果をえるためには、データの正規形(Normal Form)を考えてデータを正規系に加工していくことが必要な場合があります。
データの第4正規形は、多値従属性が複数存在するテーブルを分割して、関連エンティティに含まれる関連は一つだけにしたデータ形式ですが、Microsoft Fabricを使って、こうした正規系のデータ形式にするテクニックを紹介したいと思い本記事を執筆しました。
今回は、データの列と行を入れ替えるテクニックについて紹介します。

1.ケーススタディ

以下のようなデータセットがあるとします。1行目の各列に試験名が入力されており、2行目以降で試験範囲に含まれるサービス・機能名が列挙されているデータセットです。

AZ-900 ,AI-900
Virtual Machines ,Azure Applied AI Services
Azure Firewall Manager,Azure Metrics Advisor

このデータセットに対して、ColumeName列に試験名、Value列にサービス・機能のデータが入り、元のデータセットの列と行を入れ替えるような以下のデータセットに変換することを目標にします。

ColumnName, Value
AZ-900, Virtual Machines
AI-900, Azure Applied AI Services
AZ-900, Azure Firewall Manager
AI-900, Azure Metrics Advisor

2.解決方法

テストデータが入ったCSVファイル(このサンプルではtest3.csv)を例にして、解決する手順を以下に記載します。

1.レイクハウスのエクスプローラーを開いて、Filesのところでメニューを出して、ファイルのアップロードで自分のパソコンにあるファイルをアップロードします。
fabric01-002.png

2.アップロードしたファイルの内容を確認します。
fabric01-003.png

3.この後の手順でレイクハウス上のファイルを読み込ませますが、その時にレイクハウス上のファイルのパスを指定する必要がありますので、ファイルのパスの文字列をコピペしておきます。コピぺをするには、ファイル名のところにカーソルをおき、右クリックして表示したメニューから「ABFSパスのコピー」をクリックします。
fabric01-007.png

4.「ノートブックを開く」をクリックします。
fabric01-004.png

5.ノートブックにPySpark(python)を選択します。
fabric01-005.png

6.ノートブックのコマンド領域に以下のコードを貼り付けます。

df = spark.read.option("header", "true").csv("abfss://{識別子}@onelake.dfs.fabric.microsoft.com/{識別子}/Files/test3.csv")

# すべての列名を取得
columns = df.columns

# stack関数用の文字列を作成(表示名は文字列、列名はバッククォートで囲む)
stack_expr = ", ".join([f"'{col}', `{col}`" for col in columns])

# stackで縦持ち(UNPIVOT)する
unpivot_df = df.selectExpr(f"stack({len(columns)}, {stack_expr}) as (ColumnName, Value)")

# 結果表示
unpivot_df.show(truncate=False)

補足説明
CSVファイルは、3.の手順でコピペしたabfssのパスに置き換えます。

7.コードを実行します。赤丸のアイコンをクリックするとコードが実行されます。
fabric01-008.png

8.上記のコードを実行した例が以下です。
fabric01-009.png

参考

Microsoft社のFabricについての参考ページ
microsoft-fabric
learn.microsoft.com-fabric

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?