power bi calculate

Dicas do Power BI CALCULATE – Uma das funções DAX mais usadas

Compartilhe!

Power BI CALCULATE

Para oferecer insights significativos do trabalho de análise de dados no Power BI, geralmente é necessário realizar cálculos complexos envolvendo todos os tipos de métricas, funções de subtotalização, filtragem de dados e tratamento de relacionamento.

Para o usuário experiente do Power Pivot – Power BI, a função CALCULATE do mecanismo DAX é uma das ferramentas mais úteis que podem simplificar cenários de cálculo complexos com pouco esforço. É muito semelhante à função Excel Sumif , porém, não possui as mesmas limitações.

Antes de dar uma olhada na função CALCULATE, devemos entender o conceito de ‘contexto de filtro’. O contexto de filtro é um dos conceitos DAX mais importantes e será mencionado com frequência durante este passo a passo. O contexto do filtro pode ser definido como o conjunto específico de dados em relação ao qual uma expressão é avaliada, afinal, os filtros participantes foram aplicados, como linhas, colunas e segmentações de dados.

A função de cálculo no Power BI

Vamos começar dando uma olhada nos argumentos da função CALCULATE :

Power BI CALCULATE

Como notado, esta função pede apenas um argumento obrigatório: Expressão .

Além disso, os argumentos opcionais são Filtro1 , Filtro2 , Filtro3, …, Filtro (n). Até quantas condições de filtro você precisar.

Então, o que a função CALCULATE faz exatamente?

A função CALCULATE é útil porque pode modificar o contexto do filtro da Expressão interna, conforme indicado pelo número n de condições de filtro especificadas pelo usuário, de acordo com estas etapas:

  • Se o contexto de filtro especificado por uma condição de filtro já existir, ele substituirá o contexto de filtro já existente pelo novo que foi especificado na expressão CALCULATE.
  • Se o contexto de filtro não existir, ele adicionará um novo contexto de filtro de acordo com a condição de filtro especificada.

Alguns exemplos podem mostrar o uso desta função. Estes serão baseados em dados extraídos de um banco de dados amplamente conhecido; AdventureWorks .

O modelo a ser usado é o seguinte:

modelo de dados

Exemplo 1: porcentagem do total

Este primeiro exemplo representa um cenário muito comum, onde é necessário mostrar a porcentagem que um valor representa de um total.

Suponha que desejamos calcular a % das vendas de produtos por subcategoria de produto.

Usando a tabela FacInternetSales, a etapa inicial é definir uma medida para o número de vendas:

Vá para a guia Home > grupo Cálculos > Nova Medida

Em seguida, escreva esta fórmula DAX:

Soma das vendas – SUM (FactInternetSales [SalesAmount])

Para obter a saída conforme visto abaixo; Você pode adicionar um visual Matrix a partir da visualização Relatório . Em seguida, use EnglishProductSubcategoryName da tabela DimProductSubcategory no campo Rows e a medida Sum Of Sales definida no campo Values.

Vendas totais

(Para quem ainda não sabe, uma visualização de Matriz pode ser usada como uma espécie de versão do Power BI de uma Tabela Dinâmica do Excel! Esta visualização é muito útil para depuração durante a codificação DAX)

O problema é:

Como dividimos a soma das vendas de cada item pelo total mostrado?

Nossa resposta:

Diga ao DAX para ignorar o contexto de filtro imposto por cada campo de linha de subcategoria usando uma combinação das funções CALCULATE e ALL .

Para fazer isso, vamos definir uma nova medida chamada Vendas totais e defini-la como:

Vendas totais = CALCULATE ([Sum Of Sales], ALL (DimProductSubcategory))

Para ver qual é o resultado dessa medida, é útil incluir essa nova medida no campo Valores de nossa visualização de Matriz :

TotalSales_Calculate function _ & ALL

A partir disso, observamos duas coisas importantes:

  1. A medida mostra o total de vendas em cada linha, mesmo com contexto de filtro para cada subcategoria. Isso ocorre porque a função CALCULATE modificou o contexto de filtro existente em cada linha, substituindo -o por sua própria função: ALL (DimProductSubcategory). Para fins práticos, a função ALL substitui o contexto de filtro existente .
  2. Várias novas linhas de subcategorias apareceram sem valores na Soma das Vendas. Isso ocorre porque essas subcategorias não tiveram vendas. Então, tendo efetivamente ignorado o contexto do filtro de DimProductSubcategory, todas as subcategorias são exibidas na coluna Total de vendas.

Agora que temos um valor de Vendas Total utilizável para cada linha, podemos definir nossa medida desejada de % das vendas totais :

% Das vendas totais = [soma das vendas] / [vendas totais]

Então, depois de incluir essa medida na visualização da Matriz e remover a medida de Vendas Totais dela, obtemos:

TotalSales2

Aí está!

Vamos dar uma olhada em outro exemplo da função CALCULATE.

Exemplo 2: Volume de vendas durante os dias úteis

Do mesmo banco de dados AdventureWorks , temos os dados de vendas mensais que começam em agosto de 2005:

TotalSales3

Suponhamos que desejamos saber o número de vendas realizadas apenas durante os dias úteis, ou seja, de segunda a sexta-feira. Este exemplo mostra como a função CALCULATE pode adicionar contextos de filtro completamente novos a uma expressão.

Primeiro, precisamos de uma tabela Calendar adequada em nosso modelo de dados. O usado neste exemplo possui uma coluna DayName que será usada para filtrar os dias úteis.

TotalSales4

Agora, para nossa expressão DAX:

Dias úteis de vendas = CALCULAR ([Soma das vendas], DimCalendar [DayName] <> “sábado”, DimCalendar [DayName] <> “Domingo”)

Existem várias maneiras de atingir esse objetivo. Para este exemplo, simplesmente dissemos à função CALCULATE para filtrar nomes de dia diferentes de “sábado” e diferentes de “domingo”. E sim! A razão pela qual o “e” está em negrito é que é algo a se considerar ao especificar várias condições de filtragem, já que a função CALCULATE executará uma operação lógica AND em todas as condições de filtro que possui.

No caso de você precisar especificar várias condições e aplicar uma operação lógica OR em suas condições, você pode usar o operador de linha vertical “ || ”Para separá-los. A única coisa a lembrar é que, em uma condição de filtro, esse operador OR não pode funcionar em expressões lógicas que envolvam mais de uma coluna.

De volta ao exemplo, podemos adicionar a medida de Vendas de Dias Úteis à visualização da Matriz para mostrar isso:

Calcular função & AND

Usando a função calcular, o objetivo foi alcançado.

Resumo

  • Embora superior, a função calcular é muito semelhante à função Excel Sumif .
  • Compreender o contexto do filtro é essencial. Como vimos em nossos exemplos, a função CALCULATE modifica ou adiciona contextos de filtro a um cálculo.
  • Em nossos exemplos, dois tipos diferentes de condições de filtro foram usados: uma tabela retornada por ALL (DimProductSubcategory) e uma expressão de filtragem lógica .

Créditos: DATABEAR

Veja tambem: DICAS POWER BI

Compartilhe!