1. irohamaru

    No comment

    irohamaru
Changes in body
Source | HTML | Preview
@@ -1,92 +1,92 @@
Collections, Collection Manipulationは非常によく使うオブジェクトの一つです。
特にCollection Manipulationは多数のアクションがありますが、よく使うものは限られます。
↓Collection Manipulationのアクション一覧です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/7f7594c0-3dd7-78a8-67ab-96a228dd3425.png)
見るからにいろいろできそうですが、個人的によく使うのは**4つだけ**です(笑)
- Collectionsオブジェクト
- Add Row
- Remove All Rows
- Collection Manipulationオブジェクト
- Filter Collection
- Append Rows to Collection
※**Append Rows to Collection**については、混同しやすい**Marge Collecton**と合わせて解説します。
##行追加
####Collectionsオブジェクト:Add Row
空行を追加する場合はこれです。
-Collection Manipulationオブジェクトでないことに注意です。
+**Collection Manipulationオブジェクトでない**ことに注意です。
Collection Manipulationとは違い、コレクション名を**文字列で**指定する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/d0036394-c68c-36c2-c368-c5c26d657d12.png)
##一括削除
####Collectionsオブジェクト:Remove All Rows
例えば、ループ内で同じコレクション変数を使いまわしたい場合、
ループ冒頭でコレクションを初期化するときに使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/b749e34f-8b05-28d0-8d66-ab0894e4019e.png)
##絞り込み
####Collection Manipulationオブジェクト:Filter Collection
絞り込み以外にコレクションデータの削除にも使えるので非常に便利。
**絞り込んだ結果のコレクションを別のコレクションに保持できる**のがミソです。
下図の例では、絞り込み対象は**経路一覧コレクション**ですが、結果は**明細データ一覧**となっており、元のコレクションには影響を与えず、新規のコレクションに結果を格納しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/7015e326-3b86-7eb7-fc8f-24d35a7c8934.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/12f0addb-22da-bfb4-48b7-1a442c29c73f.png)
入力・出力とも同じコレクションにすれば、データ削除としても活用できます。
##列結合
####Collection Manipulationオブジェクト:Marge Collection
列結合は**Marge Collection**です。
下図は「経路一覧1」「経路一覧1-1」コレクションを列結合する例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/4fbd9d3c-0ad1-fb12-2c30-59df8aba497d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/a11cbf8c-6e32-b3f3-4970-355ddf18f929.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/436b29a9-00aa-213a-6822-d7fc2a79dca4.png)
列結合結果はJoin結果というコレクションに格納するとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/46d6dfc2-c1cf-69fc-78b1-89c37ee9a814.png)
結果↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/6c698e41-a4ec-8f88-e443-cd9f4035c079.png)
結合する2つのコレクションで、重複する列名があった場合はエラーになってしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/a83b9dff-7b27-7160-e416-ac1b36440bf6.png)
##行結合
####Collection Manipulationオブジェクト:Append Rows to Collection
行結合は**Append Rows to Collection**です。
**Marge Collection**と混同しやすいので注意しましょう。
下図は「経路一覧1」「経路一覧2」コレクションを列結合する例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/4fbd9d3c-0ad1-fb12-2c30-59df8aba497d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/7ef4fbea-8db7-1dd2-22e5-a7f2c9cfa6e5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/6367c4b1-1c49-dd50-3596-3cc3ad364b9a.png)
行結合結果はUnion結果というコレクションに格納するとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/0f66cf4f-6ad0-e866-b99e-39e9feb0c50d.png)
結果↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/dde14ed7-98ba-b977-ade3-fbba6e3af821.png)
結合する2つのコレクションで、列数・列名が異なる場合はエラーになってしまいます。
列数が異なる場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/772eadf3-7422-0639-4ae4-e3efea2727db.png)
列名が異なる場合
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/79ca04f6-c733-1f7b-008e-e04be429bb7b.png)
行追加(Append Rows to Collection)は、ベースとなるコレクションに1行ずつ追加していく処理などでよく使います。
##値代入
####Collection Manipulationオブジェクト:Set Collection Field
指定した行・列に対してパラメータを代入したい場合に使います。
行インデックスを別途変数に持たせる必要がある点に注意です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186221/efcc58e5-6ea7-2cdb-6bc7-92b7ec9654ad.png)