Ir para conteúdo
  • 0

Problemas com Inteligência de tempo


Kevintk
Ir para solução Solucionado por Rodrigo R1 ,

Pergunta

  • Alunos

Boa tarde pessoal tudo bem? eu tenho algumas formulas para mes passado, ano passado, ytd e previousytd
exemplo:
Vendas LY = CALCULATE([vendas],DATEADD('dData A'[Date],-12,MONTH))
Vendas LM = CALCULATE([vendas],DATEADD('dData A'[Date],-1,MONTH))
Vendas YTD = CALCULATE([vendas], DATESYTD('dData A'[Date]))
Vendas YTD Passado = CALCULATE([Vendas YTD],DATEADD('dData A'[Date],-12,MONTH))

todas elas funcionam, porém quando eu uso em Card de KPI, ou mostro o total na tabela, ele esta puxando o total do Mês vigente, apesar de parar no dia correto... como eu faco para previnir isso e fazer o total mostrar o dia correto e nao o mes todo?

Segue exemplo do que acontece abaixo

WhatsApp Image 2022-09-23 at 17.41.01.jpeg

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Experimente usar o values para aplicar o filtro de contexto, algo meio assim:
CALCULATE(
            [Vendas YTD],
           FILTER(
                       ALL(dcalendario),
                      dcalendario[Ano] = MAX(dcalendario[Ano] )- 1

           ),

           Values(dcalendario[Mes]),
          Values(dcalendario[data])

)           

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
3 minutos atrás, Alex Pereira disse:

Experimente usar o values para aplicar o filtro de contexto, algo meio assim:
CALCULATE(
            [Vendas YTD],
           FILTER(
                       ALL(dcalendario),
                      dcalendario[Ano] = MAX(dcalendario[Ano] )- 1

           ),

           Values(dcalendario[Mes]),
          Values(dcalendario[data])

)           

agora esta mostrando o ano de 21 todo 😕

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa tarde @Kevintk. Tudo bem, amigo.

As funções de inteligência de tempo pedem uma data de referência para que possam realizar os cálculos corretamente.

Por isso, precisa haver um filtro de data selecionado que esteja interagindo com os seus visuais.

A partir desse filtro o PBI irá buscar os meses anteriores, de acordo com suas medidas.

Espero que tenha conseguido ajudar.

Sucesso aí, amigo....

 

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
3 minutos atrás, Rodrigo R1 disse:

Boa tarde @Kevintk. Tudo bem, amigo.

As funções de inteligência de tempo pedem uma data de referência para que possam realizar os cálculos corretamente.

Por isso, precisa haver um filtro de data selecionado que esteja interagindo com os seus visuais.

A partir desse filtro o PBI irá buscar os meses anteriores, de acordo com suas medidas.

Espero que tenha conseguido ajudar.

Sucesso aí, amigo....

 

@Rodrigo R1 mas porque na tabela ele funciona corretamente, me trazendo o valor até a data que eu preciso, e quando eu seleciono o total ele me referencia o mes todo?

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
10 minutos atrás, Rodrigo R1 disse:

Boa tarde @Kevintk. Tudo bem, amigo.

As funções de inteligência de tempo pedem uma data de referência para que possam realizar os cálculos corretamente.

Por isso, precisa haver um filtro de data selecionado que esteja interagindo com os seus visuais.

A partir desse filtro o PBI irá buscar os meses anteriores, de acordo com suas medidas.

Espero que tenha conseguido ajudar.

Sucesso aí, amigo....

 

eu consegui chegar +- onde eu preciso da seguinte maneira
vendas lytd
VAR LastDayAvailable =
    CALCULATE (
        MAX ( fvendas[date] ),
        ALL ( fvendas )
    )
VAR CurrentDates =
    FILTER (
        VALUES ( 'dData A'[Date] ),
        'dData A'[Date] <= LastDayAvailable
    )
