Usar variáveis para aprimorar o desempenho e solucionar problemas

Concluído

Você pode usar variáveis em suas fórmulas DAX para escrever cálculos menos complexos e mais eficientes. As variáveis são subutilizadas por desenvolvedores que são iniciantes no Power BI Desktop, porém, são eficazes e você deve usá-las sempre que possível.

Algumas expressões envolvem o uso de muitas funções aninhadas e a reutilização da lógica da expressão. Essas expressões levam mais tempo para serem processadas e são difíceis de ler e, portanto, para solucionar problemas. Usando variáveis, você poderá economizar tempo no processamento da consulta. Essa mudança é um passo na direção certa para otimizar o desempenho de um modelo semântico.

O uso de variáveis em seu modelo semântico fornece as seguintes vantagens:

  • Melhor desempenho: as variáveis podem tornar as medidas mais eficientes, pois com elas, não há necessidade de que o Power BI avalie a mesma expressão várias vezes. Você pode obter os mesmos resultados em uma consulta em cerca de metade do tempo de processamento original.
  • Legibilidade aprimorada: as variáveis, que têm nomes curtos e autodescritivos, são usadas no lugar de expressões ambíguas e compostas por várias palavras. Talvez seja mais ler e entender as fórmulas quando as variáveis são usadas.
  • Depuração simplificada: você pode usar variáveis para depurar uma fórmula e testar expressões, o que pode ser útil durante a solução de problemas.
  • Complexidade reduzida: as variáveis não exigem o uso das funções EARLIER ou EARLIEST, que são difíceis de entender. Essas funções eram necessárias antes do surgimento das variáveis e foram escritas em expressões complexas que introduziam novos contextos de filtro. Agora que você pode usar variáveis em vez dessas funções, é possível escreve fórmulas menos complexas.

Usar variáveis para aprimorar o desempenho

Para ilustrar como é possível usar uma variável para tornar uma medida mais eficiente, a tabela a seguir exibe uma definição de medida de duas maneiras diferentes. Observe que a fórmula repete a expressão que calcula "o mesmo período no ano passado", mas de duas maneiras diferentes: a primeira instância usa o método normal de cálculo DAX e a segunda usa variáveis no cálculo.

A segunda linha da tabela mostra a definição de medida aprimorada. Essa definição usa a palavra-chave VAR para introduzir uma variável chamada SalesPriorYear e usa uma expressão para atribuir o resultado "mesmo período do ano passado" a essa nova variável. Em seguida, ela usa a variável duas vezes na função DIVIDE.

Sem variável

Sales YoY Growth =
DIVIDE(
    ([Sales] - CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))),
    CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
)

Com variável

Sales YoY Growth =
VAR SalesPriorYear =
    CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
VAR SalesVariance =
    DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
RETURN
    SalesVariance

Na primeira definição de medida, a fórmula é ineficiente, pois exige que o Power BI avalie a mesma expressão duas vezes. A segunda definição é mais eficiente porque, graças à variável, o Power BI só precisa avaliar a função PARALLELPERIOD uma vez.

Se o seu modelo semântico tiver várias consultas com várias medidas, o uso de variáveis poderá reduzir o tempo geral de processamento de consultas pela metade e melhorar o desempenho geral do modelo semântico. Além disso, essa solução é simples: imagine a economia conforme as fórmulas ficam mais complicadas, por exemplo, quando você está trabalhando com percentuais e calculando os totais.

Usar variáveis para aprimorar a legibilidade

Além do desempenho aprimorado, você pode notar como o uso de variáveis torna mais fácil a leitura do seu código.

Ao usar variáveis, é uma prática recomendada usar nomes descritivos para elas. No exemplo anterior, a variável é denominada SalesPriorYear, o que indica claramente o que a variável está calculando. Considere o resultado de usar uma variável que foi denominada X, temp ou variable1, o objetivo da variável não ficaria claro.

Usar nomes claros, concisos e significativos facilita o entendimento e a documentação do que você está calculando, além de simplificar a manutenção por outros desenvolvedores no futuro.

Usar variáveis para solucionar problemas com várias etapas

Você pode usar variáveis para ajudar na depuração de uma fórmula e na identificação do problema. As variáveis ajudam a simplificar a tarefa de solução de problemas do cálculo DAX avaliando cada variável separadamente e chamando-as na cláusula RETURN.

No exemplo a seguir, você testa uma expressão atribuída a uma variável. Para depurar, reescreva temporariamente a cláusula RETURN para retornar a variável. A definição de medida retorna apenas a variável SalesPriorYear porque é isso que vem depois da expressão RETURN.

Sales YoY Growth % =
VAR SalesPriorYear =  CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
VAR SalesPriorYear% = DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)  
RETURN SalesPriorYear%

A cláusula RETURN retorna apenas a variável SalesPriorYear%. Essa técnica permite reverter a expressão após a conclusão da depuração. Ela também simplifica a compreensão dos cálculos devido à redução na complexidade do código DAX.