#PowerApps의 데이터 조인 (JOIN)

6956 단어 PowerApps
별로 비개발의 분에게는 익숙하지 않은, 데이터 결합에 대해서입니다.
조인에 대한 일반적인 설명은 여러 가지가 있습니다.

이번에는 Power Apps의 틀에서 5개의 JOIN(INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER, CROSS)을 어떻게 실현하는지 설명합니다.

관련 게시물; 여기

준비



단순화를 위해 다음과 같은 두 가지 Collection을 고려하십시오.

고객



CustID
CustomerName
Country


1
Alfreds Futterkiste
독일


2
Ana Trujillo
멕시코


3
Antonio Moreno Taquería
멕시코


주문



OrderID
CustID
OrderDate
ShipperID


10308
2
1996-09-18
3


10309
37
1996-09-19
1


10310
77
1996-09-20
2


조인 조건은 CustID가 일치하는지 여부입니다.
이 경우 보시다시피 CustID = 2의 레코드는 공통 부분입니다.

두 개의 Collection 생성은 다음과 같습니다. 어떤 버튼으로 생성하십시오.
ClearCollect(Customer,
{CustID:1,CutstomerName:"Alfreds Futterkiste",Country:"Germany"},
{CustID:2,CutstomerName:"Ana Trujillo",Country:"Mexico"},
{CustID:3,CutstomerName:"Antonio Moreno Taquería",Country:"Mexico"});
ClearCollect(Order,
{OrderID:10308,CustID:2,ShipDate:Date(1996,9,18),ShipperID:3},
{OrderID:10309,CustID:37,ShipDate:Date(1996,9,19),ShipperID:1},
{OrderID:10310,CustID:77,ShipDate:Date(1996,9,20),ShipperID:2})

모든 조인에서 다음과 같은 테이블을 얻을 수 있습니다.



CustID
CustomerName
Country
OrderID
OrderDate
ShipperID


그럼 빨리 데이터를 결합합시다.

JOIN two collections



LEFT OUTER



실은 가장 간단한 것은 LEFT OUTER JOIN입니다.
LEFT가 Customer 테이블이면,
DropColumns(
    Ungroup(
        AddColumns(
            Customer,
            "order",
            Filter(
                RenameColumns(
                    Order,
                    "CustID",
                    "OCustID"
                ),
                CustID = OCustID
            )
        ),
        "order"
    ),
    "OCustID"
)

htps : // 이 m/h-나가오/있어 ms/f4 아 65에 7c84357599b8b8

LEFT 테이블의 모든 데이터와 RIGHT의 일치 부분이 표시되었습니다.

RIGHT OUTER



RIGHT OUTER는 왼쪽과 오른쪽 역할만 바꿉니다.
DropColumns(
    Ungroup(
        AddColumns(
            RenameColumns(
                Order,
                "CustID",
                "OCustID"
            ),
            "order",
            Filter(
                Customer,
                CustID = OCustID
            )
        ),
        "order"
    ),
    "OCustID"
)


정말, 테이블의 위치가 바뀌고 있습니다.

INNER JOIN



FULL OUTER 전에 INNER JOIN에서.
INNER JOIN은 LEFT/RIGHT의 공통 부분을 추출하는 조작이므로, LEFT/RIGHT OUTER 후에 Filter해 주면 됩니다.
DropColumns(
    Filter(
        Ungroup(
            AddColumns(
                Customer,
                "order",
                Filter(
                    RenameColumns(
                        Order,
                        "CustID",
                        "OCustID"
                    ),
                    CustID = OCustID
                )
            ),
            "order"
        ),
        !IsBlank(OCustID)
    ),
    "OCustID"
)


포인트는 Filter(....,!IsBlank(OCustID)) 입니다. 조인시 참조에 사용된 열(RIGHT 유래)이, Blank가 아닌 레코드를 취득하는 것으로, 일치 부분만 취득하고 있습니다.

FULL OUTER



FULL OUTER는 스텝으로서는 LEFT OUTER+(RIGHT OUTER - INNER)의 형식으로 결과를 얻기로 합니다.
다른 좋은 방법이있을 수 있습니다.
DropColumns(
    Ungroup(
        Table(
            {
                Tab: Ungroup(
                    AddColumns(
                        Customer,
                        "order",
                        Filter(
                            RenameColumns(
                                Order,
                                "CustID",
                                "OCustID"
                            ),
                            CustID = OCustID
                        )
                    ),
                    "order"
                )
            },
            {
                Tab: Filter(
                    Ungroup(
                        AddColumns(
                            RenameColumns(
                                Order,
                                "CustID",
                                "OCustID"
                            ),
                            "order",
                            Filter(
                                Customer,
                                CustID = OCustID
                            )
                        ),
                        "order"
                    ),
                    IsBlank(CustID)
                )
            }
        ),
        "Tab"
    ),
    "OCustID"
)

매우 길지만 방법으로는
  • 테이블 형식의 열로 구성된 두 개의 레코드를 준비합니다.
  • 각각은 LEFT OUTER 및 (RIGHT OUTER -INNER)의 결과를 포함합니다.
  • Ungroup에서 테이블 풀기

  • 라는 느낌입니다. 2,3 부분은 내 이전 게시물을 참조하십시오.
    여기

    CROSS JOIN



    CROSS JOIN만은 조금 달라 모든 조합을 망라합니다. 즉, 참조할 열이 없습니다.
    이 경우 매우 간단하게 LEFT 테이블에 RIGHT 테이블을 열로 추가하고 해당 열을 Ungroup으로 확장하는 방법을 사용합니다.
    Ungroup(
        AddColumns(
            Customer,
            "OrderTab",
            RenameColumns(
                Order,
                "CustID",
                "OCustID"
            )
        ),
        "OrderTab"
    )
    



    결론



    Power Apps로 개발하는 사람의 메인은 이런 테이블 결합 등에별로 익숙하지 않을지도 모릅니다만, 알아두면 여러가지 편리하므로, 꼭 수중에서도 시험해 보세요.

    발전적으로 두 개의 SharePoint 목록을 사용해 보는 것이 좋은 교육이 될 수 있습니다.

    좋은 웹페이지 즐겨찾기