Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
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
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.
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')))
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
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.
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.
Creio que da para fazer usando o intervalmatch