Hello
Please be so kind as to read my full post before responding.
Thank you for your consideration.
I am building a PowerApp for CDS/Dynamics using currently PowerApps 3.19075.21.
I am trying to find out the number of entries in a datasource, or in a "Relational Data field/table", but I don't know a robust way to retrieve this number of entries (i.e. guaranteed to give me the right result).
For example, given two entitities, "Auftrag (WA)" (Plural "Aufträge (WA)") and "Auftragsposition (WA)" (Plural "Auftragsposition (WA)"), with Auftragsposition containing a LookUp field to Auftrag, thus creating the relational data field/table 'Auftrag (WA)'.'Auftragsposition (WA)', I might want to know the number of Auftrag records or the number of Auftragsposition records associated with a given Auftrag record.
I.e. something like:
CountRows([@'Aufträge (WA)']) & " " & CountRows([@'Auftragsposition (WA)']) & " " & CountRows(Filter([@'Auftragsposition (WA)'], 'Auftrag (Suche)'.'Auftrag (WA)'=First([@'Aufträge (WA)']).'Auftrag (WA)')) & " " & CountRows(First([@'Aufträge (WA)']).'Auftragsposition (WA)')
This yields lots of delegation warnings
Thus, for large datasets, there is the potential of those formulas not working, see also
As far as I understand, using Collect first and using CountRows removes the delegation warning but won't solve my problem as Collect will also only be returning the first X entries.
https://powerusers.microsoft.com/t5/General-Discussion/ClearCollect-for-more-than-2000-records/m-p/1...
I understand that I can use a (scheduled) rollup field if I don't care that those numbers will only be available after scheduled rollup times.
However, I require a robust way to retrieve those numbers, say, in Button.OnSelect.
Thank you,
Sa.
Hi @SaWu
within PowerApps this is not possible with all the delegation issues
And even with delegation, PowerApps loads data in batches
your best bet would be to trigger a Flow which would perform all those calculations and then return the result (but this would be a long way to achieve it)
Regards,
Reza Dorrani
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly
Hi @SaWu ,
Firstly, it's not supported to avoid delegation by some special ways.
Delagation is PowerApps iteself's limit.
Secondly, if your record number is less than 2000, then just change this limit to 2000, you do not need to worry about the effect of delegation.
Delegation is for large record that is larger than 2000, which may lead to wrong result.
Thirdly, if your data source's record is lager than 2000, you could only use delegable functions to avoid the effect of delegation.
Here's a doc about delegable functions of CDS for your reference, please modify your formula:
https://docs.microsoft.com/en-us/connectors/commondataservice/
If you can not modify your formula by only using delegable functions, I suggest you use Flow instead of PowerApps.
You can retreive the total amount of records by using the following odata query within a cloud flow:
https://ENVIRONMENTNAME.crmXYZ.dynamics.com/api/data/v9.1/RetrieveTotalRecordCount(EntityNames=['YOU...
This work fine for large lists too (> 5000 record).
@Anonymous Is this possible to use on Table Views? And what would the query look like?
User | Count |
---|---|
256 | |
106 | |
87 | |
51 | |
43 |