Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde;
Estou iniciando a construção de um Dashboard, e nessa não terei seleção alguma, todos os filtros deverão ser feito via setanalysis.
Tenho um determinado gráfico, que ira comparar as vendas do mês atual com o mês anterior.
Suponhamos que hoje é dia 10/08/2014.
Vendas Mes_Atual - com a expressão ele ira somar de 01/08/2014 a 10/08/2014:
SUM( {<ANO=Year(Today()), MES=Month(Today())>} VENDA_LIQUIDA)
Vendas Mes_Anterior - com a expressão ele ira somar de 01/07/2014 a 31/07/2014:
SUM( {<ANO=Year(Today())-1, MES=Month(Today())-1>} VENDA_LIQUIDA)
Como o Mes_Atual nunca estará "completo", preciso corrigir a expressão Mes_Anterior, para que some apenas o período correspondente, assim terei a comparação correta.
Qual seria a maneira mais simples de fazer isso ?
Bom dia!
Eu tentei exemplificar ao máximo como proceder para achar as datas máximas e mínimas de um período. Abra a aplicação, veja o objeto de texto, faça seleções e vá dando uma olhada para ver se é isso que você precisa. Depois é somente adaptar a sua necessidade real.
Abraço!
Cléber,
Você pode criar uma variável apontando para o seu mês anterior e utiliza-la ex:
SUM({$< Mes={$(vMesAnt)},Ano={$(vAnoAtual)}>} VENDA_LIQUIDA)
Você pode adicionar o seguinte comando na variável
Mês anterior: =Num(Month(Today(0)))-1
Ano Atual: =Year(Today(0))
Olá, veja esse post.
Basta alterar o seu inicio do período, nesse caso para o início do Mês.
Qlikfique-se.
Tonial.
Acho que estou me enrolando com a sintaxe do setanalysis quando necessita usar "menor igual".
A variavel vMesAtual = 'Agosto', ou seja...o mes corrente.
Preciso que some de janeiro a agosto do ano anterior, entao fiz assim:
=sum({<ANO= {$(#vAnoAnterior)},MES= {'<=$(#vMesAtual)'} >} VENDA_LIQUIDA)
...mas o resultado esta dando zero...
ele nao deveria somar janeiro a agosto de 2013 ??
Ja tinha lido outro post seu que sugere a criação do flag e daquelas variáveis, mas achei muito elaborado pro que eu preciso, daria pra fazer algo mais simples.
Acho que estou me enrolando com a sintaxe do setanalysis quando necessita usar "menor igual".
A variavel vMesAtual = 'Agosto', ou seja...o mês corrente.
Preciso que some de janeiro a agosto do ano anterior, entao fiz assim:
=sum({<ANO= {$(#vAnoAnterior)},MES= {'<=$(#vMesAtual)'} >} VENDA_LIQUIDA)
...mas o resultado esta dando zero...
ele não deveria somar janeiro a agosto de 2013 ??
Cléber,
Você pode utilizar algo do tipo
Sum(If(Ano=vAnoAnt AND Mes <> vMesAtual, VENDA_LIQUIDA ,0))
Ou
Sum(If(Ano < Year(Today(0)) AND Mes <> Month(Today(0)), VENDA_LIQUIDA,0))
Amigo, boa tarde!
Percebi que você deve ter um calendário carregado, pois tem campos de MES e ANO, então provavelmente vc tem um campo com a data completa também. Use esse campo com a data completa no lugar de "SUA_DATA" em minha expressão.
'Venda Mês Corrente: '&
Sum({1<SUA_DATA= {"<=$(=Max(SUA_DATA))>=$(=MonthStart(Max(SUA_DATA)))"}
>} VENDA_LIQUIDA)
'Venda Mês Anterior até o dia atual: '&
Sum({1<SUA_DATA= {"<=$(=AddMonths(Max(SUA_DATA),-1))>=$(=MonthStart(AddMonths(Max(SUA_DATA),-1)))"}
>} VENDA_LIQUIDA)
Espero ter ajudado.
ola Junior, bom dia !
Tenho sim um calendário carregado, bem como o campo da data completa.
Na verdade quero comparar o mês atual, com os dias ate a data presente, versus o mesmo mês do ANO anterior, no mesmo período de dias.
Bom dia, tente fazer assim então!
//VENDA LIQUIDA DO MÊS CORRENTE
Sum({1<SUA_DATA= {"<=$(=Max(SUA_DATA))>=$(=MonthStart(Max(SUA_DATA)))"}
>} VENDA_LIQUIDA)
//VENDA LIQUIDA DO MÊS CORRENTE POREM ANO ANTERIOR
Sum({1<SUA_DATA= {"<=$(=AddYears(Max(SUA_DATA), -1))>=$(=MonthStart(AddYears(Max(SUA_DATA), -1)))"}
>} VENDA_LIQUIDA)
Caso isso não lhe sirva, me envie somente o LOAD do seu calendário para eu enviar uma aplicação de exemplo pra você.
Estou a disposição, abraço!
Acho que estamos quase lá...acho que ainda não consegui passar o que estou precisando...vou tentar me expressar melhor:
- preciso de 2 números, para posteriormente fazer um percentual dividindo um pelo outro
- venda total do ano atual (esse numero ja tenho com SUM( {<ANO=Year(Today()), MES=Month(Today())>}
VENDA_LIQUIDA)
- venda total do ano anterior, do mesmo período da formula acima, ou seja, se hoje estamos no dia 01/09/2014, terei os números:
- $999999 - correspondente de 01/01/2014 a 01/09/2014
- $999999 - correspondente de 01/01/2013 a 01/09/2013.
depois farei o mesmo com o mês atual vs mês anterior
- $999999 - correspondente de 01/09/2014 a 01/09/2014
- $999999 - correspondente de 01/09/2013 a 01/09/2013.
Abaixo segue meu calendário, pra vc ter uma ideia. Muito obrigado pela atenção !
LET vDateMin = Num(MakeDate(2011,01,1));
//LET vDateMax = Floor((Today()-1));
LET vDateMax = Floor((Today()+3));
LET vDateToday = Num(Today());
TempCalendar:
LOAD
$(vDateMin) + RowNo() - 1 AS DateNumber,
Date($(vDateMin) + RowNo() - 1) AS TempDate
AUTOGENERATE 1
WHILE $(vDateMin)+IterNo()-1<= $(vDateMax);
Calendar:
LOAD
date(Floor([TempDate]),'DD/MM/YYYY') as DATA,
week(Floor([TempDate])) as semanacalendario,
if(month(weekend([TempDate]))= month([TempDate]),div(day(WeekEnd([TempDate])),7),div(day(Weekend([TempDate],-1)),7)+1)+1 as NumeroSemanaMes,
// Standard Date Objects
Day(TempDate) AS DIA,
Num(Month(TempDate)) AS MêsNum,
WeekDay(TempDate) AS [Dia da Semana],
Week(TempDate) AS [Semana],
Month(TempDate) AS MES,
//'Q' & Ceil(Month(TempDate)/3) AS CalendarQuarter,
Year(TempDate) AS ANO,
// Calendar Date Names
WeekName(TempDate) as SemanaAno,
monthname(TempDate) as MESANO,
QuarterName(TempDate) as Quarter
RESIDENT TempCalendar ORDER BY TempDate ASC;
DROP TABLE TempCalendar;
LET vDateMin = Num(MakeDate(2000,1,1));
LET vDateMax = Floor(YearEnd(AddMonths(Today(), 12)));
LET vDateToday = Num(Today());