O POWER BI É PARA VOCÊ
Ter visão 360º de sua empresa já é possível com
o Microsoft Power BI.
Para um modelador de dados, escrever e depurar alguns cálculos DAX pode ser desafiador. É comum que requisitos de cálculos complexos envolvam escrever expressões compostas ou complexas. Expressões compostas podem envolver o uso de muitas funções aninhadas e, possivelmente, a reutilização da lógica de expressão.
Usar variáveis em suas fórmulas DAX ajuda você a escrever cálculos complexos e eficientes. As variáveis podem:
Neste artigo, demonstraremos os três primeiros benefícios usando uma medida de exemplo para o crescimento de vendas ano a ano (YoY). (A fórmula para o crescimento de vendas YoY é: vendas no período _menos vendas no mesmo período do ano anterior, dividido por vendas para o mesmo período do ano anterior.)
Vamos começar com a definição da medida a seguir.
DAX
Sales YoY Growth % =
DIVIDE(
([Sales] - CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))),
CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
)
A medida produz o resultado correto, mas agora vamos ver como ela pode ser melhorada.
Melhorar o desempenho
Observe que a fórmula repete a expressão que calcula "o mesmo período no ano anterior". Essa fórmula não é eficiente, pois exige que o Power BI avalie a mesma expressão duas vezes. A definição da medida pode se tornar mais eficiente usando uma variável.
A definição de medida a seguir representa uma melhoria. Ela usa uma expressão para atribuir o resultado do "mesmo período do ano anterior" a uma variável chamada SalesPriorYear. Em seguida, a variável é usada duas vezes na expressão RETURN.
DAX
Sales YoY Growth % =
VAR SalesPriorYear =
CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
RETURN
DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
A medida continua produzindo o resultado correto e faz isso em cerca de metade do tempo de consulta.
Melhorar a legibilidade
Na definição de medida anterior, observe como a escolha do nome da variável torna a expressão RETURN mais simples de entender. A expressão é curta e autodescritiva.
Simplificar a depuração
As variáveis também podem ajudar a depurar uma fórmula. Para testar uma expressão atribuída a uma variável, você reescreve temporariamente a expressão RETURN para gerar a variável.
A definição de medida a seguir retorna apenas a variável SalesPriorYear. Observe como ele comenta a expressão RETURN pretendida. Essa técnica permite que você a reverta facilmente quando a depuração for concluída.
DAX
Sales YoY Growth % =
VAR SalesPriorYear =
CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
RETURN
--DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
SalesPriorYear
Reduzir a complexidade
Em versões anteriores do DAX, ainda não havia suporte para variáveis. Expressões complexas que introduziam novos contextos de filtro precisavam usar as funções DAX EARLIER ou EARLIEST para referenciar contextos de filtro externos. Os modeladores de dados consideravam essas funções difíceis de entender e usar.
As variáveis sempre são avaliadas fora dos filtros que sua expressão RETURN aplica. Por esse motivo, quando você usa uma variável em um contexto de filtro modificado, ela chega ao mesmo resultado que a função EARLIEST. Portanto, o uso das funções EARLIER ou EARLIEST pode ser evitado. Isso significa que agora você pode escrever fórmulas que são menos complexas e mais fáceis de entender.
Considere a seguinte definição de coluna calculada adicionada à tabela Subcategoria. Ela avalia uma classificação para cada subcategoria de produto com base nos valores da coluna Vendas da subcategoria.
DAX
Subcategory Sales Rank =
COUNTROWS(
FILTER(
Subcategory,
EARLIER(Subcategory[Subcategory Sales]) < Subcategory[Subcategory Sales]
)
) + 1
A função EARLIER é usada para fazer referência ao valor da coluna Vendas da subcategoriano contexto da linha atual.
A definição da coluna calculada pode ser aprimorada usando uma variável em vez da função EARLIER. A variável CurrentSubcategorySales armazena o valor da coluna Vendas da subcategoriano contexto da linha atual e a expressão RETURN a usa em um contexto de filtro modificado.
DAX
Subcategory Sales Rank =
VAR CurrentSubcategorySales = Subcategory[Subcategory Sales]
RETURN
COUNTROWS(
FILTER(
Subcategory,
CurrentSubcategorySales < Subcategory[Subcategory Sales]
)
) + 1
Se você tiver Microsoft 365 Apps para Grandes Empresas (dispositivo) ou Microsoft 365 Apps for Education (dispositivo), poderá atribuir licenças ...
Confira todo o nosso conteúdo para pequenas empresas em Ajuda para pequenas empresas & aprendizado.
Confira a ajuda para pequenas ...
A Microsoft lançou as seguintes atualizações de segurança e não segurança para o Office em dezembro de 2023. Essas atualizações ...