6 Replies Latest reply: Jul 21, 2016 7:57 AM by Guilherme Rigonato RSS

    Calêndário Cíclico

    Guilherme Rigonato

      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;

        • Re: Calêndário Cíclico
          Alessandro Furtado

          Rigonato,

           

          você tem que usar o   derive

           

          http://help.qlik.com/en-US/sense/3.0/Subsystems/Hub/Content/Scripting/ScriptRegularStatements/Derive.htm

           

          no teu caso deve ser assim:

           

          DERIVE FIELDS FROM FIELDS Ano,Mês,Data USING Tabela_de_Datas;

            • Re: Calêndário Cíclico
              Guilherme Rigonato

              No meu script como ficaria?

              Eu não entendi muito bem a lógica...

                • Re: Calêndário Cíclico
                  Alessandro Furtado

                  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.....

                    • Re: Calêndário Cíclico
                      Guilherme Rigonato

                      Então, eu tentei e ele aparece o erro "unknown definition"

                        • Re: Calêndário Cíclico
                          Alessandro Furtado

                          Segue um modelo com script que funciona.

                           

                          datas.gif

                           

                          //=======================================================================================

                          //

                          // 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] ;