Avvisi di delega, limiti e funzioni non delegabili

Completato

Power Apps usa oggetti visivi per aiutare i creatori di app a comprendere quando è in atto la delega. Maker Portal include inoltre un'impostazione che è possibile modificare per aumentare la quantità di dati restituiti quando la delega non è possibile.

Avvisi di delega

Ogni volta che si usa una funzione non delegabile, Power Apps la sottolinea con una riga ondulata e visualizza un triangolo di avviso giallo, come illustrato di seguito.

Screenshot della funzione non delegabile con una riga blu e un triangolo di avviso giallo.

Si tratta di un indicatore visivo che segnala chiaramente che la delega non è in esecuzione e che, pertanto, potrebbero non essere visualizzati tutti i dati. È importante comprendere alcuni aspetti di questo indicatore visivo.

  • Power Apps mostra questo avviso indipendentemente dalle dimensioni dell'origine dati. Anche se l'origine dati include solo alcuni elementi e la delega non causa tecnicamente un problema, l'avviso viene comunque visualizzato. Tenere presente che per impostazione predefinita vengono restituiti i primi 500 elementi e che vengono elaborati in locale. L'avviso compare ogni volta che la formula non è stata delegata.

  • L'indicatore di avviso elabora soltanto il primo elemento che causa il problema di delega. Nello screenshot precedente, si può notare come "FirstName" sia l'unico campo con una sottolineatura ondulata. Questo perché si tratta del primo elemento che ha causato la delega. Anche "LastName" attiva la delega in questo scenario, ma non è sottolineato. Ciò può generare confusione perché gli utenti tentano di capire quale sia la differenza tra FirstName e LastName anziché risolvere il problema reale, rappresentato dalla funzione Cerca. In scenari di questo tipo, modificare la formula per verificare che il primo campo, qualunque esso sia, mostri il problema.

    Screenshot dell'indicatore di avviso per il primo elemento che ha causato la delega.

  • Questo indicatore visivo è presente solo quando ci si trova nel Maker Portal per compilare l'app. Quando un utente esegue l'app, non riceve alcuna notifica relativa alla mancata esecuzione della delega e alla possibilità che vengano visualizzati solo risultati parziali. Tenere presente questo aspetto quando si progetta l'app ed eseguirne la compilazione di conseguenza.

Modifica del numero di record restituiti quando la delega non è disponibile

Quando una formula non può essere delegata all'origine dati, per qualsiasi motivo, per impostazione predefinita Power Apps recupera i primi 500 record da tale origine dati ed elabora la formula in locale. La correzione di questo limite da 1 a 2.000 è supportata in Power Apps e può essere eseguita in Impostazioni avanzate.

  1. In Maker Portal selezionare Impostazioni nel menu nella parte superiore dello schermo. Se l'opzione Impostazioni non è visibile, fare clic sull'icona con i tre puntini di sospensione.

  2. In Impostazioni app, mantenere selezionata la scheda Generale e scorrere verso il basso fino a Limite per la riga di dati.

  3. Impostare il limite per le righe di dati per le query non delegabili su un valore qualsiasi compreso tra 1 e 2.000.

  4. Dopo avere impostato il limite, selezionare l'icona chiudi in basso a destra per salvare la modifica apportata e tornare a Maker Portal.

Screenshot di Impostazioni avanzate in Impostazioni di Power Apps con il limite per le righe di dati impostato.

Esistono due motivi principali per cui modificare questo limite.

  • Aumentare il limite, qualora si usino dati per cui 500 record non sono sufficienti, mentre lo sono meno di 2.000 record. Se, ad esempio, si ha un elenco di clienti e si è certi che non si avranno mai più di 1.000 clienti, è possibile progettare l'app in modo da ignorare la delega e restituire sempre tutti i 1.000 record.

  • Ridurre il limite a 1 o 10 per semplificare la fase di test. In caso di scenari in cui non si è certi se una funzione non delegabile possa causare problemi con l'app, è possibile ridurre il limite e quindi procedere con il test. Se si imposta il limite su 1 e la raccolta presenta solo un record, si può essere certi di avere una funzione non delegabile. Questa impostazione permette di velocizzare il processo di risoluzione dei problemi.

Funzioni non delegabili

Nell'unità precedente sono state illustrate le funzioni delegabili e si è appreso come interagiscono con le varie origini dati. Le altre funzioni non trattate in tale unità non sono delegabili. Di seguito sono riportate le funzioni rilevanti che non supportano la delega.

  • First, FirstN, Last, LastN

  • Choices

  • Concat

  • Collect, ClearCollect (nessuna di queste funzioni restituisce un avviso di delega, ma non sono delegabili)

  • CountIf, RemoveIf, UpdateIf

  • GroupBy, Ungroup

Tutte queste funzioni non sono delegabili. Pertanto, aggiungendole a una formula, è possibile usare una funzione precedentemente delegabile e renderla non delegabile, come illustrato nell'esempio precedente.

Funzioni delegabili parzialmente supportate

Le funzioni di modifica della forma della tabella riportate di seguito sono parzialmente delegabili. Ciò significa che le formule nei relativi argomenti possono essere delegate. L'output di queste funzioni è comunque soggetto al limite di record di non delega.

  • AddColumns

  • DropColumns

  • ShowColumns

  • RenameColumns

Un modello comune consiste nell'usare AddColumns e LookUp per unire le informazioni di una tabella con quelle di un'altra, operazione comunemente nota come Join quando si parla di database. Ad esempio:

AddColumns( Products, "Supplier Name", LookUp( Suppliers, Suppliers.ID = Product.SupplierID ).Name )

Anche se Products e Suppliers possono essere origini dati potenzialmente delegabili e la funzione LookUp è delegabile, la funzione AddColumns possiede la delegabilità parziale. Il risultato dell'intera formula rimane quindi vincolato al segmento iniziale dell'origine dati Products.

Sebbene la funzione LookUp e l'origine dati associata consentano la delega, facilitando la scoperta dei Suppliers in un vasto set di dati, tale funzione viene fornita con un avvertimento. LookUp richiede query all'origine dati separate per ciascuno dei record iniziali in Products, con conseguente aumento dell'attività di rete. Tuttavia, se il set di dati Suppliers è relativamente piccolo e rimane stabile, un approccio alternativo prevede la memorizzazione nella cache dell'origine dati all'interno dell'app. L'utilizzo di una chiamata Collect durante l'inizializzazione dell'app (utilizzando OnVisible nella schermata di apertura) consente le successive operazioni di LookUp direttamente all'interno dell'origine dati memorizzata nella cache, mitigando così le vibrazioni della rete.