Avisos de delegação, limites e funções não delegáveis

Concluído

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.

Captura de tela de função não delegável com linha azul e triângulo de aviso amarelo.

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.

    Captura de tela do indicador de Aviso do primeiro item que causou a delegação.

  • 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.

  1. No Maker portal, selecione Arquivo no canto superior esquerdo.

  2. No menu à esquerda, selecione Configurações.

  3. Em Configurações do aplicativo, selecione Configurações avançadas

  4. Defina o limite da linha de Dados para consultas não delegáveis como qualquer valor entre 1 e 2000.

  5. Após definir o limite, selecione a seta na parte superior esquerda para salvar sua alteração e retorne ao Maker portal.

Captura de tela das Configurações avançadas do Power Apps com limite de linha de dados definido.

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.