Avisos de delegação, limites e funções não delegáveis
O Power Apps usa indicadores visuais para ajudar você, o criador do app, a entender quando a delegação está ocorrendo. O maker portal também tem uma configuração que você pode ajustar para aumentar a quantidade de dados retornados quando a delegação não é possível.
Avisos de delegação
Sempre que você usa uma função não delegável, o Power Apps a sublinha com uma linha azul e exibe um triângulo de aviso amarelo, conforme mostrado abaixo.
Isso retorna uma indicação visual nítida de que a delegação não está ocorrendo, o que significa que talvez você não veja todos os seus dados. É importante entender algumas coisas sobre esse indicador visual.
O Power Apps mostrará esse aviso, seja qual for o tamanho da fonte de dados. Mesmo que a fonte de dados tenha apenas alguns itens e a delegação não esteja tecnicamente causando problemas, o aviso ainda será mostrado. Lembre-se de que os primeiros 500 itens são retornados por padrão e processados localmente. O aviso é exibido sempre que sua fórmula não é delegada.
O indicador de aviso processa somente a primeira coisa que causa a delegação. Na captura de tela acima, observe que apenas o campo sublinhado "FirstName" está em azul. Isso ocorre porque ele foi o primeiro item que causou a delegação. "LastName" também causaria a delegação neste cenário. Isso pode gerar confusão porque as pessoas tentam solucionar qual é a diferença entre FirstName e LastName, em vez do problema real, que é a função Search. Se isso acontecer com você, reorganize a fórmula. Esse procedimento faz uma validação, e o campo que for o primeiro mostrará o problema.
Esse indicador visual só aparece quando você está no maker portal, desenvolvendo o aplicativo. Quando um usuário está executando o aplicativo, ele não recebe nenhuma notificação de que a delegação não está ocorrendo e que ele pode estar vendo apenas resultados parciais. Tenha isso em mente ao projetar seu aplicativo e crie-o adequadamente.
Alterar o número de registros retornados quando a delegação não está disponível
Por qualquer motivo, se uma fórmula não puder ser delegada para a fonte de dados, o Power Apps recuperará os primeiros 500 registros dessa fonte de dados e processará a fórmula localmente. O Power Apps permite ajustar esse limite entre 1 e 2000. Você pode ajustar esse limite nas Configurações avançadas.
No Maker portal, selecione Arquivo no canto superior esquerdo.
No menu à esquerda, selecione Configurações.
Em Configurações do aplicativo, selecione Configurações avançadas
Defina o limite da linha de Dados para consultas não delegáveis como qualquer valor entre 1 e 2000.
Após definir o limite, selecione a seta na parte superior esquerda para salvar sua alteração e retorne ao Maker portal.
Há dois motivos principais para ajustar esse limite.
Para aumentar o limite se você trabalha com dados em que 500 registros não são suficientes, mas menos de 2000 são. Por exemplo, se você tiver uma lista de clientes e souber que nunca terá mais de 1000 clientes, poderá projetar seu aplicativo para ignorar a delegação e sempre retornar todos os 1000 registros.
Para diminuir o limite para 1 ou 10 para ajudar nos testes. Se você encontrar cenários em que não tem certeza se uma função não delegável está causando problemas no seu aplicativo, poderá diminuir o limite e depois testar. Se você definir o limite como 1 e sua galeria só apresentar um registro, você saberá que tinha uma função não delegável. Essa configuração acelera o processo de solução de problemas.
Funções não delegáveis
Na unidade anterior, você aprendeu sobre as funções que são delegáveis e como elas se relacionam às diversas fontes de dados. Estas outras funções, não abordadas nessa unidade, não são delegáveis. Veja abaixo funções importantes que não permitem delegação.
First, FirstN, Last, LastN
Choices
Concat
Collect, ClearCollect (nenhuma dessas funções retorna um aviso de delegação, mas elas não são delegáveis)
CountIf, RemoveIf, UpdateIf
GroupBy, Ungroup
Todas essas funções não são delegáveis. Portanto, ao adicioná-las a uma fórmula, você pode converter uma função delegável em não delegável, conforme mostrado no exemplo anterior.
Funções delegáveis parcialmente aceitas
As funções de modelagem de tabela abaixo são consideradas parcialmente delegáveis. Isso significa que as fórmulas em seus argumentos podem ser delegadas. No entanto, a saída dessas funções está sujeita ao limite de registros de não delegação.
AddColumns
DropColumns
ShowColumns
RenameColumns
Um padrão comum é usar AddColumns e LookUp para mesclar informações de uma tabela em outra, normalmente chamado de junção na linguagem de bancos de dados. Por exemplo:
AddColumns( Products, "Supplier Name", LookUp( Suppliers,
Suppliers.ID = Product.SupplierID ).Name )
Embora Produtos e Fornecedores sejam fontes de dados potencialmente delegáveis e a função LookUp se enquadre na categoria delegável, a função AddColumns tem capacidade de delegação parcial. Portanto, o resultado de toda a fórmula permanece restrito ao segmento inicial da fonte de dados Produtos.
Embora a função LookUp e sua fonte de dados associada permitam a delegação, facilitando a descoberta de fornecedores em um vasto conjunto de dados, há uma ressalva. LookUp necessita de consultas separadas à fonte de dados para cada um dos registros iniciais em Produtos, resultando em maior atividade de rede. No entanto, se o conjunto de dados de Fornecedores é relativamente pequeno e permanece estável, uma abordagem alternativa envolve armazenar em cache a fonte de dados no aplicativo. Empregar uma chamada Collect durante a inicialização do aplicativo (usando OnVisible na tela de abertura) permite operações LookUp subsequentes diretamente na fonte de dados em cache, mitigando a vibração da rede.