Power AutomateでのCSV出力の方法+Excel出力の方法を4つ紹介します。
また、5000行のSharePointリストのエクスポートにかかるそれぞれの処理時間を比較しているので、実装方法を選択するときの参考にしてください。
走者一覧
私の知っているCSV出力、Excel出力の方法をかき集めて一つのフローにしました。
並列で処理することでフローの処理時間を比較します。
第1コース:爆速Excel出力
以前こちらの記事で紹介した方法をExcel出力用に改造しました。
最大値、最小値の取得までは同じで、n個の配列を作る箇所を50分割しています。
これによりリストのアイテム数が(5000*50=)250000以下であれば、コンカレンシー制御で最大効率の処理が出来るようになります。
そして、50回Apply to eachで繰り返し処理を行うためにrange関数で配列を作成します。
その後の処理はほぼ同じですが、くり返し中の最小値と最大値の計算を変更しています。
最小値:add(outputs('最小値'), mul(items('Apply_to_each'), outputs('n')))
最大値:add(outputs('繰り返し中の最小値'), outputs('n'))
第2コース:CSV出力
普通のCSV出力です。
concat(decodeUriComponent('%EF%BB%BF'),body('CSV_テーブルの作成'))
文字化けしてしまうのでファイルコンテンツを上記で変換します。
第3コース:通常Excel出力
通常の行追加をApply to eachで繰り返し処理します。コンカレンシー制御を有効化していないのでとても遅いです。
第4コース:並列Excel出力
通常Excel出力のコンカレンシー制御を有効化したバージョンです。
第5コース:GraphAPI
以下の記事で紹介されているGraphAPIを使用する方法でExcelを出力します。
How to export data in Power Automate to an Excel File
元記事では出力先がOneDriveですが、出力先をSharePointに変更しています。
結果
結果は、
- CSV:17秒(284行/s)
- GraphAPI:24秒(208行/s)
- 爆速:1時間43分(0.809行/s)
- 並列:4時間21分(0.318行/s)
- 通常:6時間32分(0.213行/s)
でした。
※()内の処理速度は概算
まとめ
CSVが最速で17秒、続いてGraph APIはCSVとほぼ同じの24秒でした。
またアクションによるExcel出力は工夫しても1行/sは超えられないこと、並列処理させれば通常の処理速度の1.5倍になることがわかりました。
やはりテーブルデータはCSVで出力し、ローカルでCSV→Excelに変換するのが最も効率が良いことがわかります。
Graph APIの使用はテナントで制限されていることが多いので、この記事を参考に処理速度による費用対効果を管理者に訴求してGraph APIの利用を許可してもらうのも一つの手だと思います。
コメント