Power Apps di default limita gli item ritornati da una query fatta su un
data source a
500 items o righe.
Tramite una feature sperimentale raggiungibile dal menu
File / Impostazioni app / Funzionalità sperimentali è possibile aumentare questo limite fino a 2000:
limite delle query Per attivare il limite il flag va impostato su
Attiva.
Questo limite è stato introdotto per questioni di performance e perché non avrebbe senso scaricare sul client delle tabelle con centinaia di migliaia o milioni di elementi.
Rimane il problema di come leggere dei data sources che contengono
più di 2000, in quanto verrebbero ritornati solo i primi 2000.
In questo caso bisogna distinguere tra query
delegabili (delegable), che vengono
eseguite sulla sorgente dati e quelle non, dove vengono scaricati
tutti i dati sul client e
poi filtrati (quindi sottoposti al limite di 2000).
La prima cosa è verificare se il data source supporta le query delegabili, ad esempio il connettore per
SharePoint le supporta, idem quello per
SQL Server la lista completa si trova qui
Delegable data sources.
Il secondo passo è verificare se la query contiene solo istruzioni e operatori delegabili. Attenzione che le istruzioni e gli operatori supportati dipendono dal
data source, vedi
Delegable data sources.
Ad esempio il data source per
SharePoint supporta l'istruzione
Filter e
SortByColumns.
Questa è un esempio di query:
SortByColumns(
Filter(
MioDataSourceSP;
TextSearch1.Text in Title && AnnoRiferimento = DropdownAnno1.Selected.Anno
);
"Title";
If(SortDescending1; Descending; Ascending)
)
che però
non è delegabile in quanto usa l'operatore
in (TextSearch1.Text in Title) che non è supportato dal data source
SharePoint.
L'editor evidenzia questa situazione con una icona blu:
evidenza di una query non delegabile per rendere la query delegabile dovremmo cabiarla per usare l'operatore
StartsWith supportato dal data source:
SortByColumns(
Filter(
MioDataSourceSP;
StartsWith(Title; TextSearch1.Text) && AnnoRiferimento = DropdownAnno1.Selected.Anno
);
"Title";
If(SortDescending1; Descending; Ascending)
)
ovviamente non da gli stessi risultati della precedente a parità di input... ma è un ragionevole compromesso che permette di superare il limite di 2000.