19
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Power Automateでの"LookUp"

Posted at

Power Appsでアプリを作っているとLookUp関数(指定した条件に合うデータの一番目をとる)をよく使いますよね。
でもPower Automateだと、完全に一致するような関数がないことに気づきます。。
数式のレファレンス→https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference
配列系の関数見ても、なさそうなんですよ。。(あったら教えてください)

ということで今回は、Power AppsでいうところのLookUpをPower Automateでどう実現するかをご紹介します。

用意する配列

簡単のために、あまり列の多くない配列を1つ用意します。

image.png
この中から、customerIdが124のデータのcustomerNameを取り出してみます。

まずは手で配列を用意します。※この部分はSharePointリストを使ったほうが簡単かもです。
image.png

方法1 : Filter + first

Power Appsでも慣れ親しんだ、FilterしてFirstをとるのと同等の操作です。
まずはFilterのアクションで、customerId = 124のデータを取り出します。
この操作では、特にcustomerIdの一意性は保証されていないので、複数のデータが返ってくる想定で、結果は配列になります。
image.png

結果の配列の一つ目のデータ(行)を取り出し、その中のcustomerName列の値をとるには

first(body('Filter_array'))?['customerName']

という数式が使えます。
image.png

ここでやっていることは以下のようなデータ操作です。
image.png

このように、Power Appsと似たような順序で、LookUpができました。

方法2 : xpathの利用

方法の2番目はxpath関数を利用する方法です。xpathとは、xml形式のデータに対して、パスを指定してデータ取得するものです。

xpathを利用する際には、/root を定義する必要があるので、対応する配列も以下のようにしてxml化できるデータにします。
image.png

続くステップで、xml化します。これにはxml関数を使って、関数の引数に、ComposeアクションのOutputsを挿入します。
image.png
得られたxmlは以下のような構造になっています。

result.xml
<root>
    <items>
        <customerId>123</customerId>
        <customerName>Kei Tsukishima</customerName>
    </items>
    <items>
        <customerId>124</customerId>
        <customerName>Shoyo Hinata</customerName>
    </items>
    <items>
        <customerId>125</customerId>
        <customerName>Tobio Kageyama</customerName>
    </items>
    <items>
        <customerId>126</customerId>
        <customerName>Tadashi Yamaguchi</customerName>
    </items>
</root>

ここから、xpath関数でcustomerId=124のデータのcustomerNameを取得します。

結果を先に書くと、以下の数式になります。

first(xpath(outputs('Compose_2'),'/root/items[customerId=124]/customerName/text()'))

image.png

特にxpathの後半、'/root~以降が難解なので、以下日本語訳です:
image.png
ちゃんとインデントすると少しわかりやすいかもです。または、xmlが事前にわかっていればVS CodeのExtensionで、xpathを評価できたりします。

まとめ

今回はPower Appsでよく使うLookUpのPower Automate版を2つご紹介しました。
このほかにも方法はありますが、単純な値取り出しでは効果が見えづらいので、割愛しています。

  1. Filterアクションの出力結果をfirstで一個だけ取り出し、列(プロパティ)にアクセスする
  2. xmlを作って、xpathを利用してデータを検索する

値の取り出しでは、いずれも一瞬のうちに完了します。2つの操作で差が出てくるのは、特に配列間をくっつける操作(JOIN)した場合のパフォーマンスです。
これについては次の投稿でご紹介します。

19
13
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
19
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?