Qlik Community

Ask a Question

Brasil

Announcements
Join us March 10th, 7 Ways Modern Analytics Can Help You Take Smarter Action. REGISTER NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
amdantas
Contributor II
Contributor II

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.

Business Intelligence Analyst
SkyGroup - Maringá - Paraná

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')))

Business Intelligence Analyst
SkyGroup - Maringá - Paraná
amdantas
Contributor II
Contributor II

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.

Business Intelligence Analyst
SkyGroup - Maringá - Paraná

View solution in original post

amdantas
Contributor II
Contributor II

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
MVP & Luminary
MVP & Luminary

afurtado_0-1601741994494.png

 

Creio que da para fazer usando o intervalmatch

 

furtado@farolbi.com.br