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 pelos desenvolvedores que estão começando no Power BI Desktop, mas são eficazes e você deve usá-las por padrão ao criar medidas.

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 para ler e, portanto, para solucionar problemas. Se você usar variáveis, 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 no seu modelo semântico fornece as seguintes vantagens:

  • Desempenho aprimorado – as variáveis podem tornar as medidas mais eficientes, pois eliminam a necessidade de o Power BI avaliar 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 com muitas palavras. Talvez você ache mais fácil 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 DAX EARLIER ou EARLIEST, que são difíceis de entender. Essas funções eram necessárias antes da introdução 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 escrever menos fórmulas complexas.

Usar variáveis para aprimorar o desempenho

Para ilustrar como você pode 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 do 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 do "mesmo período do ano passado" a essa nova variável. Em seguida, ela usa a variável duas vezes na expressã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 na tabela, a fórmula é ineficiente porque exige que o Power BI avalie a mesma expressão duas vezes. A segunda definição é mais eficiente porque, devido à variável, o Power BI só precisa avaliar a expressã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 total de processamento da consulta pela metade e aprimorar 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á lidando com percentuais e calculando os totais.

Usar variáveis para aprimorar a legibilidade

Além de aprimorar o desempenho, você pode observar que o uso de variáveis facilita a leitura do código.

Ao usar variáveis, é uma melhor prática usar nomes descritivos para elas. No exemplo anterior, a variável se chama SalesPriorYear, que indica claramente o que ela está calculando. Considere o resultado de usar uma variável chamada X, temp ou variable1; a finalidade dela não seria clara.

Usar nomes claros, concisos e significativos ajuda a facilitar a compreensão do que você está tentando calcular, além de simplificar para outros desenvolvedores manterem o relatório no futuro.

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

Você pode usar variáveis para ajudar a depurar uma fórmula e identificar qual é o problema. As variáveis ajudam a simplificar a tarefa de solucionar problemas com o cálculo de DAX, avaliando cada variável separadamente e chamando-a novamente após a expressão RETURN.

No exemplo a seguir, você testa uma expressão atribuída a uma variável. Para depurar, você reescreve temporariamente a expressão RETURN para gerar a variável. A definição de medida retorna apenas a variável SalesPriorYear porque isso é o que vem após a expressão RETURN.

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

A expressão RETURN exibirá somente o valor 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.