image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image

KS

Katia Souza27/06/2024 14:51
Compartilhe
Microsoft 50 Anos - Prompts InteligentesRecomendados para vocêMicrosoft 50 Anos - Prompts Inteligentes

Analisando Funções DAX no Power BI: Um Estudo de Caso Prático

  • #Power BI

No contexto empresarial, a análise de dados de vendas é essencial para a tomada de decisões estratégicas. Um desafio comum é comparar o desempenho de vendas entre meses consecutivos. No entanto, a simples comparação de datas pode ser inadequada, pois o número de dias úteis (de segunda a sexta-feira) varia a cada mês. Por exemplo, um mês pode começar em uma terça-feira, enquanto o mês anterior começou em uma sexta-feira, resultando em um número diferente de dias úteis até a mesma data do mês seguinte. Para uma análise justa e precisa, é crucial comparar períodos com o mesmo número de dias úteis. Neste artigo, explorarei como resolver essa questão usando Power BI e DAX, destacando a criação de uma coluna de sequência no calendário e uma medida para calcular o total em reais das vendas do mês anterior.

Criando a Coluna de Sequência no Calendário

Para resolver a questão de comparar períodos que começam em diferentes dias da semana, criei uma coluna de sequência no calendário que conta apenas os dias úteis (segunda a sexta-feira).

Código DAX

Sequencia = 
VAR CurrentDate = 'dCalendário'[Date]
VAR CurrentMonthStart = STARTOFMONTH('dCalendário'[Date])

VAR DaysSinceStartOfMonth =
  CALCULATE(
      COUNTROWS('dCalendário'),
      FILTER(
          ALL('dCalendário'),
          'dCalendário'[Date] >= CurrentMonthStart &&
          'dCalendário'[Date] <= CurrentDate &&
          'dCalendário'[Dia da Semana] = "SIM"
      )
  )

VAR LastValidCount =
  CALCULATE(
      MAX('dCalendário'[Sequencia]),
      FILTER(
          ALL('dCalendário'),
          'dCalendário'[Date] < CurrentDate &&
          'dCalendário'[Dia da Semana] = "SIM"
      )
  )

RETURN
IF(
  'dCalendário'[Dia da Semana] = "SIM",
  DaysSinceStartOfMonth,
  LastValidCount
)

Explicação das Funções Utilizadas

  • CALCULATE
  • A função `calculate` avalia uma expressão modificada por filtros. No nosso caso, `calculate` é usada para contar os dias úteis desde o início do mês atual e para obter o valor máximo da sequência de dias úteis até a data atual.
  • Exemplo Prático:
VAR DaysSinceStartOfMonth =
  CALCULATE(
      COUNTROWS('dCalendário'),
      FILTER(
          ALL('dCalendário'),
          'dCalendário'[Date] >= CurrentMonthStart &&
          'dCalendário'[Date] <= CurrentDate &&
          'dCalendário'[Dia da Semana] = "SIM"
      )
  )
  • FILTER
  • A função `filter` retorna uma tabela que representa um subconjunto de outra tabela ou expressão. Aqui, `filter` é usada dentro do `calculate` para restringir as linhas da tabela de calendário aos dias úteis entre o início do mês e a data atual.
  • Exemplo Prático:
FILTER(
  ALL('dCalendário'),
  'dCalendário'[Date] >= CurrentMonthStart &&
  'dCalendário'[Date] <= CurrentDate &&
  'dCalendário'[Dia da Semana] = "SIM"
)
  • ALL
  • A função `all` retorna todas as linhas de uma tabela ou todas as colunas de uma tabela, ignorando os filtros aplicados. No nosso caso, `all` é usada para ignorar os filtros de contexto e permitir que o `filter` selecione todas as datas do calendário.
  • Exemplo Prático:
ALL('dCalendário')
  • MAX
  • A função `max` retorna o maior valor em uma coluna. Aqui, é usada para obter a maior sequência válida de dias úteis antes da data atual.
  • Exemplo Prático:
VAR LastValidCount =
  CALCULATE(
      MAX('dCalendário'[Sequencia]),
      FILTER(
          ALL('dCalendário'),
          'dCalendário'[Date] < CurrentDate &&
          'dCalendário'[Dia da Semana] = "SIM"
      )
  )

Criando a Medida para Calcular o Total de Vendas do Mês Anterior

Agora, iremos criar a medida para calcular o total em reais das vendas no mês anterior, considerando a sequência de dias úteis.

Código DAX

R$_Vendas_Mes_Anterior =
VAR DataMinimaFiltro = CALCULATE(MIN('dCalendário'[Date]), ALLSELECTED('dCalendário'))
VAR DataMaximaFiltro = CALCULATE(MAX('dCalendário'[Date]), ALLSELECTED('dCalendário'))
VAR SequenciaDataFinal = CALCULATE(
  MAX('dCalendário'[Sequencia]),
  'dCalendário'[Date] = DataMaximaFiltro
)

VAR MesAnterior = MONTH(DataMinimaFiltro) - 1
VAR AnoAnterior = IF(MesAnterior = 0, YEAR(DataMinimaFiltro) - 1, YEAR(DataMinimaFiltro))

VAR SequenciaMinimaMesAnterior = CALCULATE(
  MIN('dCalendário'[Sequencia]),
  'dCalendário'[Ano] = AnoAnterior,
  'dCalendário'[Mes] = MesAnterior
)

RETURN
  CALCULATE(
      SUM(FATO_VENDAS[VL_R$]),
      FILTER(
          ALL('dCalendário'),
          'dCalendário'[Ano] = AnoAnterior &&
          'dCalendário'[Mes] = MesAnterior &&
          'dCalendário'[Sequencia] >= SequenciaMinimaMesAnterior &&
          'dCalendário'[Sequencia] <= SequenciaDataFinal
      )
  )

Explicação das Funções Utilizadas

  • MIN
  • A função `min` retorna o menor valor em uma coluna. Aqui, é usada para obter a menor data do filtro aplicado.
  • Exemplo Prático:
VAR DataMinimaFiltro = CALCULATE(MIN('dCalendário'[Date]), ALLSELECTED('dCalendário'))
  • SUM
  • A função `sum` adiciona todos os números em uma coluna. No nosso caso, é usada para somar os valores de vendas.
  • Exemplo Prático:
CALCULATE(
  SUM(FATO_VENDAS[VL_R$]),
  FILTER(
      ALL('dCalendário'),
      'dCalendário'[Ano] = AnoAnterior &&
      'dCalendário'[Mes] = MesAnterior &&
      'dCalendário'[Sequencia] >= SequenciaMinimaMesAnterior &&
      'dCalendário'[Sequencia] <= SequenciaDataFinal
  )
)

Neste artigo, exploramos como resolver um problema específico de análise de vendas usando Power BI e DAX. Destaquei a criação de uma coluna de sequência no calendário e uma medida para calcular o total de vendas do mês anterior. Expliquei detalhadamente as funções DAX utilizadas, incluindo `calculate`, `filter`, `all`, `max`, `min`, e `sum`, demonstrando como aplicá-las em um cenário prático. Compreender essas funções e suas aplicações é fundamental para realizar análises complexas e obter insights valiosos dos dados empresariais.

Compartilhe
Recomendados para você
Suzano - Análise de Dados com Power BI
Microsoft 50 Anos - Prompts Inteligentes
Microsoft 50 Anos - GitHub Copilot
Comentários (0)
Recomendados para vocêMicrosoft 50 Anos - Prompts Inteligentes