LoginSignup
26
36

やはりデータ操作は「選択」、選択は全てを圧倒する - Power Automate

Last updated at Posted at 2024-05-06

はじめに

明日からいよいよゴールデンウイークが終わってしまう。
皆様はいかがお過ごしでしょうか。

私は( ^ω^)・・・。

さて、ゴールデンウイークに、ちょくちょくQiitaを更新してきましたが、
Power Automateデータ操作の速度に焦点を当てて、繰り返し処理の速度について紹介します。

実行するシナリオ

繰り返し処理を用いて、2024年の日付タイムスタンプと曜日の一覧の配列を作成します。
イメージはこんな感じです。

Date Weekday
2024-01-01T00:00:00.0000000
2024-01-02T00:00:00.0000000
2024-01-03T00:00:00.0000000
2024-01-04T00:00:00.0000000
2024-01-05T00:00:00.0000000

といった具合に作成します。
2024年は366日あるので、366回分の繰り返し処理です。

比較対象

  1. Apply to each(現: それぞれに適用する)
  2. Do until
  3. 選択

上記の三つを比較します。

image.png

0. 事前準備

曜日オブジェクト型の変数で、日本語表記に変換します。

image.png

Apply to each(現: それぞれに適用する)Do untilは、結果を格納する配列を、あらかじめ用意します。

image.png

開始時間と終了時間は、作成アクションで決め打ちです。

image.png

年間の日数は、dayOfYear関数で簡単に取得できます。

dayOfYear関数
dayOfYear(outputs('終了時刻'))

image.png

1. Apply to each(現: それぞれに適用する)

Apply to eachに渡す配列はrange関数で定義します。

image.png

配列変数に追加
@{range(1, outputs('日数'))}

配列変数に追加に下記の値を設定します。

配列変数に追加
{
  "Date": @{addDays(addDays(outputs('開始時刻'),item()),-1)},
  "Weekday": @{variables('Weekday')?[string(dayOfWeek(addDays(addDays(outputs('開始時刻'),item()),-1)))]}
}

image.png

item()から、繰り返し処理の現在地を取得できるため、日別の繰り返し処理が実施できています。

2. Do until

内容はほぼApply to eachと一緒です。
変数iをイテレーターとして利用します。

image.png

3. 選択

データ操作の選択アクションです。

image.png

Fromは、Apply to each同様です。

From
range(1, outputs('日数'))

Mapは下記の設定にしています。

Map
{
  "Date": @{addDays(addDays(outputs('開始時刻'),item()),-1)},
  "Weekday": @{variables('Weekday')?[string(dayOfWeek(addDays(addDays(outputs('開始時刻'),item()),-1)))]}
}

やっていることは他と一緒ですね。

結果は選択が圧勝

見てのとおり、ぶっちぎりで選択が速いです。

image.png

方法 速度
Apply to each 2分20秒
Do until 2分32秒
選択 🎊🔥✨ 0.1秒 🎊🔥✨

作成された配列は、同じ内容です!

こんなに違うものかと驚きですね!

Power Automate始めたての時は、とっつきにくい印象がありましたが、
間違いなく便利なメソッドです!

一緒に身につけていきましょう!

26
36
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
26
36