Qlik Community

Brasil

Announcements
QlikWorld happening right now! You can still join: REGISTER NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
matfurrier
Contributor III
Contributor III

Cálculo Ano anterior - Ano Francês

Pessoal, bom dia.
Tenho um gráfico mostrado aqui que atualiza Vendas x Budget
Preciso replicar o mesmo gráfico, mas, trazendo do período anterior...
Aqui na empresa, trabalhamos com ano francês, que começa em set de um ano e finaliza em agosto do outro ano...
logo, eu preciso comparar pelo campo de ano francês, que sempre é: 2019-2020, 2018-2019, 2017-2018 e por aí vai...
como posso usar esse campo para pegar N-1 ?
No meu script cada linha de lançamento tem DIA, MES, ANO, AnoFrances e etc, mas não consigo colocar um sum por exemplo, para que, ao usuário selecionar o ano francês de 2019-2020, no gráfico ao lado ele mostre os valores de 2018-2019.

Obrigado !!

6 Replies
vandrecarlos
Contributor III
Contributor III

Amigo, bom dia!

 

Você pode tentar usar a fórmula AddYears() . Nela você consegue pegar o mesmo período selecionado pelo usuário e reduzir ou acrescentar anos.

 

Tente acrescentar ela com a sua data de ano francês.

 

Atenciosamente,
Vandré Carlos

matfurrier
Contributor III
Contributor III
Author

Olá amigo,

eu tentei desta forma tb e não deu certo, pq ele não entende o campo como data.
Achei um script aqui no forum, para ao fiscal, mas, ainda assim não consegui colocar pra calcular o ano fiscal anterior, na fórmula de medidas.
Abaixo o script de calendário:

Set vFM = 9 ; // First month of fiscal year
Set vFD = 6; // First Day of the week (0=Mon, 1=Tue, ... , 6=Sun)

MasterCalendar:
Load distinct
Dual(fYear-1 &'/'& fYear, fYear) as FYear, // Dual fiscal year
Dual(Month, fMonth) as FMonth, // Dual fiscal month
*;
Load Year + If(Month>=$(vFM), 1, 0) as fYear, // Numeric fiscal year
Mod(Month-$(vFM), 12)+1 as fMonth, // Numeric fiscal month
*;
Load
[Data NF],
YearStart([Data NF],0,$(vFM)) as FYearStart,
Year([Data NF]) as Year,
Month([Data NF]) as Month,
Date(Monthstart([Data NF]), 'MMM-YYYY') as MonthYear,
Day([Data NF]) as Day,
Date([Data NF], 'MM/DD') as DATEMMDD
Resident VENDAS;

rafaugusto
Contributor III
Contributor III

Você pode usar algumas técnicas, dentre as quais:

Criar um de-para de datas e usar mapping

Calendário asof (disponível na comunidade)

Calendário Canônico (disponível na comunidade)

Ou esse post:

https://community.qlik.com/t5/Qlik-Brasil/Dificuldade-em-Criar-Calend%C3%A1rio-Fiscal/gpm-p/925536

pauloandre
Creator II
Creator II

Eu faria da seguinte forma, criava uma variavel para  ter o AnoFrances (vAnoFrancesAnt) anterior e utilizava a seguinte expressão:

sum({<AnoFrances={'$(vAnoFrancesAnt)'}>}valor)

afurtado
MVP
MVP

vamos tentar

 

text(YearName(CampoAno,0,8)) as [Ano Frances],

dual(Mod(Month(CampoMes)-8,12)+1,Month(CampoMes)) as [Mes Frances]

 

O dual() cria como se fosse uma matriz, aonde terá o numero do mes e o nome do mes. Assim, o mes 01 será Agosto e assim por diante até o mes 12 que será Julho. 

É uma ideia. Qualquer coisa adapta sobre isto.

 

 

 

furtado@farolbi.com.br
matfurrier
Contributor III
Contributor III
Author

Obrigado a todos pela ajuda.
Vou salvar estas opções para testar também.
Eu consegui fazer aqui de uma maneira um pouco diferente. Como eu tenho 02 tabelas diferentes, uma para budget e outra para vendas, eu criei um calendário para cada:
Set vFM = 9 ; // First month of fiscal year

Set vFD = 6; // First Day of the week (0=Mon, 1=Tue, ... , 6=Sun)

MasterCalendar:
Load distinct
Dual(fYear-1 &'/'& fYear, fYear) as FYear, // Dual fiscal year
Dual(Month, fMonth) as FMonth, // Dual fiscal month
*;
Load Year + If(Month>=$(vFM), 1, 0) as fYear, // Numeric fiscal year
Mod(Month-$(vFM), 12)+1 as fMonth, // Numeric fiscal month
Year + If(Month>=$(vFM), 1, 0)-1 as fYearAnt,
*;
Load
[Data NF],
YearStart([Data NF],0,$(vFM)) as FYearStart,
Year([Data NF]) as Year,
Month([Data NF]) as Month,
Date(Monthstart([Data NF]), 'MMM-YYYY') as MonthYear,
Day([Data NF]) as Day,
Date([Data NF], 'MM/DD') as DATEMMDD
Resident VENDAS;

MasterCalendarB:
Load distinct
Dual(fYearB-1 &'/'& fYearB, fYearB) as FYearB, // Dual fiscal year
Dual(MonthB, fMonthB) as FMonthB, // Dual fiscal month
*;
Load YearB + If(MonthB>=$(vFM), 1, 0) as fYearB, // Numeric fiscal year
Mod(MonthB-$(vFM), 12)+1 as fMonthB, // Numeric fiscal month
YearB + If(MonthB>=$(vFM), 1, 0)-1 as fYearAntB,
*;

Load
[Data],
YearStart([Data],0,$(vFM)) as FYearStartB,
Year([Data]) as YearB,
Month([Data]) as MonthB,
Date(Monthstart([Data]), 'MMM-YYYY') as MonthYearB,
Day([Data]) as DayB,
Date([Data], 'MM/DD') as DATEMMDDB
Resident BUDGET;

Depois, no gráfico de velocímetro, fiz a seguinte expressão:
=if(getselectedcount(MES)<1, Sum({1<fYear={$(=Max(fYear)-1)}>} [Valor Real]), Sum({1<fYear={$(=Max(fYear)-1)}, fMonth={$(=Max(fMonth))}>} [Valor Real]))

Aparentemente funcionando, mas, se houver qualquer erro vou recorrer aqui.

Abraços !!