domingo, 27 de abril de 2014

Master Calendário - Load sobre Load - Autogenerate

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(Dataas Dia,Month(Dataas Mês,Year(Dataas Ano,DayNumberOfQuarter(Dataas Dia_No_Trimestre,DayNumberOfYear(Dataas Dia_No_Ano,MonthName(Dataas Mes_Ano,Left(QuarterName(Data),7) as Nome_Trimestre,Week(Dataas Semana,ceil(Month(Data)/3)&'-T' as Trimestre,WeekDay(Dataas 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