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()));
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);
[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