※この記事は 2023/7/22 に作成しました。
※オプションで、「地域の設定」の「クエリステップ」は、「常に英語」に設定されています。日本語で使用している場合は、各自環境で作成されるコードに読み替えてください。
Index
- (1) Table.AddIndexColumn → Table.Pivot
- (2) Table.Split → Table.Transpose → Table.Combine
- (3) List.Split → Table.FromRows
- (4) Table.AlternateRows → Table.FromColumns
- (5) List.Alternate → Table.FromColumns
- (6) まとめ
まとめ
作成の難易度
ピボット操作は癖がありますが、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番の処理になります。それ以外の方法を選択すべきではありません。ここで取り上げた処理の動作を理解し、直ちに書き直すことを強くお勧めします。