Utilizar variáveis para melhorar o desempenho e a resolução de problemas

Concluído

Pode utilizar variáveis nas suas fórmulas DAX para escrever cálculos menos complexos e mais eficientes. As variáveis não são muito utilizadas pelos programadores que estão a começar a trabalhar no Power BI Desktop, mas são eficazes e deve utilizá-las por predefinição quando estiver a criar medidas.

Algumas expressões envolvem a utilização de muitas funções aninhadas e a reutilização da lógica de expressões. Estas expressões demoram mais tempo a ser processadas e são difíceis de ler, pelo que é mais difícil resolver problemas relacionados com as mesmas. Se utilizar variáveis, pode poupar tempo no processamento de consultas. Esta alteração é um passo na direção certa para otimizar o desempenho de um modelo semântico.

A utilização de variáveis no seu modelo semântico fornece as seguintes vantagens:

  • Melhoria do desempenho – as variáveis podem tornar as medidas mais eficientes porque o Power BI deixa de ter de avaliar a mesma expressão múltiplas vezes. Pode obter os mesmos resultados numa consulta em cerca de metade do tempo do processamento original.

  • Melhoria da legibilidade – as variáveis têm nomes curtos e autodescritivos e são utilizadas em vez de uma expressão ambígua e com várias palavras. Talvez considere ser mais fácil ler e compreender as fórmulas quando são utilizadas variáveis.

  • Depuração simplificada – pode utilizar variáveis para depurar uma fórmula e testar expressões, o que pode ser útil durante a resolução de problemas.

  • Complexidade reduzida – as variáveis não exigem a utilização das funções EARLIER ou EARLIEST do DAX, que são difíceis de compreender. Estas funções eram necessárias antes da introdução de variáveis e foram escritas em expressões complexas que introduziram novos contextos de filtro. Agora que pode utilizar variáveis em vez dessas funções, pode escrever menos fórmulas complexas.

Utilizar variáveis para melhorar o desempenho

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

A segunda linha da tabela mostra a definição de medida melhorada. Esta definição utiliza a palavra-chave VAR para introduzir uma variável denominada SalesPriorYear e utiliza uma expressão para atribuir o resultado do "mesmo período do ano passado" a essa nova variável. Em seguida, utiliza 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 precisa do Power BI para avaliar a mesma expressão duas vezes. A segunda definição é mais eficiente porque, devido à variável, o Power BI só precisa de avaliar a expressão PARALLELPERIOD uma vez.

Se o seu modelo semântico tiver várias consultas com múltiplas medidas, a utilização de variáveis poderá reduzir o tempo de processamento geral da consulta para metade e melhorar o desempenho geral do modelo semântico. Além disso, esta solução é simples. Considere o que pode poupar conforme as fórmulas se tornam mais complicadas, como quando lidar com percentagens e cálculos de totais.

Utilizar variáveis para melhorar a legibilidade

Além de uma melhoria no desempenho, poderá reparar em como a utilização de variáveis torna o código mais simples de se ler.

Ao utilizar variáveis, a melhor prática é utilizar nomenclatura descritiva para as variáveis. No exemplo anterior, a variável é denominada SalesPriorYear, o que indica claramente que variável está a ser calculada. Considere como seria se estivesse a utilizar uma variável denominada X, temp ou variável1. O propósito da variável não seria claro.

Utilizar nomes claros, concisos e significativos ajudará a tornar mais fácil compreender o que está a ser calculado. Desta forma, será muito mais simples para outros programadores manterem o relatório no futuro.

Utilizar variáveis para resolver problemas em vários passos

Pode utilizar variáveis para ajudar a depurar uma fórmula e identificar qual é o problema. As variáveis ajudam a simplificar a tarefa de resolução de problemas do seu cálculo DAX ao avaliar cada variável separadamente e recuperá-la depois da expressão RETURN.

No seguinte exemplo, vai testar uma expressão atribuída a uma variável. Para depurar, reescreva temporariamente a expressão RETURN para escrever na variável. A definição de medida devolve apenas a variável SalesPriorYear , uma vez que é o que surge 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 expressão RETURN apresentará apenas o valor SalesPriorYear%. Esta técnica permite-lhe reverter a expressão após ter concluído a depuração. Também torna os cálculos mais simples de compreender graças à reduzida complexidade do código DAX.