Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
marcelvinicius
Contributor III

Load Incremental para atualizar somente

Bom dia Pessoal, como vão?

Estou com uma dúvida/problema: tenho um Load incremental que esta rodando certinho. Porém se eu rodo a mesma data de consulta ele só soma arquivos ao invés de só atualiza-los. Eu não sei como fazer para ele excluir e atualizar.

Obs.: Retorno dados de uma procedure e a mesma não tem chave primária.

LET vrDataIni  = Date(MonthStart(Today()),'YYYY/MM/DD'); //Primeiro dia do mes

LET vrDataFim  = Date(MonthEnd(Today()),'YYYY/MM/DD'); //Ultimo dia do mes

LET vrMes = Date(MonthStart(Today()), 'DD/MM/YYYY'); //Mes ativo

LET vrAnoQvd = Date(MonthStart(Today()), 'YYYY'); //Ano ativo

Consumo Itens:

//*EXECUTE dbo.GetItemConsumo @Empresa, @Estabelecimento, @DtInicio, @DtFim*/

SQl Execute dbo.GetItemConsumo '1', '1', '$(vrDataIni)','$(vrDataFim)';

Consumo Anterior:

LOAD * FROM [lib://itens/consumoitens_$(vrAnoQvd).qvd] (qvd);

Concatenate

Get Consumo Itens:

SQL SELECT * FROM ##GetItemConsumo;

Store Get Consumo Itens into [lib://itens/consumoitens_$(vrAnoQvd).qvd] (qvd);

Tags (1)
1 Solution

Accepted Solutions
mario_sergio_ti
Valued Contributor

Re: Load Incremental para atualizar somente

Amigo, é no Load mesmo;

Utiliza a declaração Load antes do SQL;

Exemplo:

Load

    Hash128(Código, Descricao, Identificaçao, DataMovimento) As 'SK_TAB1',

    *;

SQL

     SELECT

          *

     FROM ##GetItemConsumo;

18 Replies
marcelvinicius
Contributor III

Re: Load Incremental para atualizar somente

Obs. 2: Verifiquei o retorno direto da procedure e a mesma traz esses campos:

Código, Descricao, Identificaçao, DataMovimento - consigo concatena-los para ser chave primária?

Exemplo: não posso passar somente um deles pois pode ter mais consumos do mesmo tipo de item em datas diferentes:

1AA  BUCHA  CA001  27/01/2017 00:00:00

1AA  BUCHA  CC191  18/01/2017 00:00:00

1AA  BUCHA  CC171  07/01/2017 00:00:00

1AA  BUCHA  CA010  26/01/2017 00:00:00

1AA  BUCHA  CC194  22/01/2017 00:00:00

1AA  BUCHA  CC196  04/01/2017 00:00:00

marcelvinicius
Contributor III

Re: Load Incremental para atualizar somente

Bom dia, alguém pode me ajudar?

Sabe como concatenar informações na hora do select?

marcelvinicius
Contributor III

Re: Load Incremental para atualizar somente

Alguém pode ajudar?

mario_sergio_ti
Valued Contributor

Re: Load Incremental para atualizar somente

Amigo, segue exemplo para gerar chave exclusiva:

Hash128( Código, Descricao, Identificaçao, DataMovimento) As 'SK_TAB1',

A função Hash128() gera 22 caracteres e o resultado é persistente, já em seu conjunto... Se optar em utilizar &' '& para concatenar os campos, parece que o resultado poderá ser superior a 22 caracteres.

mario_sergio_ti
Valued Contributor

Re: Load Incremental para atualizar somente

Sobre performance,

Lembrando que a representação do hash ficará na tabela de símbolos, porém a tratativa interna para possíveis associações no modelo de dados será com a tabela de dados que é a representado por binários (que são como ponteiros para as tabelas de símbolos).

mario_sergio_ti
Valued Contributor

Re: Load Incremental para atualizar somente

marcelvinicius
Contributor III

Re: Load Incremental para atualizar somente

Boa tarde Mario,

Obrigado pela dica. Essa função concatena essas colunas? Eu coloco no Load ou no Select?

Ao rodar no meu Select:

Ocorreram os seguintes erros:

ErrorSource: Microsoft OLE DB Provider for SQL Server, ErrorMsg: 'Hash128' is not a recognized built-in function name.

O erro ocorreu aqui:

SQL SELECT Hash128(Código, Descricao, Identificaçao, DataMovimento) As 'SK_TAB1' FROM ##GetItemConsumo

mario_sergio_ti
Valued Contributor

Re: Load Incremental para atualizar somente

Amigo, é no Load mesmo;

Utiliza a declaração Load antes do SQL;

Exemplo:

Load

    Hash128(Código, Descricao, Identificaçao, DataMovimento) As 'SK_TAB1',

    *;

SQL

     SELECT

          *

     FROM ##GetItemConsumo;

marcelvinicius
Contributor III

Re: Load Incremental para atualizar somente

Muito obrigado Mario,

Ta funcionando, estou com outros problemas mas posto ajuda depois.

Atenciosamente.