フローの「レコードの取得」要素にて一定の条件に合致するコレクション変数を作成後に、そのコレクション変数内にあるレコード数をカウントする方法を検証してきます。
1フローで実行される要素数は最大2000までという制限があるため、ループ要素を用いたカウントは危険です。またガバナ制限抵触の恐れもありますのでより負荷が少ない実現方法を見つけたいと思います。
【2024年3月追記】
”変換”要素を使用すれば要素数以外に、コレクション変数内の数値や金額の合計値もループ無しで実現できます。
コレクション変数の準備
検証準備として、まずはコレクション変数を作成します。
ここでは取引先の電話項目で「03」にて始まる全取引先を格納した取引先コレクション変数を作成してみます。コレクション変数となるよう下記のように保存するレコードは「すべてのレコード」としています。
「TEL03_account」という取引先コレクション変数が作成できました。
コレクション変数をループで1レコードずつカウントする
単純にループ要素と割り当て要素でカウントしてみます。
まず先ほど作成した取引先コレクション変数でループを作成します。
コレクション変数のレコード数をカウントアップするために、「number」という変数を用意しておきます。
作成した「number」に1を加算する割り当て要素を作成します。
これらをつなげると下記となり、最終的に取引先コレクション変数に格納されたレコード数を「number」変数に保存できます。
ただし取引先コレクション変数に格納されたレコード数の数だけループが発生するので、かなりの負荷が想定されます。
また1フローで実行される要素数は最大2000までという制限があるため、取引先コレクション変数に2000件以上のレコードが格納されていると制限超過となってしまいます。
コレクション変数を割り当て要素のみでカウントする
次にループを使わずに取引先コレクション変数に格納されたレコード数をカウントしてみます。
先ほどの検証同様に、取引先の電話項目で「03」にて始まる全取引先を格納した取引先コレクション変数「TEL03_account」は事前に作成している状態から始めます。
また、レコード数を保存するための変数「number」も作成している状態から始めます。
先ほどはまずループ要素を作成しましたが、今回はいきなり割り当て要素を作成します。
ポイントは演算子で「次の数と一致する」を選択する点です。
「次の数と一致する」を選択した状態だと値にはレコードコレクション変数の「TEL03_account」を指定することが出来ます
結果的に割り当て要素は下記となり、レコードコレクション変数の「TEL03_account」のレコード数を変数「number」に保存するという処理となります。
今回は要素数が少ない、ループ要素を使わないということでかなりシンプルになりました。
最後に
レコードコレクション変数のレコード数カウントであれば今回見てきたように割り当て要素だけで実現することができます。
ただしレコードコレクション変数の各レコードで持つ金額の合計値など、レコード数計算以外は割り当て要素を使用することができないため、最初にためしたようにループ要素を駆使する必要があります。
コメント