Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde pessoal, tudo bem com vocês? Espero que sim !!
Estou com uma dúvida referente um relacionamento entre duas tabelas, onde em uma delas eu tenho uma linha de pedido, onde tenho o valor exato do diâmetro, largura, quantidade. Na outra eu tenho uma listagem de padrão de embalagem, onde eu tenho qual embalagem usa em um determinado intervalo de diâmetro e largura, exemplo:
Tabela do pedido (Carteira):
Pedido | Material | Diâmetro | Largura | Qtd |
1 | Material 1 | 700 | 560 | 10 |
2 | Material 2 | 700 | 560 | 15 |
3 | Material 3 | 700 | 560 | 20 |
4 | Material 4 | 700 | 560 | 20 |
5 | Material 5 | 700 | 565 | 10 |
6 | Material 6 | 700 | 580 | 1 |
7 | Material 7 | 700 | 590 | 10 |
8 | Material 8 | 700 | 590 | 5 |
9 | Material 9 | 700 | 600 | 10 |
10 | Material 10 | 700 | 600 | 5 |
Tabela dos formatos de embalagem (InfotecEmb):
Diâmetro Mínimo | Diâmetro Máximo | Largura Mínima | Largura Máxima | Palete |
611 | 710 | 331 | 370 | D9 |
611 | 710 | 371 | 420 | D10 |
611 | 710 | 421 | 490 | D11 |
611 | 710 | 491 | 570 | D13 |
611 | 710 | 571 | 690 | D8 |
611 | 710 | 691 | 790 | D9 |
471 | 533 | 701 | 790 | B9 |
471 | 533 | 791 | 890 | B10 |
471 | 533 | 891 | 990 | D11 |
Ou seja, quero trazer uma coluna Pallet na tabela de pedido, considerando que a especificação do pedido está entre o mínimo e máximo conforme a tabela de embalagem.
Eu tentei fazer um concatenar entre as tabelas e o if com as regras porém sem sucesso:
If ([Carteira (Diâmetro)]> = [Infotec Emb (Diâmetro Mínimo)]
and [Carteira (Diâmetro)] <= [Infotec Emb (Diâmetro Máximo)]
and [Carteira (Largura)]> = [Infotec Emb (Largura Mínima) ))]
and [Carteira (Largura)] <= [Infotec Emb (Largura Máxima)], [Infotec Emb (Pallet)]) as[Embalagem correta]
Alguém tem experiência com dados nesse formato mínimo e máximo e poderia me auxiliar nesse caso? Agradeço desde já!
Olá, com base nesse seu exemplo, acredito que o IntervalMatch consiga solucionar o problema.
Esse deve ser o resultado que você espera.
Exemplo do Script utilizado.
TMP_Pedido:
Load * Inline [
Pedido,Material,Diâmetro,Largura,Qtd
1,Material 1,700,560,10
2,Material 2,700,560,15
3,Material 3,700,560,20
4,Material 4,700,560,20
5,Material 5,700,565,10
6,Material 6,700,580,1
7,Material 7,700,590,10
8,Material 8,700,590,5
9,Material 9,700,600,10
10,Material 10,700,600,5
];
TMP_Embalagem:
Load * Inline [
Diâmetro Mínimo,Diâmetro Máximo,Largura Mínima,Largura Máxima,Palete
611,710,331,370,D9
611,710,371,420,D10
611,710,421,490,D11
611,710,491,570,D13
611,710,571,690,D8
611,710,691,790,D9
471,533,701,790,B9
471,533,791,890,B10
471,533,891,990,D11
];
Join (TMP_Pedido)
IntervalMatch (Diâmetro) Load [Diâmetro Mínimo], [Diâmetro Máximo] Resident TMP_Embalagem;
Join (TMP_Pedido)
IntervalMatch (Largura) Load [Largura Mínima], [Largura Máxima] Resident TMP_Embalagem;
NoConcatenate
Pedido:
Load Distinct * Resident TMP_Pedido;
Left Join (Pedido)
Load * Resident TMP_Embalagem;
Drop Tables TMP_Embalagem,TMP_Pedido;
Não esquece de marcar se foi atendido com essa sugestão. Assim auxilia demais pessoas da comunidade.
Don't worry, be Qlik.
Tonial.
Olá, com base nesse seu exemplo, acredito que o IntervalMatch consiga solucionar o problema.
Esse deve ser o resultado que você espera.
Exemplo do Script utilizado.
TMP_Pedido:
Load * Inline [
Pedido,Material,Diâmetro,Largura,Qtd
1,Material 1,700,560,10
2,Material 2,700,560,15
3,Material 3,700,560,20
4,Material 4,700,560,20
5,Material 5,700,565,10
6,Material 6,700,580,1
7,Material 7,700,590,10
8,Material 8,700,590,5
9,Material 9,700,600,10
10,Material 10,700,600,5
];
TMP_Embalagem:
Load * Inline [
Diâmetro Mínimo,Diâmetro Máximo,Largura Mínima,Largura Máxima,Palete
611,710,331,370,D9
611,710,371,420,D10
611,710,421,490,D11
611,710,491,570,D13
611,710,571,690,D8
611,710,691,790,D9
471,533,701,790,B9
471,533,791,890,B10
471,533,891,990,D11
];
Join (TMP_Pedido)
IntervalMatch (Diâmetro) Load [Diâmetro Mínimo], [Diâmetro Máximo] Resident TMP_Embalagem;
Join (TMP_Pedido)
IntervalMatch (Largura) Load [Largura Mínima], [Largura Máxima] Resident TMP_Embalagem;
NoConcatenate
Pedido:
Load Distinct * Resident TMP_Pedido;
Left Join (Pedido)
Load * Resident TMP_Embalagem;
Drop Tables TMP_Embalagem,TMP_Pedido;
Não esquece de marcar se foi atendido com essa sugestão. Assim auxilia demais pessoas da comunidade.
Don't worry, be Qlik.
Tonial.
Me ajudou muito Fernando!!! Muito obrigado pela ajuda.
Ainda em tempo, o que acontece se eu tiver mais de um valor de embalagem que entre no mesmo intervalo?
Exemplo (supondo um pedido com Qtd 11 do formato específico):
Pedido:
Pedido | Material | Diâmetro | Largura | Qtd |
1 | Material 1 | 700 | 360 | 11 |
Embalagem:
Por exemplo, nesse caso o pallet D9 pode caber 4 Und do pedido, 2 Und do pedido ou se for 1 Und usa o D8.
Sempre considerando o formato que cabe mais até não mais possível usar ele.
Ou seja, nesse caso usaria 2 vezes o formato D9 - 4 unidades = total 8
1 vez o formato D9 - 2 unidades = total 2
1 vez o formato D8 - 1 unidade = total 1
Tendo uma situação um pouco mais complexa assim, a solução de interval ajudaria?
Nesse cenários acredito que seria mais complicado com o InterlMatch, pois esse registro a quantidade total é 11 e a quantidade de material que cabe todas são menores que isso.