Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Dúvida recarga parcial

Boa tarde pessoal.

Quero executar uma recarga parcial de uma tabela com concatenate, porém a recarga não é executada corretamente, ele só carrega um dos qvds.

Exemplo:

Arrecadação_Faturamento:

Replace

LOAD AutoNumberHash128(RARR_ID&ARRFATTIPO),

     RARR_AMREFERENCIA,

     //GREG_ID,

     LOCA_ID,

     CATG_ID,

     RCTP_ID,

     RCTP_DSRECEBIMENTOTIPO,

     LCTP_ID,

     LCTP_DSTIPOLANCAMENTO,

     LCIT_ID,

     LCIT_DSITEMLANCAMENTO,

     LICT_ID,

     LICT_DSITEMLANCAMENTOCONTABIL,

     RARR_NNSEQUENCIATIPOLANCAMENTO,

     RARR_NNSEQITEMTPLANC,

     //RARR_TMULTIMAALTERACAO,

     RARR_VLITEMARRECADACAO,

     //UNEG_ID

     ARRFATTIPO

FROM

$(v_QVDs_Dimensoes)\Arrecadacao_ordenada.qvd

(qvd);

Concatenate

Replace

LOAD AutoNumberHash128(RFAT_ID&ARRFATTIPO),

     LCTP_ID,

     LCTP_DSTIPOLANCAMENTO,

     RFAT_AMREFERENCIA,

     LCIT_ID,

     LCIT_DSITEMLANCAMENTO,

     LICT_ID,

     LICT_DSITEMLANCAMENTOCONTABIL,

     RFAT_VLITEMFATURAMENTO,

     LOCA_ID,

     CATG_ID,

     //GREG_ID,

     RFAT_NNSEQUENCIATIPOLANCAMENTO,

     RFAT_NNSEQITEMTPLANC,

     //RFAT_TMULTIMAALTERACAO

     //UNEG_ID

     ARRFATTIPO

FROM

$(v_QVDs_Dimensoes)\Faturamento_ordenado.qvd

(qvd);

1 Solution

Accepted Solutions
cesaraccardi
Specialist
Specialist

Olá Edécio, tente assim:

REPLACE


LOAD * INLINE
[A,B,C
1,2,3
3,4,5]
;

Concatenate
ADD
LOAD * INLINE
[A,B
5,6
7,8]
;


Abraços.

Cesar

View solution in original post

8 Replies
aderlanrm
Partner - Specialist
Partner - Specialist

Olá Edecio,

Tenta o código abaixo.

Arrecadação_Faturamento:

Replace

LOAD AutoNumberHash128(RARR_ID&ARRFATTIPO) as CHAVE,

     ARRFATTIPO,

     CATG_ID,

     LCIT_DSITEMLANCAMENTO,

     LCIT_ID,

     LCTP_DSTIPOLANCAMENTO,

     LCTP_ID,

     LICT_DSITEMLANCAMENTOCONTABIL,

     LICT_ID,

     LOCA_ID,

     RARR_AMREFERENCIA,

     RARR_NNSEQITEMTPLANC,

     RARR_NNSEQUENCIATIPOLANCAMENTO,

     RARR_VLITEMARRECADACAO,

     RCTP_DSRECEBIMENTOTIPO,

     RCTP_ID,

     Null() as RFAT_AMREFERENCIA,

     Null() as RFAT_NNSEQITEMTPLANC,

     Null() as RFAT_NNSEQUENCIATIPOLANCAMENTO,

     Null() as RFAT_VLITEMFATURAMENTO

FROM $(v_QVDs_Dimensoes)\Arrecadacao_ordenada.qvd (qvd);

Replace

LOAD AutoNumberHash128(RFAT_ID&ARRFATTIPO) as CHAVE,

     ARRFATTIPO,

     CATG_ID,

     LCIT_DSITEMLANCAMENTO,

     LCIT_ID,

     LCTP_DSTIPOLANCAMENTO,

     LCTP_ID,

     LICT_DSITEMLANCAMENTOCONTABIL,

     LICT_ID,

     LOCA_ID,

     Null() as RARR_AMREFERENCIA,

     Null() as RARR_NNSEQITEMTPLANC,

     Null() as RARR_NNSEQUENCIATIPOLANCAMENTO,

     Null() as RARR_VLITEMARRECADACAO,

     Null() as RCTP_DSRECEBIMENTOTIPO,

     Null() as RCTP_ID,

     RFAT_AMREFERENCIA,

     RFAT_NNSEQITEMTPLANC,

     RFAT_NNSEQUENCIATIPOLANCAMENTO,

     RFAT_VLITEMFATURAMENTO

FROM $(v_QVDs_Dimensoes)\Faturamento_ordenado.qvd (qvd);

O QV concatena automaticamente tadas as tabelas carregadas, que tem todos os nomes des campos iguais, então basta "criar" um campo com valor nulo nas tabelas onde o campo não existe, que o QV faz o resto.

Abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable
Author

Aderlan, muito obrigado por sua ajuda mas não funcionou da forma como você informou.

Utilizando os dois replaces, ele substituí o nodo da nuvem, entretanto só traz informações do segundo load (segundo qvd). Ele não está concatenando o resultado.

Se precisar de mais algum detalhe é só avisar.

Att,

Edécio.

cesaraccardi
Specialist
Specialist

Olá Edécio,

eu já tive esse mesmo problema que você está tendo com a recarga parcial. Normalmente eu evito o REPLACE/ADD e se possível rodo com carga limitada na opção Debug, mas se ainda sim for mais viável a recarga parcial para você tente executar com somente um comando replace no início da carga, porque o segundo substitui os dados carregados pelo primeiro

Abraços,

Cesar.

Not applicable
Author

Cesar, obrigado pela resposta.

Já foi feito usando o replace só no primeiro load, porém ele gera duas tabelas e não uma concatenada. Seria melhor utilizar o replace devido a grande quantidade de dados carregados (A carga dura em média 1:30h).

Att,

Edécio.

aderlanrm
Partner - Specialist
Partner - Specialist

Edecio,

O que exatamente você está tendando fazer?

Você tem uma tabela com vários e campos  e muitas linhas, e outra com campos similares a muitas linhas também, certo?

Você quer colcar uma tabela "embaixo" da outra ou precisa colocar os campos da segunda tabela ao lado da primeira?

Ex:

TAB1:

A     B

1     X

2     Y

3     W

TAB2:

A     C

1     H

2     J

Resultado:

A     B     C

1     X     H

2     Y     J

3     W     -

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable
Author

Aderlan, obrigado pela resposta.

Eu quero concatenar mesmo e não realizar uma inner join. Quero uma tabela abaixo da outra.

Att,

Edécio.

cesaraccardi
Specialist
Specialist

Olá Edécio, tente assim:

REPLACE


LOAD * INLINE
[A,B,C
1,2,3
3,4,5]
;

Concatenate
ADD
LOAD * INLINE
[A,B
5,6
7,8]
;


Abraços.

Cesar

Not applicable
Author

Cesar, muito obrigado por sua resposta e peço desculpas por não ter respondido antes, me faltou tempo.

Sua solução funcionou com o concatenate add, porém tive que executar um drop table antes da tabela.

Obrigado pela ajuda!