3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

やはりデータ操作は「選択」、選択は全てを圧倒する インデックス列の追加 - Power Automate

Posted at

インデックス列の追加

インデックス列が欲しい!
超絶美少女のアイコンへ神絵師により転生した私はこのように叫びます。

配列データを取り扱っていると、「やっぱインデックス列ないと不便だな」と度々感じます。Power Automateの対応策を考えました。

結論は選択(Select)の圧勝です。

以前の検証はこちら

アプローチの仕方

今回は国勢調査 / 時系列データ / 男女,年齢,配偶関係 - 東京都 - 令和2年のデータで試します。

64件のデータです。

長いサンプルのJSONはこちらから
[
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "東京都",
        "Column4": 14047594,
        "Column5": 1566840,
        "Column6": 8944193,
        "Column7": 3107822
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "特別区部",
        "Column4": 9733276,
        "Column5": 1059831,
        "Column6": 6326082,
        "Column7": 2028506
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "千代田区",
        "Column4": 66680,
        "Column5": 8976,
        "Column6": 46517,
        "Column7": 10852
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "中央区",
        "Column4": 169179,
        "Column5": 23086,
        "Column6": 121217,
        "Column7": 24683
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "港区",
        "Column4": 260486,
        "Column5": 34714,
        "Column6": 174886,
        "Column7": 42546
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "新宿区",
        "Column4": 349385,
        "Column5": 29202,
        "Column6": 223593,
        "Column7": 63185
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "文京区",
        "Column4": 240069,
        "Column5": 28065,
        "Column6": 152818,
        "Column7": 42020
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "台東区",
        "Column4": 211444,
        "Column5": 18648,
        "Column6": 142955,
        "Column7": 47510
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "墨田区",
        "Column4": 272085,
        "Column5": 28028,
        "Column6": 183630,
        "Column7": 60108
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "江東区",
        "Column4": 524310,
        "Column5": 66472,
        "Column6": 341716,
        "Column7": 110002
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "品川区",
        "Column4": 422488,
        "Column5": 47036,
        "Column6": 272685,
        "Column7": 79532
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "目黒区",
        "Column4": 288088,
        "Column5": 31547,
        "Column6": 196916,
        "Column7": 55811
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "大田区",
        "Column4": 748081,
        "Column5": 77231,
        "Column6": 475656,
        "Column7": 161855
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "世田谷区",
        "Column4": 943664,
        "Column5": 108940,
        "Column6": 638629,
        "Column7": 190042
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "渋谷区",
        "Column4": 243883,
        "Column5": 22984,
        "Column6": 154258,
        "Column7": 41261
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "中野区",
        "Column4": 344880,
        "Column5": 29123,
        "Column6": 231515,
        "Column7": 65878
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "杉並区",
        "Column4": 591108,
        "Column5": 58944,
        "Column6": 380639,
        "Column7": 117072
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "豊島区",
        "Column4": 301599,
        "Column5": 26489,
        "Column6": 211034,
        "Column7": 58539
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "北区",
        "Column4": 355213,
        "Column5": 36527,
        "Column6": 229948,
        "Column7": 87381
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "荒川区",
        "Column4": 217475,
        "Column5": 24470,
        "Column6": 141156,
        "Column7": 50411
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "板橋区",
        "Column4": 584483,
        "Column5": 60014,
        "Column6": 367976,
        "Column7": 132602
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "練馬区",
        "Column4": 752608,
        "Column5": 85920,
        "Column6": 478648,
        "Column7": 159298
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "足立区",
        "Column4": 695043,
        "Column5": 75589,
        "Column6": 424335,
        "Column7": 170261
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "葛飾区",
        "Column4": 453093,
        "Column5": 51556,
        "Column6": 285968,
        "Column7": 111893
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "江戸川区",
        "Column4": 697932,
        "Column5": 86270,
        "Column6": 449387,
        "Column7": 145764
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "八王子市",
        "Column4": 579355,
        "Column5": 62867,
        "Column6": 344893,
        "Column7": 153504
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "立川市",
        "Column4": 183581,
        "Column5": 21828,
        "Column6": 115971,
        "Column7": 45524
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "武蔵野市",
        "Column4": 150149,
        "Column5": 17232,
        "Column6": 95301,
        "Column7": 31725
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "三鷹市",
        "Column4": 195391,
        "Column5": 23468,
        "Column6": 123039,
        "Column7": 41623
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "青梅市",
        "Column4": 133535,
        "Column5": 13763,
        "Column6": 76704,
        "Column7": 42492
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "府中市",
        "Column4": 262790,
        "Column5": 32986,
        "Column6": 165586,
        "Column7": 56764
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "昭島市",
        "Column4": 113949,
        "Column5": 13780,
        "Column6": 68947,
        "Column7": 30003
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "調布市",
        "Column4": 242614,
        "Column5": 28754,
        "Column6": 153175,
        "Column7": 50414
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "町田市",
        "Column4": 431079,
        "Column5": 51174,
        "Column6": 253130,
        "Column7": 116470
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "小金井市",
        "Column4": 126074,
        "Column5": 14879,
        "Column6": 80498,
        "Column7": 25591
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "小平市",
        "Column4": 198739,
        "Column5": 25072,
        "Column6": 121648,
        "Column7": 45060
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "日野市",
        "Column4": 190435,
        "Column5": 22894,
        "Column6": 115015,
        "Column7": 45652
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "東村山市",
        "Column4": 151815,
        "Column5": 17720,
        "Column6": 90285,
        "Column7": 40749
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "国分寺市",
        "Column4": 129242,
        "Column5": 15082,
        "Column6": 81431,
        "Column7": 27184
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "国立市",
        "Column4": 77130,
        "Column5": 8448,
        "Column6": 48511,
        "Column7": 17748
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "福生市",
        "Column4": 56414,
        "Column5": 5692,
        "Column6": 34800,
        "Column7": 15153
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "狛江市",
        "Column4": 84772,
        "Column5": 9736,
        "Column6": 52699,
        "Column7": 19961
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "東大和市",
        "Column4": 83901,
        "Column5": 10661,
        "Column6": 50007,
        "Column7": 22923
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "清瀬市",
        "Column4": 76208,
        "Column5": 8710,
        "Column6": 44106,
        "Column7": 21482
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "東久留米市",
        "Column4": 115271,
        "Column5": 13735,
        "Column6": 67397,
        "Column7": 32745
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "武蔵村山市",
        "Column4": 70829,
        "Column5": 9375,
        "Column6": 41663,
        "Column7": 18847
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "多摩市",
        "Column4": 146951,
        "Column5": 16577,
        "Column6": 87607,
        "Column7": 42582
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "稲城市",
        "Column4": 93151,
        "Column5": 13130,
        "Column6": 58186,
        "Column7": 20087
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "羽村市",
        "Column4": 54326,
        "Column5": 6531,
        "Column6": 32849,
        "Column7": 14728
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "あきる野市",
        "Column4": 79292,
        "Column5": 9235,
        "Column6": 43149,
        "Column7": 23792
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "西東京市",
        "Column4": 207388,
        "Column5": 24707,
        "Column6": 128947,
        "Column7": 48446
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "瑞穂町",
        "Column4": 31765,
        "Column5": 3443,
        "Column6": 18609,
        "Column7": 9517
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "日の出町",
        "Column4": 16958,
        "Column5": 2235,
        "Column6": 8095,
        "Column7": 6538
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "檜原村",
        "Column4": 2003,
        "Column5": 131,
        "Column6": 806,
        "Column7": 1058
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "奥多摩町",
        "Column4": 4750,
        "Column5": 337,
        "Column6": 1998,
        "Column7": 2410
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "大島町",
        "Column4": 7102,
        "Column5": 710,
        "Column6": 3679,
        "Column7": 2713
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "利島村",
        "Column4": 327,
        "Column5": 50,
        "Column6": 197,
        "Column7": 80
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "新島村",
        "Column4": 2441,
        "Column5": 272,
        "Column6": 1202,
        "Column7": 967
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "神津島村",
        "Column4": 1855,
        "Column5": 274,
        "Column6": 994,
        "Column7": 587
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "三宅村",
        "Column4": 2273,
        "Column5": 225,
        "Column6": 1151,
        "Column7": 894
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "御蔵島村",
        "Column4": 323,
        "Column5": 60,
        "Column6": 205,
        "Column7": 58
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "八丈町",
        "Column4": 7042,
        "Column5": 799,
        "Column6": 3415,
        "Column7": 2801
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "青ヶ島村",
        "Column4": 169,
        "Column5": 21,
        "Column6": 117,
        "Column7": 31
    },
    {
        "Column1": "2020年",
        "Column2": "令和2年",
        "Column3": "小笠原村",
        "Column4": 2929,
        "Column5": 416,
        "Column6": 2099,
        "Column7": 413
    }
]
  1. Apply to each(現: それぞれに適用する)
  2. Do until
  3. 選択

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

