【Power Apps】コレクションに列を追加(コレクションの結合)

既存のコレクションにキーで紐づけたデータを追加したい場合にだいぶ手こずったため、こちらにまとめます。

別のコレクションに一列追加する場合

今回は下記2つのコレクションを一から作成し、IDをキーに2つのコレクションを結合し、1つの新しいコレクションを作成します。

※実際はコレクションを一から書くことはなく、データソースから読み取ることが多いと思いますが、練習のため一から作成しています。

ClearCollect(
    Arashi_Name,
    {ID: "0001", Name: "Ohno Satoshi"},
    {ID: "0002", Name: "Sakurai Sho"},
    {ID: "0003", Name: "Aiba Masaki"},
    {ID: "0004", Name: "Ninomiya Kazunari"},
    {ID: "0005", Name: "Matsumoto Jun"}
);

ClearCollect(
    Arashi_Color,
    {ID: "0001", Color: Blue},
    {ID: "0002", Color: Red},
    {ID: "0003", Color: Green},
    {ID: "0004", Color: Yellow},
    {ID: "0005", Color: Purple}
);
Arashi_Nameコレクション
Arashi_Colorコレクション
//Arashi_NameコレクションにColor列を追加します
//既存のコレクションには追加できないため、新たなコレクションを作成します
ClearCollect(
    Arashi,
    AddColumns(
        Arashi_Name,
        "Color",
        LookUp(
            Arashi_Color,
            ID = Arashi_Name[@ID],
            Color
        )
    )
)
Arashi_NameコレクションにColor列を追加したArashiコレクション
スポンサーリンク

別のコレクションにすべての列を追加する場合

先ほどと同じように下記の2つのコレクションを使用します。

ClearCollect(
    Arashi_Name,
    {ID:"0001",Name:"Ohno Satoshi"},
    {ID:"0002",Name:"Sakurai Sho"},
    {ID:"0003",Name:"Aiba Masaki"},
    {ID:"0004",Name:"Ninomiya Kazunari"},
    {ID:"0005",Name:"Matsumoto Jun"}
);

ClearCollect(
    Arashi3,
    {ID:"0001",Color:"Blue",Birthplace:"Tokyo",BloodType:"A"},
    {ID:"0002",Color:"Red",Birthplace:"Tokyo",BloodType:"A"},
    {ID:"0003",Color:"Green",Birthplace:"Chiba",BloodType:"AB"},
    {ID:"0004",Color:"Yellow",Birthplace:"Tokyo",BloodType:"A"},
    {ID:"0005",Color:"Purple",Birthplace:"Tokyo",BloodType:"A"}
);
Arashi3コレクション

Arashi_NameコレクションにArashi3コレクションの全列を追加する新しいコレクションを作成します。

ClearCollect(
    Arashi,
    Ungroup(
        DropColumns(
            AddColumns(
                Arashi3,
                "myGroupedColumn",
                Filter(
                    Arashi_Name,
                    ID = Arashi3[@ID]
                )
            ),
            "ID"
        ),
        "myGroupedColumn"
    )
);

入れ子になっているので、ばらして説明します。

まず中のAddColumns関数ですが、コレクションに1列追加しています。今回はArashi3コレクションのすべてのデータを1列として扱っています。

DropColumns関数を利用しているのは、キーになっているID列が重複するため、ID列を削除しています。

Ungroupで1列で放り込んだデータをばらしています。

Arashi_NameコレクションにArashi3コレクションの列を追加した結果

SharePointリストのデータを使用する場合の注意点

SharePointリストのデータを全部使用し、すべてのデータを別のSharePointリストのデータに追加しようとすると同じ列名があるため結合できないとエラーが発生します。これはなぜかというと、SharePointリストには非表示になっている既存の列が存在するためです。

そのため、SharePointリストのデータとSharePointリストのデータを結合する場合はすべての列を結合をするは使用できないため、必要な列のみそれぞれ追加する方がベストです。

ClearCollect(
    Arashi,
    AddColumns(
        Arashi_Name,
        "Color",
        LookUp(
            Arashi3,
            ID = Arashi_Name[@ID],
            Color
        ),
        "BloodType",
        LookUp(
            Arashi3,
            ID = Arashi_Name[@ID],
            BloodType
        )
    )
)
スポンサーリンク