4 Replies Latest reply: Sep 5, 2018 1:52 PM by Elvis Schwarz RSS

    Regras com dois "For" na carga.

    Marcel Cipolla

      Prezados, boa noite!

       

      Estou efetuando uma carga de dados de 2017 e de 2018 que estão em QVDs separados por meses, porém, gostaria de separa-los em tabelas (tabela 2017 e tabela 2018) para trabalhar facilmente com os dados, porém, ao usar a carga com dois "For" o qlik não está entendendo que quero separar os dados e armazena tudo na primeira tabela "AnoAnterior:", conforme exemplo abaixo:

       

      Segue script:

       

      ////// 2017 Exemplo

      Let VsAnoAtual =    Year(Today());

      Let VsAnoAnterior = Year(Today())-1;

       

       

      for v_ano = VsAnoAnterior to VsAnoAnterior

       

       

      for v_mes = 01 to 01

         

          v_mes_f = Num(v_mes, '00')

             

              IF FileSize('lib://DADOS/VDA_VendaDia_$(v_ano)_$(v_mes_f).QVD') > 0 THEN

             

      Trace CARREGANDO ANO $(v_ano) MES $(v_mes_f);

       

       

                 AnoAnterior: //// TABELA REFERENTE AO ANO DE 2017

                  LOAD

                      DATA,

            NRO_EMPRESA,

          SEQPRODUTO,

              NRO_SEGMENTO,

          CGO,

          QTDE,

              VALOR,

          SK_CATEGORIA

                  FROM [lib://DADOS/VDA_VendaDia_$(v_ano)_$(v_mes_f).QVD](qvd)

                  WHERE NRO_EMPRESA < 500;

       

       

              ELSE

                  Trace O QVD de ANO $(v_ano) MES $(v_mes_f) Não existe....;

              ENDIF; 

        next

         

      next

       

      ///////////////////////////////////////////////////////////////////////////////////// SEGUNDO SCPRIT//////////////////////////////////////

       

      for v_ano = VsAnoAtual to VsAnoAtual

       

       

      for v_mes = 01 to 12

         

          v_mes_f = Num(v_mes, '00')

             

              IF FileSize('lib://DADOS/VDA_VendaDia_$(v_ano)_$(v_mes_f).QVD') > 0 THEN

             

      Trace CARREGANDO ANO $(v_ano) MES $(v_mes_f);

       

       

                   AnoAtual: //// TABELA REFERENTE AO ANO DE 2018

                  LOAD

                      DATA,

            NRO_EMPRESA,

          SEQPRODUTO,

              NRO_SEGMENTO,

          CGO,

          QTDE,

              VALOR,

          SK_CATEGORIA

                  FROM [lib://DADOS/VDA_VendaDia_$(v_ano)_$(v_mes_f).QVD](qvd)

                  WHERE NRO_EMPRESA < 500;

       

       

              ELSE

                  Trace O QVD de ANO $(v_ano) MES $(v_mes_f) Não existe....;

              ENDIF; 

        next

         

      next

        • Re: Regras com dois "For" na carga.
          Elvis Schwarz

          Bom dia
          Utiliza NoConcatenate antes do nome da tabela AnoAtual


                      NoConcatenate AnoAtual: //// TABELA REFERENTE AO ANO DE 2018

                      LOAD

                          DATA,

                NRO_EMPRESA,

              SEQPRODUTO,

                  NRO_SEGMENTO,

              CGO,

              QTDE,

                  VALOR,

              SK_CATEGORIA

                      FROM [lib://DADOS/VDA_VendaDia_$(v_ano)_$(v_mes_f).QVD](qvd)

                      WHERE NRO_EMPRESA < 500;

            • Re: Regras com dois "For" na carga.
              Marcel Cipolla

              Elvis, bom dia!

               

              Deu certo, muito obrigado!!

               

              Att,

              • Re: Regras com dois "For" na carga.
                Marcel Cipolla

                Elvis, boa tarde!

                 

                Na verdade o  "NoConcatenate" deu certo parcialmente.

                 

                O Qlik não concatena as tabelas, porém, quando uso com o FOR, ele cria uma tabela interna para cada mês.

                 

                Segue anexo exemplo.

                Screenshot_1.jpg

                 

                for v_ano = VsAnoAtual to VsAnoAtual

                 

                 

                for v_mes = 01 to 03

                   

                    v_mes_f = Num(v_mes, '00')

                               

                        IF FileSize('lib://DADOS/VDA_VendaDia_$(v_ano)_$(v_mes_f).QVD') > 0 THEN

                       

                Trace CARREGANDO ANO $(v_ano) MES $(v_mes_f);

                                   

                            NoConcatenate

                            AnoAtual: //// TABELA REFERENTE AO ANO DE 2018

                            LOAD

                                DATA,

                      NRO_EMPRESA,

                    SEQPRODUTO,

                        NRO_SEGMENTO,

                    CGO,

                    QTDE,

                        VALOR,

                    SK_CATEGORIA

                            FROM [lib://DADOS/VDA_VendaDia_$(v_ano)_$(v_mes_f).QVD](qvd)

                            WHERE NRO_EMPRESA < 500

                            ;

                 

                 

                        ELSE

                            Trace O QVD de ANO $(v_ano) MES $(v_mes_f) Não existe....;

                        ENDIF; 

                  next

                   

                next

                  • Re: Regras com dois "For" na carga.
                    Elvis Schwarz

                    Outra forma é você retirar o NoConcatenate da tabela AnoAtual inserir uma coluna fake no primeiro for que tem a tabela AnoAnterior para a estrutura das tabela ficarem diferentes, e depois de rodar o segundo for excluir a coluna fake. Ex:

                    ////// 2017 Exemplo

                    Let VsAnoAtual =    Year(Today());

                    Let VsAnoAnterior = Year(Today())-1;

                     

                     

                    for v_ano = VsAnoAnterior to VsAnoAnterior

                     

                     

                    for v_mes = 01 to 01

                     

                        v_mes_f = Num(v_mes, '00')

                        

                            IF FileSize('lib://DADOS/VDA_VendaDia_$(v_ano)_$(v_mes_f).QVD') > 0 THEN

                        

                    Trace CARREGANDO ANO $(v_ano) MES $(v_mes_f);

                     

                     

                              AnoAnterior: //// TABELA REFERENTE AO ANO DE 2017

                                LOAD

                                    DATA,

                          NRO_EMPRESA,

                        SEQPRODUTO,

                            NRO_SEGMENTO,

                        CGO,

                        QTDE,

                            VALOR,

                        SK_CATEGORIA,

                        '1'                               as CampoDiferenciaEstrutura

                                FROM [lib://DADOS/VDA_VendaDia_$(v_ano)_$(v_mes_f).QVD](qvd)

                                WHERE NRO_EMPRESA < 500;

                     

                     

                            ELSE

                                Trace O QVD de ANO $(v_ano) MES $(v_mes_f) Não existe....;

                            ENDIF;

                      next

                     

                    next

                     

                    for v_ano = VsAnoAtual to VsAnoAtual

                     

                     

                    for v_mes = 01 to 03

                      

                        v_mes_f = Num(v_mes, '00')

                                  

                            IF FileSize('lib://DADOS/VDA_VendaDia_$(v_ano)_$(v_mes_f).QVD') > 0 THEN

                          

                    Trace CARREGANDO ANO $(v_ano) MES $(v_mes_f);

                                      

                               //NoConcatenate

                                AnoAtual: //// TABELA REFERENTE AO ANO DE 2018

                                LOAD

                                    DATA,

                          NRO_EMPRESA,

                        SEQPRODUTO,

                            NRO_SEGMENTO,

                        CGO,

                        QTDE,

                            VALOR,

                        SK_CATEGORIA

                                FROM [lib://DADOS/VDA_VendaDia_$(v_ano)_$(v_mes_f).QVD](qvd)

                                WHERE NRO_EMPRESA < 500

                                ;

                     

                     

                            ELSE

                                Trace O QVD de ANO $(v_ano) MES $(v_mes_f) Não existe....;

                            ENDIF;

                      next

                      

                    next

                     

                    Drop Field CampoDiferenciaEstrutura;