Evite converter BLANKs em values
Como um modelador de dados, ao escrever measure expressões, você pode se deparar com casos em que um value significativo não pode ser retornado. Nesses casos, você pode ficar tentado a devolver um value—como zero—em vez disso. Sugere-se que você determine cuidadosamente se esse design é eficiente and prático.
Considere a seguinte definição de measure que converte explicitamente BLANK resultados para zero.
Sales (No Blank) =
IF(
ISBLANK([Sales]),
0,
[Sales]
)
Considere outra definição measure que também converta os valores BLANK para zero.
Profit Margin =
DIVIDE([Profit], [Sales], 0)
A função DIVIDE divide o Lucro measure pelas Vendas measure. Se o resultado for zero orBLANK, o terceiro argumento—que é opcional, o resultado alternativo—será retornado. Neste exemplo, como zero é passado como resultado alternativo, é garantido que o measure sempre retornará um value.
Esses designs de measure são ineficientes and levam a designs de relatórios ruins.
Quando eles são adicionados a um relatório visual, Power BI tenta recuperar agrupamentos de all dentro do contexto filter. A avaliação and da recuperação de grandes resultados de consultas geralmente leva a uma renderização lenta do relatório. Cada exemplo measure efetivamente transforma um cálculo esparso em um cálculo denso, forçando Power BI a usar mais memória do que o necessário.
Além disso, muitos agrupamentos geralmente sobrecarregam os usuários do relatório.
Vamos ver o que acontece quando a Margem de Lucro measure é adicionada a um visual de tabela, agrupando por cliente.
O visual da tabela exibe um número esmagador de linhas. (Há em fact 18.484 clientes no modelo, and então a tabela tenta exibir all deles.) Observe que os clientes em vista não alcançaram nenhuma venda. No entanto, como a Margem de Lucro measure sempre retorna um value, eles são exibidos.
Observação
Quando há muitos pontos de dados para exibir num visual, Power BI pode usar estratégias de redução de dados para remover orsummarize resultados de consulta grandes. Para obter mais informações, consulte Limites de pontos de dados, and estratégias por tipo de visualização.
Vamos ver o que acontece quando a definição de Margem de Lucro measure é melhorada. Ele now retorna um value somente quando o de vendasmeasure não for BLANK (or zero).
Profit Margin =
DIVIDE([Profit], [Sales])
A visualização da tabela now exibe apenas os clientes que fizeram vendas no contexto atual de filter. O measure aprimorado resultará numa experiência prática mais eficiente and para os usuários do relatório.
Dica
Quando necessário, pode-se configurar uma visualização para exibir agrupamentos all (que retornam valuesorBLANK) no contexto filter ao ativar a opção Mostrar itens sem dados.
Recomendação
Recomenda-se que as suas medidas retornem BLANK quando um value significativo não puder ser retornado.
Essa abordagem de design é eficiente, permitindo que Power BI renderize relatórios mais rapidamente. Além disso, retornar BLANK é melhor porque os elementos visuais do relatório — por padrão — eliminam os agrupamentos quando os resumos são BLANK.
Related conteúdo
- Aprendizagem path: Usar DAX no Power BI Desktop
- Dúvidas? Tente perguntar à comunidade de BI Power
- Sugestões? Contribuir com ideias para melhorar Power BI