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: 
luizclaudio
Creator
Creator

Criar campo calculado no script

Preciso calcular descontos de acordo com o ano de vencimento de contribuições.

O desconto concedido é diferente para cada ano.

Para isso criei a carga de valores no script da seguinte forma:

Desconto:

Load * Inline

[Exercicio, Fator_desconto

2007,0

2008,0

2009,50

2010,40

2011,35

2012,30

2013,25

2014,10]

;

Na sequência faço carga dos dados do SQL.

SQL SELECT "Processo_ID",

    "Corretor ID" as Corretor_ID,

    "Tipo Contribuicao",

    Exercicio,

    Parcela,

"Valor Contribuicao",

    "Data Vencimento",

    "Data Pagamento",

    "Valor Contribuicao"+Multa+Juros as "Valor Pago",

    Multa,

    Juros,

    Pago

FROM SINCOR.dbo."Contribuicoes Sabro_Qlik";

Minha questão é: como criar os campos:

valor do desconto

valor a pagar

Como faço no script a relação entre o campo Exercicio de cada tabela para identificar o desconto a ser concedido?

Labels (1)
1 Solution

Accepted Solutions
fernando_tonial
Employee
Employee

Olá Luiz, boa noite.

Veja se assim lhe atende.

MAP_Desconto:

Mapping

Load * Inline

[Exercicio, Fator_desconto

2007,0

2008,0

2009,50

2010,40

2011,35

2012,30

2013,25

2014,10]

;

Dados:

LOAD

Processo_ID

,Corretor_ID

,[Tipo Contribuicao]

,Exercicio

,FatorDesconto

,Parcela

,[Valor Contribuicao]

,[Data Vencimento]

,[Data Pagamento]

,[Valor Pago]*(1-(FatorDesconto/100)) as ValorComDesconto

,[Valor Pago]

,Multa

,Juros

,Pago;
LOAD

Processo_ID

,Corretor_ID

,[Tipo Contribuicao]

,Exercicio

,ApplyMap('MAP_Desconto',Exercicio) As FatorDesconto

,Parcela

,[Valor Contribuicao]

,[Data Vencimento]

,[Data Pagamento]

,[Valor Pago]

,Multa

,Juros

,Pago

;

SQL SELECT "Processo_ID",

    "Corretor ID" as Corretor_ID,

    "Tipo Contribuicao",

    Exercicio,

    Parcela,

"Valor Contribuicao",

    "Data Vencimento",

    "Data Pagamento",

    "Valor Contribuicao"+Multa+Juros as "Valor Pago",

    Multa,

    Juros,

    Pago

FROM SINCOR.dbo."Contribuicoes Sabro_Qlik";

Qlikfique-se.

Tonial.

Don't Worry, be Qlik.

View solution in original post

5 Replies
fernando_tonial
Employee
Employee

Olá Luiz, boa noite.

Veja se assim lhe atende.

MAP_Desconto:

Mapping

Load * Inline

[Exercicio, Fator_desconto

2007,0

2008,0

2009,50

2010,40

2011,35

2012,30

2013,25

2014,10]

;

Dados:

LOAD

Processo_ID

,Corretor_ID

,[Tipo Contribuicao]

,Exercicio

,FatorDesconto

,Parcela

,[Valor Contribuicao]

,[Data Vencimento]

,[Data Pagamento]

,[Valor Pago]*(1-(FatorDesconto/100)) as ValorComDesconto

,[Valor Pago]

,Multa

,Juros

,Pago;
LOAD

Processo_ID

,Corretor_ID

,[Tipo Contribuicao]

,Exercicio

,ApplyMap('MAP_Desconto',Exercicio) As FatorDesconto

,Parcela

,[Valor Contribuicao]

,[Data Vencimento]

,[Data Pagamento]

,[Valor Pago]

,Multa

,Juros

,Pago

;

SQL SELECT "Processo_ID",

    "Corretor ID" as Corretor_ID,

    "Tipo Contribuicao",

    Exercicio,

    Parcela,

"Valor Contribuicao",

    "Data Vencimento",

    "Data Pagamento",

    "Valor Contribuicao"+Multa+Juros as "Valor Pago",

    Multa,

    Juros,

    Pago

FROM SINCOR.dbo."Contribuicoes Sabro_Qlik";

Qlikfique-se.

Tonial.

Don't Worry, be Qlik.
luizclaudio
Creator
Creator
Author

Bom dia Fernando

  Sem querer abusar de sua boa vontade, mas abusando...rsrs

Acabei não colocando na questão a carga de uma outra tabela onde consta o descritivo das contribuições.

E não sei como fazer essa vinculação.

// Carrega os tipos de Contribuição

SQL SELECT "Dado_ID" as "Tipo Contribuicao",

    UPPER(Dado) as Contribuição,

    DadDadosTipoID

FROM SINCOR.dbo.Dados

WHERE Dado_ID > 1668 and Dado_ID < 1672 and Dado_ID<> 1670;

E sobre abusar que falei acima: vou tentar entender o script que vc escreveu, pois não adianta apenas colar e executar, certo?

E aí vou te incomodar, se for possível, claro... rsrs

Abraços

Luiz Cláudio

fernando_tonial
Employee
Employee

Olá Luiz, bom dia.

Quando você carrega essa segunda tabela ela já efetua a associação entre as duas tabelas, pois existe um campo em comum entre elas ([Tipo Contribuicao]), ficando esse campo como chave, isso já o suficiente para a análise das informações.

Você realmente necessita colocar as informações de segundo SQL na mesma tabela do Primeiro SQL?

Qlikfique-se.

Tonial.

Don't Worry, be Qlik.
luizclaudio
Creator
Creator
Author

Foi o que tinha pensado...

Mas já encontrei o problema.

O script estava dando erro, mas acho que era por causa da posição onde havia colocado a carga dessa tabela.

Coloquei no final do script e funcionou sem problema.

Agora vou estudar esse mapeamento para entender melhor o processo e "qlikficar-me" mais...rsrs

Abraços

fernando_tonial
Employee
Employee

Esse processo de mapeamento é simples. O QlikView irá fazer um de/para, onde a primeira coluna é o campo que ele irá comparar e a segunda coluna é resultado caso ele encontre o valor na primeira.

Nesse caso, utilizamos a função ApplyMap para que o mapeamento ocorra.

Qlikfique-se.

Tonial.

Don't Worry, be Qlik.