image.png

ネタバレですが、結論は選択(Select)の圧勝です。

Apply to each(現: それぞれに適用する)Do until

Apply to each(現: それぞれに適用する)Do untilは、結果を格納する配列とイテレーターである変数i, jをそれぞれ宣言します。

image.png

Apply to each(現: それぞれに適用する)の場合、配列変数に追加のアクションは

Apply to each
addProperty(item(),'Index',variables('i'))

Do untilの場合

Do until
addProperty(body('JSON_Array')?[variables('j')],'Index',iterationIndexes('Do_until'))

addProperty 関数はオブジェクトにプロパティを追加する便利な関数です。
Indexというプロパティを設けて、イテレーターの値を設定しています。

Do untilで使用できるというiterationIndexes 関数も初めて使ってみました。

variables('j')iterationIndexes('Do_until')に置き換えることができます。
しかしDo untilの条件を鑑みると、値を識別するための変数が必要だったため、結局jという変数を設けました。

結果は・・・

image.png

双方15~25秒かかってしまい、遅い

やはり選択(Select)

選択(Select)のアプローチは

  1. 配列の要素数をlength 関数で取得し、range 関数を設け
  2. Fromrange 関数MapaddProperty(body('JSON_Array')?[item()],'Index',item())と指定

こちらで内部的に繰り返し処理を実施して、高速でインデックスの付与も達成しています。

inputs
{
"from": "@range(0,length(body('JSON_Array')))",
"select": "@addProperty(body('JSON_Array')?[item()],'Index',item())"
}

image.png

一つだけ次元が違う。

おわりに

やはり選択は圧勝ですね!
選択最強です!

なるべく選択でやりたい!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?