3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Power Query] 1列に積み重なったデータを表形式にするベストプラクティスは? (6) まとめ

Last updated at Posted at 2023-07-30

※この記事は 2023/7/22 に作成しました。
※オプションで、「地域の設定」の「クエリステップ」は、「常に英語」に設定されています。日本語で使用している場合は、各自環境で作成されるコードに読み替えてください。

Index

まとめ

作成の難易度

 ピボット操作は癖がありますが、GUIだけで出来上がるため、初心者への説明がしやすいかもしれません。うまく操作するには、ピボットの動作を理解する必要があります。今回使用したデータを操作する方法として、ほとんどの記事でこの方法が紹介されてるようです。
 その他のものは、わずかではありますがコードを記述する必要があります。その場合、当然ながら関数の使い方、書き方について、きちんと理解できるスキルレベルが求められます。

処理速度

 少量のデータを加工するには、さほど違いは発生しませんが、データ量が増えた場合、処理時間に大きな違いが生まれます。

 以下は、957,900行のデータで計測した結果です。

処理 時間(秒)
1. Table.AddIndexColumn → Table.Pivot 24
2. Table.Split → Table.Transpose → Table.Combine 24
3. List.Split → Table.FromRows -
4. Table.AlternateRows → Table.FromColumns 3
5. List.Alternate → Table.FromColumns 3

 1番、2番は、縦横を変換するためにデータをメモリ上に読み込んで処理を行っているため、データ量が増えると処理速度が遅くなります。

 3番は、Table.FromRowsの処理でソースファイルを何回も読み込む処理が行われているため、法外な処理時間が必要となります。30分以上たっても終了しませんでした。この処理は、1つのリストを処理するたびに、改めてデータの最初から読み込みをし直すという動作をしています。つまり、最初のリストを処理で1~3のデータを読み込み、2番目のリストを処理するために1~6のデータを読み直します。処理が進むにしたがって読み込み量は増えていくことになります。

 4番と5番の処理は、データを上から順番に処理していくストリーミング処理が行われます。データの読み込み回数は項目の数だけ行われ、今回の処理では3項目なので全体が3回読み込まれます。しかし、読み込みながら処理が行われることで、過大な読み込み処理が発生せず、メモリの利用効率も優れた処理となります。

 従ってPower Queryを業務で利用する場合、最も望ましい処理は4番と5番の処理になります。それ以外の方法を選択すべきではありません。ここで取り上げた処理の動作を理解し、直ちに書き直すことを強くお勧めします。

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?