For someone who might look for a solution, I ended up using several collections. and filtering them and end up having the result I wanted in a final collection:
Clear(obj);
ForAll('TimeSheet App_TimeEntries',
//Collect(ColHours, ShowColumns('TimeSheet App_TimeEntries',"Sun","Mon","Tues","Weds","Thurs","Fri","Sat")));
Collect(obj, {Id:1, Value:Sun ,sid:ID}, {Id:2, Value:Mon,sid:ID}, {Id:3, Value:Tues,sid:ID}, {Id:4, Value:Weds,sid:ID}, {Id:5, Value:Thurs,sid:ID}, {Id:6, Value:Fri,sid:ID}, {Id:7, Value:Sat,sid:ID}));
Clear(Coltimeex);
ForAll('TimeSheet App_TimeEntries',
Collect(Coltimeex,{
Date: ForAll(Sequence(7),Text( DateAdd('Week Start',Value,TimeUnit.Days),DateTimeFormat.ShortDate) ),
Day:ForAll(Sequence(7),Text(DateAdd('Week Start',Value,TimeUnit.Days),"dddd")),
sid:ForAll(Sequence(7),ID)
}));
ClearCollect(COldate,DropColumns(RenameColumns(Ungroup(Coltimeex,"Date"),"Value","Date"),"Day"));
ClearCollect(COldays,DropColumns( RenameColumns( Ungroup(Coltimeex,"Day"),"Value","Day"),"Date"));
ClearCollect(ColUngroup,
ForAll(Sequence(CountRows(COldate)),
{
Date: Index(COldate,Value).Date,
Day:Index(COldays,Value).Day,
Hours:Index(obj,Value).Value,
Sid: Index(obj,Value).sid
}
)
);
Clear(ColExportData);
ForAll([1,2,3,4,5,6,7],
ForAll('TimeSheet App_TimeEntries',
Collect(ColExportData,
{Name: ThisRecord.Employee.DisplayName,
Role:ThisRecord.Role,
Department:ThisRecord.Employee.Department,
Location:Office365Users.UserProfile(ThisRecord.Employee.Email).Country,
Project:ThisRecord.BillTo.Value,
ApprovalStatus:ThisRecord.Status.Value,
ESid:ThisRecord.ID
}
)
));
ClearCollect(Colmerge, ColUngroup,ColExportData);
Clear(Colmerge);
ForAll(ColUngroup,
If(!IsBlank(LookUp(ColExportData,ESid=ColUngroup[@Sid])),
Collect(Colmerge,
{
Date:ColUngroup[@Date],
Day:ColUngroup[@Day],
Hours:ColUngroup[@Hours],
ApprovalStatus:LookUp(ColExportData,ESid=ColUngroup[@Sid]).ApprovalStatus,
Name:LookUp(ColExportData,ESid=ColUngroup[@Sid]).Name,
Role:LookUp(ColExportData,ESid=ColUngroup[@Sid]).Role,
Department:LookUp(ColExportData,ESid=ColUngroup[@Sid]).Department,
Location:LookUp(ColExportData,ESid=ColUngroup[@Sid]).Location,
Project:LookUp(ColExportData,ESid=ColUngroup[@Sid]).Project
}
)));
ClearCollect(ColFinal,
DropColumns(Colmerge,"Sid","ESid"));
In the end, I am sending the collection as a JSON file to a flow and creating a csv table and generating the download link to the app, shoutouts to @RezaDorrani for this fantastic video https://youtu.be/tQCBWMR7T64
