Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Como modelador de dados, ao escrever uma expressão DAX que pode gerar um erro de tempo de avaliação, você pode considerar o uso de duas funções de DAX úteis.
- A função ISERROR, que usa uma única expressão e retorna TRUE se essa expressão resultar em erro.
- A função IFERROR, que usa duas expressões. Se a primeira expressão resultar em erro, o valor da segunda expressão será retornado. Na verdade, é uma implementação mais otimizada de aninhamento da função ISERROR dentro de uma função IF.
No entanto, embora essas funções possam ser úteis e possam contribuir para escrever expressões fáceis de entender, elas também podem prejudicar significativamente o desempenho dos cálculos. Isso pode acontecer porque essas funções aumentam o número de verificações do mecanismo de armazenamento necessárias.
A maioria dos erros de tempo de avaliação ocorre devido a valores BLANKs inesperados ou valores zero, ou devido à conversão de tipo de dados inválidos.
Recomendações
É melhor evitar o uso das funções ISERROR e IFERROR. Em vez disso, aplique estratégias defensivas ao desenvolver o modelo e escrever expressões. As estratégias podem incluir:
Garantir que os dados de qualidade sejam carregados no modelo: usar transformações do Power Query para remover ou substituir valores inválidos ou ausentes e definir tipos de dados corretos. Uma transformação do Power Query também pode ser usada para filtrar linhas quando ocorrem erros, como conversão de dados inválida.
A qualidade dos dados também pode ser controlada com a definição da propriedade Is Nullable da coluna do modelo como Off, o que fará a atualização dos dados falhar quando valores BLANKs forem encontrados. Se essa falha ocorrer, os dados carregados como resultado de uma atualização bem-sucedida permanecerão nas tabelas.
Usando a função IF: A expressão de teste lógico da função IF pode determinar se um resultado de erro ocorreria. Observe que, como as funções ISERROR e IFERROR, essa função pode resultar em verificações adicionais do mecanismo de armazenamento, mas provavelmente terá um desempenho melhor do que elas, pois nenhum erro precisa ser gerado.
Usando funções tolerantes a erros: Algumas funções DAX testarão e compensarão as condições de erro. Essas funções permitem que você insira um resultado alternativo que seria retornado no lugar. A função DIVIDE é um desses exemplos. Para obter orientações adicionais sobre essa função, leia o artigo DAX: função DIVIDE versus operador de divisão (/).
Exemplo
A expressão de medida a seguir testa se um erro seria gerado. Ele retorna BLANK nesta instância (que é o caso em que você não fornece a função IF com uma expressão value-if-false).
Profit Margin
= IF(ISERROR([Profit] / [Sales]))
Esta próxima versão da expressão de medida foi aprimorada usando a função IFERROR no lugar das funções IF e ISERROR.
Profit Margin
= IFERROR([Profit] / [Sales], BLANK())
No entanto, esta versão final da expressão de medida obtém o mesmo resultado, ainda mais eficiente e elegantemente.
Profit Margin
= DIVIDE([Profit], [Sales])
Conteúdo relacionado
- Roteiro de aprendizagem: Usar o DAX no Power BI Desktop
- Perguntas? Tente fazer uma pergunta na Comunidade do Power BI
- Sugestões? Contribua com ideias para melhorar o Power BI