インデックス列の追加
インデックス列
が欲しい!
超絶美少女のアイコンへ神絵師により転生した私はこのように叫びます。
配列
データを取り扱っていると、「やっぱインデックス列ないと不便だな」と度々感じます。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
}
]
- Apply to each(現: それぞれに適用する)
Do until
- 選択
上記の三つを比較します。
ネタバレですが、結論は選択(Select)の圧勝です。
Apply to each(現: それぞれに適用する)とDo until
Apply to each(現: それぞれに適用する)とDo until
は、結果を格納する配列とイテレーターである変数i
, j
をそれぞれ宣言します。
Apply to each(現: それぞれに適用する)の場合、配列変数に追加
のアクションは
addProperty(item(),'Index',variables('i'))
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
という変数を設けました。
結果は・・・
双方15~25秒かかってしまい、遅い。
やはり選択(Select)
選択(Select)のアプローチは
- 配列の要素数をlength 関数で取得し、range 関数を設け
-
From
をrange 関数、Map
はaddProperty(body('JSON_Array')?[item()],'Index',item())
と指定
こちらで内部的に繰り返し処理を実施して、高速でインデックスの付与も達成しています。
{
"from": "@range(0,length(body('JSON_Array')))",
"select": "@addProperty(body('JSON_Array')?[item()],'Index',item())"
}
一つだけ次元が違う。
おわりに
やはり選択は圧勝ですね!
選択最強です!
なるべく選択でやりたい!