たとえばこんなデータがあったとしましょう。(2回目)
ここから、モデル名だけのリストを作りたい場合、または容量の違いを見ずに、モデル名とカラーだけのリストを作りたい場合、どうしたらよいでしょうか? Power Automateで。
重複の排除
Power Appsだとあるんですよね。 Distinct関数が。これが指定した列で一意なリストを得ることができます。
Power Automateには、ありません。 Distinctみたいな関数はないです。
そんな重複の削除、リストの特定の列から一意な値だけを取得する方法を紹介します。
まずはいつものSelect
まずは必要な列(というか一意にしたい列)だけで構成されるリスト(配列)を作る必要があります。これにはSelectアクションを利用します。
出来た配列は、単純に最初のリストでCapacityを取り除いただけで、NameとColorは重複したままです。
一意が欲しいならunion()
**リストから一意な一覧を得たいなら、union()**を使いましょう!
重要なのは戻り値の説明にある「重複はありません」です。unionの結果は重複を許さないんです。
例えば、 [1,2,3,4]と[3,4,5]をunionすると、戻り値は[1,2,3,4,5]です。この性質を利用します。
Selectの結果は body('Select')
です。これを踏まえて。
union(body('Select'),json('[]'))
これで完成です!
json('[]')
は空の配列をjsonとして生成しています。これと重複を含む配列をunionすると、元の配列からも重複が取り除かれた結果が得られます!
[
{
"Name": "iPhone XR",
"Color": "Red"
},
{
"Name": "iPhone XR",
"Color": "Black"
},
{
"Name": "iPhone 11",
"Color": "White"
}
]
無事NameとColorで一意のリストができました!
おわり
簡単なアクションとちょっとだけの数式で一意なリストを生成することができました。
今回のFlowは以下からダウンロードできますので、試してみてください。
https://github.com/mofumofu-dance/PowerApps365/blob/master/Samples/DistinctArray.zip
※友人のFlow忍者ことJohn Liu が動画で説明してくれています!ぜひご覧ください。
https://www.youtube.com/watch?v=dNvxMMdWmjk