Tratamento de erros
Semelhante a como o Excel e a linguagem DAX têm uma função IFERROR
, o Power Query tem sua própria sintaxe para testar e capturar erros.
Conforme mencionado no artigo sobre como lidar com erros no Power Query, erros podem aparecer na etapa ou no nível da célula. Este artigo se concentrará em como você pode capturar e gerenciar erros com base em sua própria lógica específica.
Observação
Para demonstrar esse conceito, este artigo usará uma Pasta de Trabalho do Excel como sua fonte de dados. Os conceitos mostrados aqui se aplicam a todos os valores no Power Query e não apenas aos provenientes de uma pasta de trabalho do Excel.
A fonte de dados de exemplo para essa demonstração é uma Pasta de Trabalho do Excel com a tabela a seguir.
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 você importa essa tabela para o editor de Power Query, a imagem a seguir mostra como ela ficará.
Observe como os erros da pasta de trabalho do Excel são mostrados com o valor [Error]
em cada uma das células.
Neste artigo, você aprenderá a substituir um erro por outro valor. Além disso, você também aprenderá a capturar um erro e usá-lo para sua própria lógica específica.
Nesse caso, a meta é criar uma nova coluna Taxa Final que usará os valores da coluna Taxa Padrão. Se houver erros, ele usará o valor da coluna Taxa Especial correspondente.
Fornecer um valor alternativo ao localizar erros
Nesse caso, a meta é criar uma nova coluna Taxa Final na fonte de exemplo que usará os valores da coluna Taxa Padrão. Se houver erros, 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, insira a fórmula try [Standard Rate] otherwise [Special Rate]
. Nomeie esta nova coluna como Taxa Final.
A fórmula acima tentará avaliar a coluna Taxa Padrão e gerará seu valor se nenhum erro for encontrado. Se forem encontrados erros na coluna Taxa Padrão, a saída será o valor definido após a instrução otherwise
, que nesse caso é a coluna Taxa Especial.
Depois de adicionar os tipos de dados corretos a todas as colunas na tabela, a imagem a seguir mostra a aparência da tabela final.
Observação
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 com uma função que não requer parâmetros.
A palavra-chave catch
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 erro #REF!
.
Observação
A única finalidade de excluir o erro #REF!
é para fins de demonstração. Com os conceitos mostrados neste artigo, você pode direcionar todos os campos de sua escolha do registro de erro.
Ao selecionar qualquer um dos espaços em branco ao lado do valor do erro, você obtém o painel de detalhes na parte inferior da tela. O painel de detalhes contém o motivo DataFormat.Error
do erro e a mensagem Invalid cell value '#REF!'
de erro:
Você só pode selecionar uma célula por vez, portanto, só é possível ver efetivamente os componentes de erro de um valor de erro por vez. É aqui que você criará uma nova coluna personalizada e usará a expressão try
.
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, insira a fórmula try [Standard Rate]
. Nomeie esta nova coluna Todos os Erros.
A expressão try
converte valores e erros em um valor de registro que indica se a expressão try
tratou um erro ou não, bem como o valor apropriado do registro do erro.
Você pode expandir essa 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.
Esta operação exporá 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 nenhum erro, essa coluna exibirá o valor da coluna Taxa Padrão. Para valores com erros, esse campo não estará disponível e, durante a operação de expansão, essa coluna terá
null
valores. - All Errors.Error — se o valor da coluna Taxa Padrão não tiver nenhum erro, essa coluna exibirá o valor da coluna Taxa Padrão. Para valores sem erros, esse campo não estará disponível e, durante a operação de expansão, essa coluna terá
null
valores.
Para uma investigação mais aprofundada, 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 fazer a operação de expansão, o campo All Errors.Error.Message exibe a mensagem de erro específica que informa exatamente qual é o erro do Excel que cada célula tem. A mensagem de erro é derivada do campo Mensagem de Erro do registro de erro.
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 igual
null
, a saída será o valor da coluna Taxa Padrão . - Além disso, se o valor na coluna Todos Errors.Errors.Message não for igual a
Invalid cell value '#REF!'.
, a saída será o valor da coluna Taxa especial. - Caso contrário, será nulo.
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.
Usar try
e catch
com lógica personalizada
Como alternativa, você também pode criar uma nova coluna personalizada usando as palavras-chave try
e catch
.
try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null
Mais recursos
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de