Utilização adequada das funções error
Como um modelador de dados, quando você escreve uma expressão DAX que pode gerar uma avaliaçãotimeerror, você pode considerar o uso de duas funções DAX úteis.
- A função ISERROR, que usa uma única expressão and retorna TRUEif essa expressão resulta em error.
- A função IFERROR, que aceita duas expressões. Se a expressão first resultar em error, o value para a expressão second será retornado. Na fact, há uma implementação mais otimizada do aninhamento da função ISERROR dentro de uma função IF.
No entanto, embora essas funções possam ser úteis and possam contribuir para escrever expressões fáceis de entender, elas também podem degradar 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 detime de avaliação são devidos a BLANKs inesperados or zero valuesor conversão inválida de tipo de dados.
Recomendações
É melhor evitar o uso das funções ISERRORandIFERROR. Em vez disso, aplique estratégias defensivas quando desenvolver o modelo and, incluindo a escrita de expressões. As estratégias podem incluir:
Garantir que os dados de qualidade sejam carregados no modelo: Use transformações do Power Query para remover orsubstitutevaluesausente or inválidos and para definir os tipos de dados corretos. Uma transformação Power Query também pode ser usada para filter linhas quando ocorrem erros, como conversão de dados inválida.
A qualidade dos dados também pode ser controlada definindo a coluna do modelo propriedade Is Nullable como Off, que falhará na atualização de dados caso BLANKs sejam encontrados. If 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 error ocorreria. Observe que, como as funções ISERRORandIFERROR, essa função pode resultar em verificações adicionais do mecanismo de armazenamento, mas provavelmente terá um desempenho melhor do que elas, pois nenhuma error precisa ser gerada.
Usando funções tolerantes ao error: Algumas funções DAX testarão and compensarão error condições. Essas funções permitem que você insira um resultado alternativo que seria retornado em vez disso. A função DIVIDE é um desses exemplos. Para obter orientações adicionais sobre esta função, leia o artigo
: função vs operador (/).
Exemplo
A expressão measure a seguir testa se uma error seria gerada. Ele retorna BLANK neste caso (que é o caso quando você not fornece a função IF com uma expressão value-if-false).
Profit Margin
= IF(ISERROR([Profit] / [Sales]))
Esta versão next da expressão measure foi melhorada usando a função IFERROR no lugar das funções IFandISERROR.
Profit Margin
= IFERROR([Profit] / [Sales], BLANK())
No entanto, esta versão final da expressão measure alcança o mesmo resultado, de forma mais eficiente e mais elegante and.
Profit Margin
= DIVIDE([Profit], [Sales])
Related conteúdo
- Aprendizagem path: usar no DAX BI Desktop Power
- Dúvidas? Tente perguntar à comunidade de BI Power
- Sugestões? Contribuir com ideias para melhorar Power BI