Partilhar via


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.

Captura de ecrã do Power B I Desktop mostrando uma tabela com visualização de dados com uma linha por cliente. As values de vendas são BLANKand e a Margem de Lucro values é de zero por cento.

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.

Captura de tela do Power BI Desktop mostrando a visualização de tabela de dados com conteúdo filtrado.

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.