Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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 !!
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
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;
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
Eu faria da seguinte forma, criava uma variavel para ter o AnoFrances (vAnoFrancesAnt) anterior e utilizava a seguinte expressão:
sum({<AnoFrances={'$(vAnoFrancesAnt)'}>}valor)
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.
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 !!