I have a list of less than 4000 items on SharePoint Online.
I need to show today's items so I use IsToday function: Filter('Visit Records',IsToday(ServiceDate))
It does not shows anything and says "Delegation warning"
So I tried using LastN and also FirstN but the output is limited to a short priod of time: SortByColumns(LastN('Visit Records',10000),"ServiceDate",Descending)
And I have tried complete syntax, but it returned an empty gallery: Filter(LastN('Visit Records',10000),IsToday('Visit Date'))
Also increasing the row limit to maximum which is 2000 and no success.
Please let me know if there's any solution.
Solved! Go to Solution.
If you can avoid the local collections...you are much better off. There are some issues with keeping things "connected" properly that you will need to provide formulas to do throughout your App.
So, the reality is (as discussed in other posts about delegation), you really want your datasource to give you the results you need. This is not possible with SharePoint for many reasons. In fact, it's not possible with SQL either, but in SQL you can create views and functions that will assist with it...in SharePoint, you cannot. BUT, you can take steps in "preparing" your SharePoint list for PowerApps so that you can take advantage of those things which CAN be delegted. For date, this is quite simpe to do.
You might take a look at this recent post in which this exact subject was discussed.
Unfortunately, SharePoint is limited in terms of executing delegated queries against date/datetime fields.
With SharePoint, the equals operator is delegable. Therefore, one workaround you can try is to store todays date in a variable, say in the OnStart property of your app.
You can then try the following formula in the Items property of your Gallery to see if that resolves the problem.
Filter('Visit Records', ServiceDate = TodaysDate)
@timl I'm not sure that the equality operator is delegable for a DateTime column. Can you verify that? I've noticed it does not produce a delegation warning on the Formula, but I don't know off hand if it actually delegates.
The Connector Reference for SharePoint says "No can do"...but I am curious if there is a discrepancy.
I usually just use : Filter(DataSource, DateField=Today())
Yes...it gives the Delegation warning but I have not found it to be a problem. I have some that Set the Variable...still does it.
If you do want to go the Set Variable option to make it work you have to format them both to match...
The only reason I ever use the Set option is if I have a date picker...but that is just my personal preferance.
You will still get the delegation warning and will pull the same data. I haven't found a way to do it that doesn't show a delegation warning and I also haven't found one that it actually mattered...it still pulls in my data just fine.
I have found that to have greater flexibility in my criteria against data in a sharepoint list I collect it into a local collection to start with then from their can apply the filters. I can see this would have some limitations as the data could quickly get out of sync but so far this has been working.