Muitas vezes
precisamos criar uma tabela contendo um calendário principal baseado em todas
as datas de um determinado período. A vantagem da criação deste calendário é
que podemos trabalhar com diversas informações referente a uma data específica,
por exemplo se selecionarmos a data 27/05/1967 podemos conseguir as seguintes
informações:
Data
|
27/05/1967
|
Dia
|
27
|
Mês
|
mai
|
Ano
|
1967
|
Dia_Na_Semana
|
sáb
|
Dia_No_Trimestre
|
56
|
Dia_No_Ano
|
147
|
Semana
|
21
|
Mes_Ano
|
mai 1967
|
Trimestre
|
2-T
|
Nome_Trimestre
|
abr-jun
|
Para criar
esta tabela vamos utilizar dois recursos muito uteis no Qlikview, o primeiro
deles é o Load sobre Load, este recurso é bastante utilizado quando precisamos
realizar mais de uma transformação no campo antes de disponibilizá-lo e o
segundo é o Autogenerate que se trata de um recurso usado quando se faz
necessário gerar dados automaticamente pelo Qlikview.
Primeiramente
vamos criar duas variáveis para conter as datas de início e fim do nosso
calendário.
LET VDataInicio = Date('01/01/1967');
LET vDataFim = Date(YearEnd(Today()));
LET vDataFim = Date(YearEnd(Today()));
Em seguida para aplicar o
recurso Load sobre load aplicamos um load sobre outro já existente sem a
necessidade das cláusulas “from” ou “residente” terminando o comando com ponto
e virgula conforme exemplo:
MasterCALENDARIO:
LOAD
[Data] as Data,
Day(Data) as Dia,
Month(Data) as Mês,
Year(Data) as Ano,
DayNumberOfQuarter(Data) as Dia_No_Trimestre,
DayNumberOfYear(Data) as Dia_No_Ano,
MonthName(Data) as Mes_Ano,
Left(QuarterName(Data),7) as Nome_Trimestre,
Week(Data) as Semana,
ceil(Month(Data)/3)&'-T' as Trimestre,
WeekDay(Data) as Dia_Na_Semana;
LOAD
Date('$(vDataInicio)' + Recno()-1,'DD/MM/YYYY') as [Data]
AUTOGENERATE(vDataFim-VDataInicio+1);
LOAD
[Data] as Data,
Day(Data) as Dia,
Month(Data) as Mês,
Year(Data) as Ano,
DayNumberOfQuarter(Data) as Dia_No_Trimestre,
DayNumberOfYear(Data) as Dia_No_Ano,
MonthName(Data) as Mes_Ano,
Left(QuarterName(Data),7) as Nome_Trimestre,
Week(Data) as Semana,
ceil(Month(Data)/3)&'-T' as Trimestre,
WeekDay(Data) as Dia_Na_Semana;
LOAD
Date('$(vDataInicio)' + Recno()-1,'DD/MM/YYYY') as [Data]
AUTOGENERATE(vDataFim-VDataInicio+1);
O comando autogenerate é aplicado no
lugar das cláusulas “from” e “residente” atribuindo-se como parâmetro o número
de linhas de registro que deverão ser criadas. O resultado final do script
acima é uma tabela contendo todas as informações de data no período de
01/01/1967 até 31 de dezembro do ano corrente.
Nenhum comentário:
Postar um comentário