Como facilitar cálculos de comparação?
Como sempre, a Microsoft disponibilizou vários novos recursos no Power BI. Veja alguns exemplos ligados à modelagem.
Agora você pode criar e editar medidas, colunas calculadas e tabelas calculadas.
Em janeiro, a Microsoft apresentou várias novas funções para DAX, destinadas a facilitar os cálculos de comparação no Power BI. As novas funções são as seguintes:
- INDEX – recupera um resultado usando posicionamento absoluto
- OFFSET – recupera um resultado usando posicionamento relativo
- WINDOW – recupera uma fatia de resultados usando posicionamento absoluto ou relativo
Essas funções também vêm com duas funções auxiliares chamadas ORDERBY e PARTITIONBY, as quais visam facilitar a realização de cálculos:
- Comparando valores versus uma linha de base ou encontrando outra entrada específica (usando INDEX)
- Comparando valores com um valor anterior (usando OFFSET)
- Adicionando um total corrente, média móvel ou cálculos similares que dependem da seleção de um intervalo de valores (usando WINDOW)
Se você estiver familiarizado com a linguagem SQL, poderá ver que essas funções são muito semelhantes às funções da janela SQL. As funções recentemente lançadas realizam um cálculo em um conjunto de linhas da tabela que estão de uma forma ou de outra relacionadas à linha atual. Essas funções são diferentes das funções da janela SQL, devido ao conceito de contexto de avaliação DAX, que determinará qual é a linha atual. Além disso, tais funções não retornam um valor, mas sim um conjunto de linhas que podem ser usadas junto com CALCULATE ou uma função de agregação como SUMX para calcular um valor.
Observe que esse grupo de funções não é enviado por push para a fonte de dados, mas sim executado no mecanismo DAX. Além disso, vimos um desempenho muito melhor usando essas funções em comparação com a expressão DAX existente para obter o mesmo resultado, especialmente quando o cálculo requer classificação por colunas não contínuas.
Como você pode ver abaixo, o DAX necessário para executar esses cálculos é realmente mais fácil do que o DAX necessário sem eles. No entanto, embora essas novas funções sejam muito poderosas e flexíveis, elas ainda exigem uma certa complexidade para que funcionem corretamente. A Microsoft anunciou que está trabalhando continuamente nessas melhorias para que elas fiquem cada vez mais simples.
INDEX
Essa função permite realizar cálculos de comparação recuperando uma linha que está em uma posição absoluta. Isso é útil para comparar valores com uma determinada linha de base ou outra entrada específica.
Por exemplo, imagine uma tabela de nomes de clientes e datas de nascimento. Como encontrar o cliente mais antigo para cada sobrenome?
Agora você consegue recuperar o primeiro resultado ao ordenar por data de nascimento, especificando 1. Por padrão, a ordem das colunas passadas para OrderBy é crescente. Se especificar 2, verá o nome da segunda pessoa mais velha com o sobrenome, e assim por diante. Se definir -1, vai retornar a pessoa mais jovem.
Convém lembrar que INDEX depende de duas outras novas funções auxiliares chamadas ORDERBY e PARTITIONBY, explicadas no final do tópico WINDOW após OFFSET.
OFFSET
Essa função permite que você execute cálculos de comparação mais facilmente, recuperando uma linha que está em uma posição relativa de sua posição atual. Isso é útil para comparar algo além do tempo, como comparativo entre regiões, cidades ou produtos.
Quer um exemplo? Veja abaixo um gráfico de barras que mostra o total de vendas por cor do produto.
Como comparar o desempenho de cada cor com a cor acima dela no gráfico? Você pode escrever uma instrução DAX complicada para isso ou agora pode usar OFFSET para atingir esse objetivo:
TotalSalesDiff = IF(NOT ISBLANK([TotalSales]), [TotalSales] – CALCULATE([TotalSales], OFFSET(-1, FILTER(ALLSELECTED(DimProduct[Color]),NOT ISBLANK([TotalSales])))))
Isso retornará o seguinte resultado:
WINDOW
Essa função permite que você execute cálculos que dependem de intervalos de resultados (as janelas), como uma média móvel ou uma soma acumulada.
Aqui está um exemplo de como usar WINDOW. O gráfico de colunas abaixo mostra as vendas totais por ano e mês:
Agora, digamos que você queira adicionar uma média móvel para os últimos três meses de vendas, incluindo o atual. Por exemplo, para setembro de 2017, esperamos que o resultado seja a média de vendas de julho, agosto e setembro de 2017, enquanto para fevereiro de 2018, esperamos que o resultado seja a média de vendas de dezembro de 2017, janeiro de 2018 e fevereiro de 2018.
Para atender a esse requisito, você pode escrever uma instrução DAX complicada ou agora pode usar WINDOW para atingir essa meta usando uma instrução DAX mais simples:
MovingAverageThreeMonths = AVERAGEX(WINDOW(-2, 0, ALLSELECTED(DimDate[CalendarYear],DimDate[MonthName],DimDate[MonthNumberOfYear]), ORDERBY(DimDate[CalendarYear],ASC,DimDate[MonthNumberOfYear],ASC)), [TotalSales])
Isso retornará o seguinte resultado:
Como você pode ver, a linha recém-adicionada calcula corretamente a média de vendas ao longo de três meses (incluindo o mês atual).
É importante observar que WINDOW depende de duas outras novas funções auxiliares chamadas ORDERBY e PARTITIONBY, as quais só podem ser usadas em funções que aceitam um parâmetro orderBy ou partitionBy, que são as funções apresentadas acima.
A função PARTITIONBY define as colunas que serão usadas para particionar as linhas nas quais essas funções operam. Por outro lado, a função ORDERBY define as colunas que determinam a ordem de classificação dentro de cada uma das partições de uma função de janela especificadas por PARTITIONBY.
Leia mais sobre INDEX, OFFSET, WINDOW, ORDERBY e PARTITIONBY na documentação da Microsoft.
Veja mais novidades no blog da Microsoft sobre Power BI em janeiro de 2023.
Assista também um vídeo com as atualizações do Power BI divulgadas pela Microsoft em dezembro de 2022 (em inglês).
Qual novidade você achou mais interessante? Gostaria que a gente falasse mais sobre um tópico específico?
Também são bem-vindas as suas sugestões de temas para os nossos próximos artigos.
A Genux Consult pode ajudá-lo a compreender e utilizar os modernos recursos oferecidos pelas plataformas de Business Intelligence.
Vai ser um prazer falar com você!