Com a crescente adoção do Power BI como solução de Data Visualization nas organizações, temos encontrado os mais variados perfis de usuários construindo relatórios e obtendo insights por meio desta ferramenta.

Isso é um ótimo indicador de que as empresas estão obtendo sucesso na adoção do Self-Service BI e que a solução escolhida está atendendo aos requisitos propostos. Porém, ao mesmo tempo que essa estratégia democratiza o acesso à informação, ela exige que os usuários estejam cada vez mais preparados em relação aos recursos e possibilidades que a ferramenta disponibiliza.

Quando começamos a avançar na utilização do Power BI, nos deparamos com o DAX (Data Analysis Expressions), que é a linguagem para acesso e manipulação de dados utilizada em ferramentas como o Power BI, Power Pivot, Analysis Services, entre outras. O DAX permite a construção de tabelas e campos calculados, além dos mais diversos tipos de medidas.

Falando sobre campo calculado e medida, algumas dúvidas recorrentes entre os usuários são sobre Row Context e Filter Context. Vamos falar um pouco sobre isso.

Row Context

Quando falamos de Row Context, estamos nos referindo a tudo que é calculado “horizontalmente” no Power BI, ou seja, a tudo que é gerado utilizando apenas os valores da MESMA linha onde o cálculo está sendo criado.

Nova coluna calculada, criado multiplicando os valores das colunas de Quantidade e Valor.

No exemplo acima, realizamos a criação de uma coluna calculada. Perceba que a nova coluna foi criada multiplicando os valores das colunas de Quantidade e Valor, e o resultado está restrito a cada produto, não sendo aplicado nenhum filtro e tampouco alteração do contexto (linha).

Função SUMX(), que realiza a soma de uma expressão fornecida (quantidade * valor) para cada linha e, após isso, soma os valores obtidos.

Outra forma de trabalharmos com Row Context é utilizar funções DAX de iteração linha a linha. No exemplo acima, utilizamos a função SUMX() que, diferentemente da SUM(), realiza a soma de uma expressão fornecida (Quantidade * Valor) para cada linha e, após isso, soma os valores obtidos. Essa expressão produzirá o mesmo resultado do campo calculado anteriormente: a multiplicação dos valores linha a linha.

Outros exemplos de funções de iteração linha a linha são SUMX, MINX, MAXX, AVERAGEX e FILTER.

Sendo assim, Row Context (ou Contexto de Linha) é a forma mais simples e cotidiana de trabalharmos com o Power BI e PowerPivot, muito por conta da proximidade no conceito com as planilhas Excel que utilizamos no dia a dia.

Filter Context

Outra forma de calcularmos valores no Power BI é por meio das medidas: agregações de conjuntos (colunas) de dados obtidos através do DAX.

Nessas agregações, alteramos o contexto de linha para coluna, ou seja, passamos a considerar os valores das colunas na hora de realizarmos o cálculo. Nesse contexto, também temos que considerar os filtros que estão sendo aplicados no relatório e nas expressões.

São justamente os filtros aplicados no relatório e na expressão DAX criada que definem o contexto da medida, por exemplo:

Filtros aplicados no relatório e na expressão DAX criada que definem o contexto da medida.

Ainda no exemplo anterior, vamos considerar a necessidade de obter somente o Valor Total para o Produto C (tabela acima). Conseguimos isso através da expressão abaixo:

Filtros aplicados no relatório e na expressão DAX, considerando somente a necessidade de obter somente o Valor Total para o Produto C.

Perceba que, diferentemente da função FILTER (que só retornaria o Total Medida caso a linha em questão fosse a do Produto C), quando incluímos a nova coluna “Total Produto C” na tabela, o valor apresentado será sempre o filtrado na expressão, independente da linha em que estamos:

Função Filter, que só retornaria o Total Medida caso a linha em questão fosse a do Produto C.

Todo e qualquer filtro que está sendo aplicado, seja via objeto no relatório ou via expressão DAX, afetará o cálculo da medida e, por esse motivo, devemos sempre nos atentar em qual contexto estamos trabalhando. Na imagem acima, o exemplo com FILTER restringirá o cálculo da medida somente para a linha filtrada. Já o primeiro exemplo retornará o valor desejado para a medida, não importando a linha em que estamos.

Conclusão

Row Context e Filter Context são dois dos conceitos mais básicos do Power BI, porém conseguem ser, ao mesmo tempo, dois dos mais importantes da ferramenta. Seu entendimento é fundamental para o uso correto e produtivo de funções mais avançadas.

Muitos problemas encontrados no dia a dia se devem ao não entendimento desse conceito e poderiam ser mitigados com simples ajustes na modelagem/expressão.


E aí, também ficou empolgado com o potencial do Power BI para os desafios da sua TI?

Entre em contato com a Iteris e saiba como podemos ajudar a elevar o desempenho de suas aplicações.