#2020/10/26 更新
こちらでもう少し詳しく書きました。
#前回の投稿
前回 PowerAutomateにおける"LookUp"では、First+Filterと、xpathによるLookUpの方法を紹介しました。
今回はよりトリッキーな感じですが、番外編としてCompose Json Dictionary Methodと呼ばれる方法を紹介します。
この方法はもともとJohn LiuのYoutubeで紹介されていたものです。
手法の概要
非常に大まかにいえば、{customerId, customerName}という列から構成される配列を、転置して1行のデータにしてしまおうというものです。
この方法にはもともと配列にID列が必要です。(転置により生成される列を一意にするため)
このような1行データ (Object)ができてしまえば、あとは outputs('Compose')?['customerId123']
のようにして各列(プロパティ)にアクセス、目的の値を取り出せます。
似たような方法は @shibatea さんの投稿 (https://qiita.com/shibatea/items/a07ecd00697d26417e70) の配列の選択アクションでも書かれています。
Compose json dictionary method
実際にやってみます。Compose json dictionaryというだけあって、Composeアクションを使います。
その前に、配列から転置後の列:値の関係にした文字列を生成します。
Selectのアクションを追加し、以下の数式を利用します。
concat('"customerId',item()?['customerId'],'":"',item()?['customerName'],'"')
手順が少し面倒なので、動画でどうぞ↓
この手順を行うと、以下のような結果が得られます。
なんとなく、もう少しという感じです。
あとはこれをカンマで結合して、json関数でオブジェクトに変えれば完成です。
完成!!!!
これで目的のオブジェクトができました!あとは後続のステップで outputs('Compose_3')?['customerId124']
のようにすれば、望む値が取得できます。
#まとめ
今回の方法は少し難易度高めでしたが(中級くらい)、こういう方法もあるということで、知っておくと高速に処理できたりします。(for eachして中で条件式書いたりしないで済む)
特にJohnのビデオでも説明されているように、2つの配列をJoinする際に非常に高速な処理を実現できます。
ぜひ前回の方法と合わせて試してみてください!