Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, boa tarde.
Tenho uma duvida, e gostaria da ajuda de vocês. No excel eu consigo fazer isso tranquilamente, mas quando tentei fazer no Qlik Sense, estou com dificuldades
Eu tenho uma tabela com da seguinte maneira
Item NF | Pedido | Item Pedido | Valor | ||
---|---|---|---|---|---|
5100184666/000001/2017 | 4500000072 |
|
| ||
5100185702/000001/2017 | 4500000072 |
| 2550,71 | ||
5100185701/000001/2017 | 4500000072 |
| 3772,03 |
Meu objetivo é criar uma coluna adicional que vai me informar o 'range' de valor que a coluna 'Pedido' se enquadra, por exemplo:
Pedido | Valor | Range |
---|---|---|
4500000072 | 6.322,74 | > 5K |
Meu maior problema é em conseguir criar a coluna 'Valor' para somar enquanto tiver o Pedido '4500000072', pois sei que a coluna 'Range' é um 'If'
Olá Atila,
Para o que você quer, ficaria melhor se fosse um IntervalMatch() se entendi direito.
Segue um exemplo abaixo:
Dados:
Load * Inline
[
Item NF, Pedido, Item Pedido, Valor
5100184666/000001/2017 ,4500000072 ,1,0
5100185702/000001/2017 ,4500000072 ,1,2550
5100185701/000001/2017 ,4500000072 ,1,3772
5100185705/000001/2017 ,4500000072 ,1,9999
];
DePara:
Load * Inline
[
De,Para,Desc
0,4999,Menor que 5k
5000,10000,Maior que 5k
];
IntervalMatch(Valor)
Left join (Dados)
Load
De,
Para
Resident DePara;
left join(Dados)
Load
De,
Para,
Desc
Resident DePara;
drop fields De,Para from Dados;
drop table DePara;
Que dá o seguinte:
Boa tarde,
Não sei se entendi direito, mas segue um exemplo
Olá Atila,
Para o que você quer, ficaria melhor se fosse um IntervalMatch() se entendi direito.
Segue um exemplo abaixo:
Dados:
Load * Inline
[
Item NF, Pedido, Item Pedido, Valor
5100184666/000001/2017 ,4500000072 ,1,0
5100185702/000001/2017 ,4500000072 ,1,2550
5100185701/000001/2017 ,4500000072 ,1,3772
5100185705/000001/2017 ,4500000072 ,1,9999
];
DePara:
Load * Inline
[
De,Para,Desc
0,4999,Menor que 5k
5000,10000,Maior que 5k
];
IntervalMatch(Valor)
Left join (Dados)
Load
De,
Para
Resident DePara;
left join(Dados)
Load
De,
Para,
Desc
Resident DePara;
drop fields De,Para from Dados;
drop table DePara;
Que dá o seguinte:
Felipe, obrigado de novo pela resposta, mas na verdade ainda não seria exatamente isso que preciso.
Seguindo exatamente o seu exemplo, o objetivo é que a coluna 'Valor' tenha a soma dos pedidos, entende?
Na verdade, eu nao sei ao certo se consigo fazer o que preciso.
Usando o excel, por exemplo, eu faria uma tabela dinamica e colocaria os meus pedidos em uma coluna e valores em outra. Criaria a coluna com os Ranges que gostaria, e teria a tabela. Feito isso, criaria uma tabela adicional para contar <5K ou contar >5K, assim como, somar <5K e somar >5K, pra ter o seguinte resultado final:
Range | Qtde Pedidos | Valor Pedido |
---|---|---|
<5K | 1 | 6.000,00 |
>5K | 1 | 100.000,00 |
Não sei se estou sendo muito claro, mas estou aqui para eventuais duvidas
Obrigado amigo.
na verdade, é isso que preciso fazer, porem, a coluna 'Range', precisaria se tornar um filtro ou uma variavel, talvez.
Porque meu resultado final, é contar o numero de pedidos que tem >5K
Atila,
Acredito que consegue manipulando o script.
Fiz um teste, mas como não sei pelo que você pretende agrupar, coloquei por Item NF, mas ai fica a seu critério:
TesteComunidade:
Load * Inline
[
Item NF, Pedido, Item Pedido, ValorP
5100184666/000001/2017 ,4500000072 ,1,0
5100185702/000001/2017 ,4500000072 ,1,2550
5100185701/000001/2017 ,4500000072 ,1,3772
5100185705/000001/2017 ,4500000072 ,1,9999
5100185702/000002/2017 ,4500000072 ,2,2550
5100185701/000002/2017 ,4500000072 ,4,3772
5100185705/000002/2017 ,4500000072 ,3,9999
];
join
LOAD
[Item NF],
sum(ValorP) as Valor_Range,
if(sum(ValorP)>5000,'>5k','<5k') as Range
Resident TesteComunidade Group by [Item NF]
Fazendo a agregação com o exemplo que passei, ficaria algo como o seguinte:
Felipe,
Depois de algum tempo, consegui fazer como você me falou.
Obrigado pela ajuda.
Que bom que te ajudou .
Felipe,
Aproveitando a sua ajuda, finalizei a carga e fiz alguns ajustes, conforme a minha necessidade, porem, tem um unico resultado estranho
Se puder me ajudar
Coloquei as classificações:
DePara1:
Load * Inline
[
De,Para,Desc
0,4999.99,Menor que 5k
5000.00,10000.00,Entre 5K e 10K
10000.01,50000.00,Entre 10K e 50K
50000.01,100000.00,Entre 50K e 100K
100000.01,500000.00,Entre 100K e 500K
500000.01,1000000.00,Entre 500K e 1MM
1000000.01,99999999,Acima de 1MM
];
Deu muito certo, porém, um unico pedido nao classificou. Eu achei o pedido, mas nao sei porque ele nao classificou.
Veja que quando eu coloco o 'Filtro' ele nao aparece o '-'
Consigo debugar somente essa PO pra tentar entender por que nao classificou corretamente?