VAR Result =
    CALCULATE (
        [vendasytd],
        SAMEPERIODLASTYEAR ( CurrentDates )
    )
RETURN Result

mas eu precisava que meu var lastdayavailable fosse com base na minha dcalendario, e nao na fato

Link para o comentário
Compartilhar em outros sites

  • 0
  • Admin

Boa tarde @Kevintk!

Não entendi muito bem seu objetivo...
1 - Queres criar alguns cards com inteligência de tempo voltando 1 mês, 1 ano etc? 
2 - Contexto seria pegar a data presente (hoje) e voltar as medias conforme o tempo mês, ano? 

Reforçando que nosso mestre @Rodrigo R1 falou, para o card não há o contexto para que essas funções de tempo funcionem, diferente em suas tabelas onde há o contexto da coluna "Date" dessa forma o Power BI lê este campo e aplica a função exemplo DATEADD voltando o calculo conforme medida.

Fico no aguardo para ajudar. 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
33 minutos atrás, Tiago Craici disse:

Boa tarde @Kevintk!

Não entendi muito bem seu objetivo...
1 - Queres criar alguns cards com inteligência de tempo voltando 1 mês, 1 ano etc? 
2 - Contexto seria pegar a data presente (hoje) e voltar as medias conforme o tempo mês, ano? 

Reforçando que nosso mestre @Rodrigo R1 falou, para o card não há o contexto para que essas funções de tempo funcionem, diferente em suas tabelas onde há o contexto da coluna "Date" dessa forma o Power BI lê este campo e aplica a função exemplo DATEADD voltando o calculo conforme medida.

Fico no aguardo para ajudar. 

Boa tarde @Tiago Craici!
No print temos
à esquerda: a medida feita,
no meio: a soma de visitas com o filtro de data com os mesmos dias
à direita: a soma de visitas com o filtro de data até o fim do mês

O que eu preciso é que a tabela da esquerda seja igual a do meio
Apesar de ambas pararem no mesmo dia (22), os totais estao diferentes e eu nao consigo identificar o motivo, fazendo com que meu dax, por mais que pare no dia 22, tenha uma soma "oculta" até o dia 30 do mes, 
Em suma, preciso que o meu total, da esquerda, seja igual ao meu total do meio

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
6 minutos atrás, Tiago Craici disse:

@Kevintk

Veja abaixo como fiz:
image.png.6aef24e4b45229963c6c843f0d695030.png


Medida utilizada:
 

Total Vendido LY =
 
CALCULATE(
    [Total Venda],
    SAMEPERIODLASTYEAR(Calendario[Data])
)



Sucesso amigo! 🚀




 

Hmmm funciona sem filtro de data? 

O pbi consegue entender que estou querendo a data parando no "hoje"? Ou ele precisa de um filtro de data pra funcionar?

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
  • Solução

Boa noite @Kevintk.

Esse PBIX pode ser compartilhado pra gente analisar as suas medidas e sugerir soluções mais assertivas?

Mas acho que estou começando a compreender o que deseja - que seria comparar períodos idênticos do ano passado em relação ao ano atual.

Quando estamos no contexto de setembro de 2022, a medida está buscando todo o mês de setembro de 2021 - mas temos dados apenas até 22/09/2022, num é isso?

Aí o valor ficaria distorcido, pois estamos comparando 30 dias de setembro de 2021 com 22 dias de setembro de 2022, correto?

Para isso, vai ser preciso você criar uma coluna na sua dcalendário assim:

Possui Vendas = dCalendario[Data] <= max(fVendas[Data])

Isso irá retornar TRUE/FALSE.

Aí na sua medida de inteligência de tempo você irá adicionar mais essa condição/filtro - quando os dados dessa coluna na dcalendário = TRUE:

Ano Anterior =

CALCULATE(

    [Soma],

CALCULATETABLE(

   DATEADD(dCalendario[Data], -1, YEAR),

        dCalendario[Possui Vendas] = TRUE))

 

