Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
mario_ti
Contributor

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

Tags (1)
1 Solution

Accepted Solutions
MVP
MVP

Re: Nova coluna que não esta nos anteriores

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.

4 Replies
MVP
MVP

Re: Nova coluna que não esta nos anteriores

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.

psilva001
Contributor

Re: Nova coluna que não esta nos anteriores

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
Contributor

Re: Nova coluna que não esta nos anteriores

Deu certo .. obg

mario_ti
Contributor

Re: Nova coluna que não esta nos anteriores

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