1
resposta

Calculo YTD no MDX

Na aula você demonstrou como fazer uma soma ou média mas e como fazer o YTD para comparar o mesmo mês do ano passado?

No meu caso estou utilizando a seguinte query

WITH
  MEMBER [Measures].[YTD] AS
   AGGREGATE(
      YTD([DtPedido].[DtPedidoMes].CurrentMember),
      [Measures].[QtExame]
    )
SELECT
  {[Measures].[QtExame], [Measures].[YTD]} ON COLUMNS,
  [DtPedido].[DtPedidoMes].[DtPedidoMes].MEMBERS ON ROWS
FROM
  [Producao]
WHERE
(  [DtPedido].[DtPedidoAno].&[2023])

O Resultado foi: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Luciano, tudo bem?

Desde já peço desculpas pela demora em obter retorno.

Considerando que seu problema está relacionado a questões externas ao curso e não tenho acesso completo ao cenário do seu projeto, apresentarei algumas sugestões que podem servir como ponto de partida.

Para calcular o YTD (Year to Date) no MDX e compará-lo ao mesmo mês do ano passado, utilize a função YTD em conjunto com ParallelPeriod.

A função YTD soma acumulativamente o valor de uma medida desde o início do ano até o membro atual, enquanto a função ParallelPeriod retorna um membro em uma hierarquia no mesmo período do ano anterior.

O código ficará assim:

WITH
  MEMBER [Measures].[YTD] AS
   AGGREGATE(
      YTD([DtPedido].[DtPedidoMes].CurrentMember),
      [Measures].[QtExame]
    )
  MEMBER [Measures].[YTD_Ano_Anterior] AS
   AGGREGATE(
      ParallelPeriod([DtPedido].[DtPedidoAno], 1, [DtPedido].[DtPedidoMes].CurrentMember),
      [Measures].[QtExame]
    )
SELECT
  {[Measures].[QtExame], [Measures].[YTD], [Measures].[YTD_Ano_Anterior]} ON COLUMNS,
  [DtPedido].[DtPedidoMes].[DtPedidoMes].MEMBERS ON ROWS
FROM
  [Producao]
WHERE
  ([DtPedido].[DtPedidoAno].&[2023])

Nessa query, foi adicionado o membro calculado [Measures].[YTD_Ano_Anterior], que utiliza a função ParallelPeriod para retornar o valor do YTD do mesmo mês do ano anterior. Assim, você poderá comparar o YTD atual com o YTD do ano anterior.

Reforçando, talvez seja necessário adaptar o código, uma vez que não possuo acesso ao projeto para realizar testes. No entanto, espero que esses códigos auxiliem no início da solução.

Espero ter ajudado.

Caso surja alguma dúvida, não hesite em compartilhar no fórum.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software