Partilhar via


Processamento de erros

À semelhança de como o Excel e a linguagem DAX têm uma IFERROR função, o Power Query tem a sua própria sintaxe para testar e detetar erros.

Conforme mencionado no artigo sobre como lidar com erros no Power Query, os erros podem aparecer no nível da etapa ou da célula. Este artigo se concentra em como você pode capturar e gerenciar erros com base em sua própria lógica específica.

Nota

Para demonstrar esse conceito, este artigo usa uma pasta de trabalho do Excel como sua fonte de dados. Os conceitos apresentados aqui aplicam-se a todos os valores no Power Query e não apenas aos provenientes de um Livro do Excel.

A fonte de dados de exemplo para esta demonstração é uma pasta de trabalho do Excel com a tabela a seguir.

Captura de tela de dados de exemplo de uma pasta de trabalho do Excel contendo três erros.

Esta tabela de uma pasta de trabalho do Excel tem erros do Excel, como #NULL!, #REF! e #DIV/0! na coluna Taxa padrão . Quando importa esta tabela para o editor do Power Query, a imagem seguinte mostra o seu aspeto.

Captura de ecrã da tabela de exemplo carregada no Power Query.

Observe como os erros da pasta de trabalho do Excel são mostrados com o [Error] valor em cada uma das células.

Neste artigo, você aprenderá a substituir um erro por outro valor. Além disso, você também aprende como capturar um erro e usá-lo para sua própria lógica específica.

Fornecer um valor alternativo ao localizar erros

Nesse caso, o objetivo é criar uma nova coluna Taxa Final na fonte de dados de exemplo que usa os valores da coluna Taxa Padrão . Se houver algum erro, ele usará o valor da coluna Taxa especial correspondente.

Para criar uma nova coluna personalizada, vá para o menu Adicionar coluna e selecione Coluna personalizada. Na janela Coluna personalizada, introduza a fórmula try [Standard Rate] otherwise [Special Rate]. Nomeie esta nova coluna como Tarifa Final.

Captura de ecrã com a caixa de diálogo Coluna Personalizada aberta e uma fórmula de tentativa de outra forma introduzida na coluna personalizada.

Esta fórmula tenta avaliar a coluna Taxa Padrão e emite o seu valor se não forem encontrados erros. Se forem encontrados erros na coluna Taxa Padrão , a saída é o valor definido após a otherwise instrução, que neste caso é a coluna Taxa Especial .

Depois de adicionar os tipos de dados corretos a todas as colunas da tabela, a imagem a seguir mostra a aparência da tabela final.

Captura de ecrã da tabela com os erros de taxa padrão substituídos pela taxa especial na coluna Taxa Final.

Nota

Como uma abordagem alternativa, você também pode inserir a fórmula try [Standard Rate] catch ()=> [Special Rate], que é equivalente à fórmula anterior, mas usando a palavra-chave catch com uma função que não requer parâmetros.

A catch palavra-chave foi introduzida no Power Query em maio de 2022.

Forneça sua própria lógica de erro condicional

Usando a mesma fonte de dados de exemplo da seção anterior, a nova meta é criar uma nova coluna para a Taxa Final. Se o valor da Taxa Padrão existir, esse valor será usado. Caso contrário, o valor da coluna Taxa Especial será usado, exceto para as linhas com qualquer #REF! erro.

Nota

O único objetivo de excluir o #REF! erro é para fins de demonstração. Com os conceitos apresentados neste artigo, você pode segmentar qualquer campo de sua escolha a partir do registro de erro.

Ao selecionar qualquer um dos espaços em branco ao lado do valor de erro, você obtém o painel de detalhes na parte inferior da tela. O painel de detalhes contém o motivo DataFormat.Errordo erro e a mensagem de erro: Invalid cell value '#REF!'

Captura de ecrã do erro selecionado, com uma mensagem de erro na parte inferior da caixa de diálogo.

Você só pode selecionar uma célula de cada vez, para que você possa efetivamente examinar apenas os componentes de erro de um valor de erro de cada vez. É neste ponto que você cria uma nova coluna personalizada e usa a try expressão.

Usar try com lógica personalizada

Para criar uma nova coluna personalizada, vá para o menu Adicionar coluna e selecione Coluna personalizada. Na janela Coluna personalizada, introduza a fórmula try [Standard Rate]. Nomeie esta nova coluna Todos os Erros.

Captura de ecrã com a caixa de diálogo Coluna Personalizada aberta e uma fórmula try introduzida na coluna personalizada.

A try expressão converte valores e erros em um valor de registro que indica se a try expressão manipulou um erro ou não, e o valor adequado ou o registro de erro.

Captura de ecrã da tabela com a coluna Todos os Erros adicionada e os erros apresentados como Registos.

Você pode expandir esta coluna recém-criada com valores de registro e examinar os campos disponíveis a serem expandidos selecionando o ícone ao lado do cabeçalho da coluna.

Captura de ecrã da coluna Todos os Erros com o ícone de expansão realçado e as caixas HasError, Value e Error selecionadas.

Esta operação expõe três novos campos:

  • All Errors.HasError—exibe se o valor da coluna Taxa Padrão teve um erro ou não.
  • All Errors.Value — se o valor da coluna Taxa Padrão não tiver erro, esta coluna exibirá o valor da coluna Taxa Padrão . Para valores com erros, este campo não está disponível e, durante a operação de expansão, esta coluna tem null valores.
  • All Errors.Error—se o valor da coluna Taxa Padrão tiver um erro, esta coluna exibirá o registro de erro para o valor da coluna Taxa Padrão . Para valores sem erros, este campo não está disponível e, durante a operação de expansão, esta coluna tem null valores.

Captura de tela da tabela com os novos campos em colunas, com um valor All.Errors.Error selecionado e mostrando as mensagens de erro abaixo da tabela.

Para investigação adicional, você pode expandir a coluna All Errors.Error para obter os três componentes do registro de erro:

  • Motivo do erro
  • Mensagem de Erro
  • Detalhe do erro

Depois de executar a operação de expansão, o campo All Errors.Error.Message exibe a mensagem de erro específica que informa exatamente qual erro do Excel cada célula tem. A mensagem de erro é derivada do campo Mensagem de erro do registro de erro.

Captura de tela com as mensagens de erro específicas exibidas.

Agora, com cada mensagem de erro em uma nova coluna, você pode criar uma nova coluna condicional com o nome Taxa final e as seguintes cláusulas:

  • Se o valor na coluna All Errors.Errors.Message for nulligual a , a saída será o valor da coluna Taxa Padrão .
  • Caso contrário, se o valor na coluna All Errors.Errors.Message não for igual Invalid cell value '#REF!'.a , a saída será o valor da coluna Special Rate .
  • Senão, nulo.

Captura de ecrã da caixa de diálogo Adicionar coluna condicional com todas as condições de erro definidas para a nova coluna.

Depois de manter apenas as colunas Conta, Taxa Padrão, Taxa Especial e Taxa Final e adicionar o tipo de dados correto para cada coluna, a imagem a seguir demonstra a aparência da tabela final.

Captura de tela da tabela final com as colunas restantes com os tipos de dados adequados.

Uso try e catch com lógica personalizada

Como alternativa, você também pode criar uma nova coluna personalizada usando as try palavras-chave e catch .

try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null

Caixa de diálogo de coluna personalizada com uma nova fórmula que mostra a abordagem de sintaxe try and catch.

Mais recursos