Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

(Script) Campo calculado com valores de 2 tabelas

Olá pessoal,

Preciso de uma ajuda para criar, no script, um campo calculado (Valor3) com valores de tabelas distintas. Se possível NÃO carregar a Valores1.csv, apenas usar como temporária, é melhor ainda.

// Valores 1

LOAD

          cod_empresa,

          ano_mes,

          valor1

FROM Valores1.csv;

// Valores 2

LOAD

          cod_empresa,

          ano_mes,

//        valor2,

          valor2 - valor1 (carregado da tabela Valores1.csv) as Valor3

FROM Valores2.csv;

Parece que há alguma solução usando ApplyMap, mas não entendi como.

OBS: Estou usando a versão Demo, não consigo abrir outro .QVW.

Obrigado.

Labels (1)
9 Replies
Clever_Anjos
Employee
Employee

// Valores 1

Valores1:

LOAD

          cod_empresa,

          ano_mes,

          valor1

FROM Valores1.csv;

mapa:

mapping load cod_empresa & ano_mes, valor1 resident Valores1;

LOAD

          cod_empresa,

          ano_mes,

//        valor2,

          valor2 - applymap('mapa',cod_empresa & ano_mes,0) as Valor3

FROM Valores2.csv;

Clever_Anjos
Employee
Employee

um detalhe, verifique sempre se seu campo ano_mes está igual nos dois lados.

Uma solução usando join

Valores1:

LOAD

          cod_empresa,

          ano_mes,

          valor1

FROM Valores1.csv;

left join LOAD

          cod_empresa,

          ano_mes,

       valor2

FROM Valores2.csv;

LOAD

     *,

     valor2 - valor1 as valor3

resident Valores1;

Drop table Valores1;

Not applicable
Author

Olá Clever,

Obrigado pela atenção.

Tentei usar sua solução com o JOIN, mas não deu certo. Precisei incluir uma tabela a mais.

No script abaixo, se não dou o DROP, vejo que os são devidamente carregados. Mas o campo calculado valor_final não possui valores.

Valores1:

LOAD cod_empresa,

    ano_mes,

    valor1

FROM Valores1.csv WHERE (ano_mes >= '201301');

JOIN

// Valores2:

// cod_cia's que não estão na Valores1

LOAD cod_empresa,

    ano_mes,

    valor2

FROM Valores2.csv WHERE (ano_mes >= '201301' And cod_empresa >= '10000' And cod_empresa <= '19999');

JOIN

// Valores3:

LOAD cod_empresa,

    ano_mes,

    valor3

FROM Valores3.csv WHERE (ano_mes >= '201301');

Tabela Final:

LOAD cod_empresa,

    ano_mes,

    'x' as cod_prod,

    valor1 + valor2 - valor3 as valor_final

Resident Valores1;

DROP table Valores1;

Clever_Anjos
Employee
Employee

Posta o seu log por favor

Not applicable
Author

Não sei onde gerar este log. Estou no Qlikview demo.

Clever_Anjos
Employee
Employee

Capturar.PNG

Not applicable
Author

Segue o arquivo de log.

Não entendo porque meus posts estão sendo moderados. Isso não acontecia antes.

Clever_Anjos
Employee
Employee

Você teve ter uma tabela chamada PREV_TRAD_PROV: com  2.199 registros.

Pressione Control+T ache essa tabela , clique com o botão direito, "Preview", tire um print e anexe por favor

Not applicable
Author

Aqui estão os Prints.

Na tabela PROV_SEGPREV, o campo PREV_EAPP_PROV parece estar vazio, mas contém dados, conforme visto no print Resultado.

No Resultado, a coluna PREV_TRAD_PROV deveria ser o cálculo feito no final do script.