Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde!
Estava observando o aplicativo nativo do Qlik Sense "Sales Discovery" e no gráfico que exibe as vendas diárias percebi que as data se dimensionam de acordo com o "zoom" da área selecionada.
Gostaria de fazer isso com meu calendário também.
Meu script de calendário está assim :
LET vDataFinal = num(today(1));
LET vDataInicial = num(MakeDate(2015,10,30)) -1;
//*** Calendário temp
Tabela_de_Datas:
LOAD
date($(vDataInicial) + IterNo()) as DTNEG,
DATE(MONTHSTART(date($(vDataInicial) + IterNo())), 'MMM/YYYY') AS MêsAno,
DATE(DAYSTART(date($(vDataInicial) + IterNo())), 'DD/MMM') AS DiaMês,
DATE(date($(vDataInicial) + IterNo()), 'DD/MM/YYYY') AS Data,
MONTH(date($(vDataInicial) + IterNo())) AS Mês,
YEAR(date($(vDataInicial) + IterNo())) AS Ano,
DAY(date($(vDataInicial) + IterNo())) AS Dia,
ceil(Month(date($(vDataInicial) + IterNo()))/3)&'º Trim'&'/'& Year(date($(vDataInicial) + IterNo())) as Trimestre
AUTOGENERATE 1
WHILE $(vDataInicial) + IterNo() <= $(vDataFinal);
STORE Tabela_de_Datas into [lib://QVDSTAGE/DATAS.QVD];
DROP TABLE Tabela_de_Datas;
Segue um modelo com script que funciona.
//=======================================================================================
//
// Criar calendario
//
LET vDateMin = Num(MakeDate(year(Today())-1,1,1));
LET vDateMax = Num(MakeDate(year(Today()),12,31));
TempCalendario:
LOAD
Date($(vDateMin) + RowNo() - 1) AS TempDate
AUTOGENERATE 1
WHILE $(vDateMin)+IterNo()-1<= $(vDateMax);
Calendario:
LOAD
Date(TempDate,'DD/MM/YYYY') AS Data,
year(TempDate) as Ano,
month(TempDate) as Mes
Resident TempCalendario;
drop table TempCalendario;
//=======================================================================================
[Cal]:
DECLARE FIELD DEFINITION Tagged ('$date')
FIELDS
Dual(Year($1), YearStart($1)) AS [Ano] Tagged ('$axis', '$year'),
Month($1) AS [Mes] Tagged ('$month', '$cyclic'),
Dual(Year($1)&'-'&Month($1), monthstart($1)) AS [Ano-Mes] Tagged ('$axis', '$yearmonth', '$qualified'),
Dual(Month($1), monthstart($1)) AS [_Ano-Mes] Tagged ('$axis', '$yearmonth', '$simplified', '$hidden'),
Date(Floor($1)) AS [Data] Tagged ('$axis', '$date', '$qualified'),
Date(Floor($1), 'D') AS [_Data] Tagged ('$axis', '$date', '$hidden', '$simplified');
DERIVE FIELDS FROM FIELDS [Data] USING [Cal] ;
Rigonato,
você tem que usar o derive
no teu caso deve ser assim:
DERIVE FIELDS FROM FIELDS Ano,Mês,Data USING Tabela_de_Datas;
No meu script como ficaria?
Eu não entendi muito bem a lógica...
Você tem que colocar esta linha no seu script para poder ter o efeito de zoom na data......
Talvez você tenha que fazer alguma alteração.....Mas copia a linha e da a carga para ver como fica.....
Então, eu tentei e ele aparece o erro "unknown definition"
Segue um modelo com script que funciona.
//=======================================================================================
//
// Criar calendario
//
LET vDateMin = Num(MakeDate(year(Today())-1,1,1));
LET vDateMax = Num(MakeDate(year(Today()),12,31));
TempCalendario:
LOAD
Date($(vDateMin) + RowNo() - 1) AS TempDate
AUTOGENERATE 1
WHILE $(vDateMin)+IterNo()-1<= $(vDateMax);
Calendario:
LOAD
Date(TempDate,'DD/MM/YYYY') AS Data,
year(TempDate) as Ano,
month(TempDate) as Mes
Resident TempCalendario;
drop table TempCalendario;
//=======================================================================================
[Cal]:
DECLARE FIELD DEFINITION Tagged ('$date')
FIELDS
Dual(Year($1), YearStart($1)) AS [Ano] Tagged ('$axis', '$year'),
Month($1) AS [Mes] Tagged ('$month', '$cyclic'),
Dual(Year($1)&'-'&Month($1), monthstart($1)) AS [Ano-Mes] Tagged ('$axis', '$yearmonth', '$qualified'),
Dual(Month($1), monthstart($1)) AS [_Ano-Mes] Tagged ('$axis', '$yearmonth', '$simplified', '$hidden'),
Date(Floor($1)) AS [Data] Tagged ('$axis', '$date', '$qualified'),
Date(Floor($1), 'D') AS [_Data] Tagged ('$axis', '$date', '$hidden', '$simplified');
DERIVE FIELDS FROM FIELDS [Data] USING [Cal] ;
Obrigado, Alessandro!
Fiz algumas adaptações mas funcionou perfeitamente!
Somente mais um dúvida, é possível adicionar os trimestres ainda?