Qlik Community

Brasil

Announcements
June 28, 10AM ET: Qlik Nation and Qlik Community present: CyberSleuth REGISTER TODAY
cancel
Showing results for 
Search instead for 
Did you mean: 
mario_ti
Creator
Creator

Nova coluna que não esta nos anteriores

Pessoal

Acho que alguem deve ter passado por isso.

Tenho um QVD com varios meses .. porem precisei add uma nova coluna no extract, dai da erro ao gerar pois informa que a coluna não existe, claro criei ontem (CHAVE do load incremental)

Hoje ao tentar gerar o extract valendo da esse erro, tem alguma forma de eu incluir no QVD essa coluna???

1 Solution

Accepted Solutions
afurtado
MVP
MVP

Mario,

Se a nova coluna para os arquivos antigos não for necessário preencher, basta fazer um loop lendo os QVD e incluir a coluna com null().

FOR Each ArquivoQVD in filelist ('*.qvd')

    Tabela:

    LOAD

      *,

      null()   as NovoCampo

    FROM $(ArquivoQVD) (qvd);

    Store Tabela into '$(ArquivoQVD)' (qvd);

    DROP Table Tabela;

NEXT ArquivoQVD

Mas se precisar popular esta coluna com a nova informação.....então o ideal seria ler o novo campo com somente a chave necessária e incluir na leitura do QVD......

exemplo

FOR Each ArquivoQVD in filelist ('*.qvd')

    Tabela:

    LOAD

      *

    FROM $(ArquivoQVD) (qvd);

   

    left join (Tabela)

    LOAD

       CampoChave1,

       CampoChave2,

       CampoChave3,

       CampoNOVO;

    SELECT C1,C2,C3,CN FROM BANCOSQL....

   

    Store Tabela into '$(ArquivoQVD)' (qvd);

    DROP Table Tabela;

   

NEXT ArquivoQVD;

Lembrar  que se for ler todos os campos do banco de dados necessarios no QVD fica pesado e lento, portanto coloquei como necessário os campos chaves para "ligar" no left join e mais o campo novo.

furtado@farolbi.com.br

View solution in original post

4 Replies
afurtado
MVP
MVP

Mario,

Se a nova coluna para os arquivos antigos não for necessário preencher, basta fazer um loop lendo os QVD e incluir a coluna com null().

FOR Each ArquivoQVD in filelist ('*.qvd')

    Tabela:

    LOAD

      *,

      null()   as NovoCampo

    FROM $(ArquivoQVD) (qvd);

    Store Tabela into '$(ArquivoQVD)' (qvd);

    DROP Table Tabela;

NEXT ArquivoQVD

Mas se precisar popular esta coluna com a nova informação.....então o ideal seria ler o novo campo com somente a chave necessária e incluir na leitura do QVD......

exemplo

FOR Each ArquivoQVD in filelist ('*.qvd')

    Tabela:

    LOAD

      *

    FROM $(ArquivoQVD) (qvd);

   

    left join (Tabela)

    LOAD

       CampoChave1,

       CampoChave2,

       CampoChave3,

       CampoNOVO;

    SELECT C1,C2,C3,CN FROM BANCOSQL....

   

    Store Tabela into '$(ArquivoQVD)' (qvd);

    DROP Table Tabela;

   

NEXT ArquivoQVD;

Lembrar  que se for ler todos os campos do banco de dados necessarios no QVD fica pesado e lento, portanto coloquei como necessário os campos chaves para "ligar" no left join e mais o campo novo.

furtado@farolbi.com.br
psilva001
Creator
Creator

Faz o seguinte,

1-Carregue seu qvd em uma tabela, por exemplo:

[TabelaTeste]:

LOAD

*

FROM [...SeuQVD.qvd](qvd);

2-Crie um INLINE com esta nova coluna:

[InlineTemp]:

LOAD * INLINE

[NovaColuna

''

];

3-Junta o INLINE com a Tabela do QVD:

CONCATENATE([TabelaTeste])

LOAD

    [NovaColuna]

RESIDENT [InlineTemp];

4-Depois é só gravar tudo no qvd e apagar a tabela

STORE [Tabela Teste] INTO [...SeuQVD.qvd](qvd);

DROP TABLE [TabelaTeste];

mario_ti
Creator
Creator
Author

Deu certo .. obg

mario_ti
Creator
Creator
Author

Obrigado Paulo, vou testar este modo também ... Obg