Bom...acho que seria isso...rsrsr...pelo menos foi o que eu entendi....rsrsrs

Espero que tenha conseguido ajudar de alguma maneira.

Sucesso aí, amigo...

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
18 horas atrás, Rodrigo R1 disse:

Boa noite @Kevintk.

Esse PBIX pode ser compartilhado pra gente analisar as suas medidas e sugerir soluções mais assertivas?

Mas acho que estou começando a compreender o que deseja - que seria comparar períodos idênticos do ano passado em relação ao ano atual.

Quando estamos no contexto de setembro de 2022, a medida está buscando todo o mês de setembro de 2021 - mas temos dados apenas até 22/09/2022, num é isso?

Aí o valor ficaria distorcido, pois estamos comparando 30 dias de setembro de 2021 com 22 dias de setembro de 2022, correto?

Para isso, vai ser preciso você criar uma coluna na sua dcalendário assim:

Possui Vendas = dCalendario[Data] <= max(fVendas[Data])

Isso irá retornar TRUE/FALSE.

Aí na sua medida de inteligência de tempo você irá adicionar mais essa condição/filtro - quando os dados dessa coluna na dcalendário = TRUE:

Ano Anterior =

CALCULATE(

    [Soma],

CALCULATETABLE(

   DATEADD(dCalendario[Data], -1, YEAR),

        dCalendario[Possui Vendas] = TRUE))

 

Bom...acho que seria isso...rsrsr...pelo menos foi o que eu entendi....rsrsrs

Espero que tenha conseguido ajudar de alguma maneira.

Sucesso aí, amigo...

Opa bom dia @Rodrigo R1, peco desculpas pela demora
Segue anexo do exemplo que estou falando, separei em 3 medidas de tempo, que sao as que eu uso e explicando os "problemas"
Muito obrigado pela disposição!!!!

@Tiago Craici

Problema.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa noite @Kevintk.

Segue a solução conforme eu havia mencionado anteriormente:

image.png.78a2e4159c08759b0b5181738317e471.png

Você precisa criar uma coluna na sua dcalendário como eu expliquei acima. Veja que agora o resultado no total é o esperado.

Outra sugestão é que a sua dcalendário não estava completa - com todos os dias do ano de 1º de janeiro até 31 de dezembro. Sugiro corrigir isso.

Espero que tenha conseguido ajudar.

Sucesso aí, amigo...

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
Em 26/09/2022 em 18:49, Rodrigo R1 disse:

Boa noite @Kevintk.

Esse PBIX pode ser compartilhado pra gente analisar as suas medidas e sugerir soluções mais assertivas?

Mas acho que estou começando a compreender o que deseja - que seria comparar períodos idênticos do ano passado em relação ao ano atual.

Quando estamos no contexto de setembro de 2022, a medida está buscando todo o mês de setembro de 2021 - mas temos dados apenas até 22/09/2022, num é isso?

Aí o valor ficaria distorcido, pois estamos comparando 30 dias de setembro de 2021 com 22 dias de setembro de 2022, correto?

Para isso, vai ser preciso você criar uma coluna na sua dcalendário assim:

Possui Vendas = dCalendario[Data] <= max(fVendas[Data])

Isso irá retornar TRUE/FALSE.

Aí na sua medida de inteligência de tempo você irá adicionar mais essa condição/filtro - quando os dados dessa coluna na dcalendário = TRUE:

Ano Anterior =

CALCULATE(

    [Soma],

CALCULATETABLE(

   DATEADD(dCalendario[Data], -1, YEAR),

        dCalendario[Possui Vendas] = TRUE))

 

Bom...acho que seria isso...rsrsr...pelo menos foi o que eu entendi....rsrsrs

Espero que tenha conseguido ajudar de alguma maneira.

Sucesso aí, amigo...

Obrigado @Rodrigo R1
testei aqui e foi!!!

  • Like 1
Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...