【#PowerApps】 매일 사용자의 최신 데이터를 얻습니다.

개요



이 질문에 나열된 문제를 해결합니다.
https://power.users.community/forums/topic/%E6%84%8F%E5%9B%B3%E3%81%97%E3%81%9F%E6%9D%A1%E4%BB%B6 %E3%81%A7%E3%81%AE%E6%8A%9C%E3%81%8D%E5%87%BA%E3%81%97%E6%96%B9%E3%81%8C%E3 %82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84/

질문에는 쓰여지지 않았지만 아마도 매일 정리해야 할 것 같습니다. 이번에는 그 순서를 소개합니다.

구현



데이터 준비



우선 샘플 데이터를 작성합시다.
Excel이라고 기재가 있습니다만, 조작이나 설명이 하기 쉽게 이번은 컬렉션으로부터 작성해 갑니다.
이번 식은 버튼의 OnSelect 액션에 기재하는 가정으로 쓰고 있습니다만, 어느 액션에 써도 기본적으로 문제 없습니다.
/ データの作成(Excelを想定)
ClearCollect(Data,
{
    ID:"01", Name:"Suzuki", Order:"○", DateTime:DateTimeValue("2020/09/08 01:23:45")
},{
    ID:"02", Name:"Yamada", Order:"○", DateTime:DateTimeValue("2020/09/08 03:33:33")
},{
    ID:"03", Name:"Tanaka", Order:"×", DateTime:DateTimeValue("2020/09/08 11:22:33")
},{
    ID:"04", Name:"Yamada", Order:"×", DateTime:DateTimeValue("2020/09/08 11:33:55")
},{
    ID:"05", Name:"Tanaka", Order:"○", DateTime:DateTimeValue("2020/09/08 12:12:12")
},{
    ID:"06", Name:"Tanaka", Order:"○", DateTime:DateTimeValue("2020/09/09 12:12:12")
}
);


다음에 일마다 정리하기 위해서 일의 열을 추가합니다.
// 日ごとにまとめるので、日を表すカラムを追加
ClearCollect(DataInDay,AddColumns(Data,"Day",Text(DateTime,"[$-ja]yyyy/mm/dd")))

GroupBy



다음에 이번 간인 함수 GroupBy 함수를 이용해, 방금 작성한 컬럼 Day (일) 마다 데이터를 정리해 갑니다.
// 日ごとの注文にまとめる
ClearCollect(DayOrdersGroup,GroupBy(DataInDay,"Day","DayOrders"));

GroupBy 함수에 대해 자세히 알아보세요.
htps : // / cs. 미 c 로소 ft. 코 m / 쟈 jp / 뽀뽀 ps / 마케 r / 칸ゔ ぁ s ps / 훗 c 치 온 s / 훗 c 치 온 - g 로 pby

마지막으로 이 데이터를 사용자별로 정리해 갑니다.
// コレクションの初期化
Clear(OrdersGroup);

// ユーザーごとにまとめる SortByColums を利用して日時降順で並べ替えておきます。
ForAll(DayOrdersGroup,Collect(OrdersGroup,GroupBy(SortByColumns(DayOrders,"DateTime",Descending),"Name","Orders")));

이제 원하는 데이터를 만들 수 있습니다.
마지막으로 하나로 정리하면 다음과 같습니다.
// データの作成(Excelを想定)
ClearCollect(Data,
{
    ID:"01", Name:"Suzuki", Order:"○", DateTime:DateTimeValue("2020/09/08 01:23:45")
},{
    ID:"02", Name:"Yamada", Order:"○", DateTime:DateTimeValue("2020/09/08 03:33:33")
},{
    ID:"03", Name:"Tanaka", Order:"×", DateTime:DateTimeValue("2020/09/08 11:22:33")
},{
    ID:"04", Name:"Yamada", Order:"×", DateTime:DateTimeValue("2020/09/08 11:33:55")
},{
    ID:"05", Name:"Tanaka", Order:"○", DateTime:DateTimeValue("2020/09/08 12:12:12")
},{
    ID:"06", Name:"Tanaka", Order:"○", DateTime:DateTimeValue("2020/09/09 12:12:12")
}
);
// 日ごとにまとめるので、日を表すカラムを追加
ClearCollect(DataInDay,AddColumns(Data,"Day",Text(DateTime,"[$-ja]yyyy/mm/dd")));

// 日ごとの注文にまとめる
ClearCollect(DayOrdersGroup,GroupBy(DataInDay,"Day","DayOrders"));

// コレクションの初期化
Clear(OrdersGroup);

// ユーザーごとにまとめる SortByColums を利用して日時降順で並べ替えておきます。
ForAll(DayOrdersGroup,Collect(OrdersGroup,GroupBy(SortByColumns(DayOrders,"DateTime",Descending),"Name","Orders")));


// これでユーザーごと+日ごとにまとめることができたので、ギャラリーなどで First() で取得が可能になります。

생성되는 데이터는 다음과 같습니다.




갤러리에 표시



마지막으로 First 함수를 사용하여 갤러리에 표시해 봅시다.

예) 갤러리의 Text 컨트롤
First(ThisItem.Orders).ID



예상대로 일별 및 사용자별로 정리할 수 있었습니다.

요약



데이터를 하나로 정리하고 싶은 경우는 GroupBy 함수를 이용합시다.
고유 데이터의 경우는 Distinct 함수에서도 대응 가능한 경우는 있습니다만, 이번과 같이 복수의 조건이 있는 경우는 향하지 않습니다.

좋은 웹페이지 즐겨찾기