Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
cancel
Showing results for 
Search instead for 
Did you mean: 
Cipolla
Contributor II
Contributor II

Regras com dois "For" na carga.

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

Labels (2)
1 Solution

Accepted Solutions
elvis_schwarz
Creator
Creator

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;

View solution in original post

4 Replies
elvis_schwarz
Creator
Creator

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;

Cipolla
Contributor II
Contributor II
Author

Elvis, bom dia!

Deu certo, muito obrigado!!

Att,

Cipolla
Contributor II
Contributor II
Author

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

elvis_schwarz
Creator
Creator

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;