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

Como fazer um Join Condicional no Qlik Sense ?

Pessoal, boa tarde.

Gostaria de saber como faço um join condicional no Qlik Sense sendo que a condição é baseada em uma faixa de valores.

No caso classificamos os clientes em A, B ou C baseado no valor faturado para cada um.

Montei um exemplo simples abaixo para demonstrar como são as tabelas e como eu faço isso no SQL Server.

Agradeço qualquer orientação.

 

questão_qlik.png

Abaixo mostro como eu resolveria se fosse fazer esse Join no SQL:

SELECT
    VD.Cliente,
    FX.Faixa,
    VD.Vendas
From
    VENDAS VD
Inner Join
    FAIXAS FX on VD.Vendas BETWEEN FX.MinimoN and FX.Maximo

1 Solution

Accepted Solutions
RafaMartins
Creator II
Creator II

No SQL a função between está criando um conto de intersecção entre as tabela dizendo "onde a venda estiver nesse intervalo junte isso"

No Qlik não temos como criar essa intersecção por intervalo e também não podemos referenciar um campo de outra tabela dentro da carga de outra, por isso a expressão mesmo usando <> para criar um intervalo não funcionaria para realizar esse join.

Lembrando que o Qlik não é uma ferramenta completa para ETL, algumas coisas podem ser feitas diretamente no Qlik más para alguns caso é necessário utilizar uma ferramenta mais completa para a transformação.

View solution in original post

5 Replies
RafaMartins
Creator II
Creator II

No Qlik não há nem uma função que equivalha a Between, uma opção para criar algo que atinja sua necessidade seria replicar as faixas de valores com um if na tabela de vendas;

if(Vendas =< '3000','C',if( Vendas => '5000' and =< '10000' ,'B',if(Venda > '10000','A')))

amdantas
Contributor III
Contributor III
Author

Então, a questão nem é o Between em si. Consigo substituir por >= e <= nas faixas, como vc bem disse.

O meu problema é como fazer esse tipo de JOIN em tabelas qvd, isso que eu não consegui.

Se eu fizer da forma abaixo no SQL ele funciona. Tentei fazer no Qlik com tabela qvd e não deu certo.

Inner Join FAIXAS FX on VD.Vendas >= FX.MinimoN and VD.Vendas <= FX.Maximo

RafaMartins
Creator II
Creator II

No SQL a função between está criando um conto de intersecção entre as tabela dizendo "onde a venda estiver nesse intervalo junte isso"

No Qlik não temos como criar essa intersecção por intervalo e também não podemos referenciar um campo de outra tabela dentro da carga de outra, por isso a expressão mesmo usando <> para criar um intervalo não funcionaria para realizar esse join.

Lembrando que o Qlik não é uma ferramenta completa para ETL, algumas coisas podem ser feitas diretamente no Qlik más para alguns caso é necessário utilizar uma ferramenta mais completa para a transformação.

amdantas
Contributor III
Contributor III
Author

Pois é, pude perceber isso.

Tive que fazer esse tratamento na carga do Banco mesmo e não pelo QVD.

 

Obrigado pelo retorno, Rafael. Confirmou minhas suspeitas.

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

afurtado_0-1601741994494.png

 

Creio que da para fazer usando o intervalmatch

 

furtado@farolbi.com.br