Power AutomatePower Automate for cloudtips

【Power Automate】CSV、Excel出力の方法、それぞれの処理時間

Power Automate

Power AutomateでのCSV出力の方法+Excel出力の方法を4つ紹介します。

また、5000行のSharePointリストのエクスポートにかかるそれぞれの処理時間を比較しているので、実装方法を選択するときの参考にしてください。

走者一覧

私の知っているCSV出力、Excel出力の方法をかき集めて一つのフローにしました。

並列で処理することでフローの処理時間を比較します。

第1コース:爆速Excel出力

以前こちらの記事で紹介した方法をExcel出力用に改造しました。

n:add(div(sub(outputs('最大値'), outputs('最小値')), 50), 1)

最大値、最小値の取得までは同じで、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に変更しています。

作り方はこちらを参考にしてください。コピペできます。

結果

結果は、

  1. CSV:17秒(284行/s)
  2. GraphAPI:24秒(208行/s)
  3. 爆速:1時間43分(0.809行/s)
  4. 並列:4時間21分(0.318行/s)
  5. 通常:6時間32分(0.213行/s)

でした。

※()内の処理速度は概算

まとめ

CSVが最速で17秒、続いてGraph APIはCSVとほぼ同じの24秒でした。

またアクションによるExcel出力は工夫しても1行/sは超えられないこと、並列処理させれば通常の処理速度の1.5倍になることがわかりました。

やはりテーブルデータはCSVで出力し、ローカルでCSV→Excelに変換するのが最も効率が良いことがわかります。

Graph APIの使用はテナントで制限されていることが多いので、この記事を参考に処理速度による費用対効果を管理者に訴求してGraph APIの利用を許可してもらうのも一つの手だと思います。

コメント

タイトルとURLをコピーしました