Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

SomaSe - Coluna adicional

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 NFPedidoItem PedidoValor
5100184666/000001/20174500000072
1
0
5100185702/000001/20174500000072
1
2550,71
5100185701/000001/20174500000072
1
3772,03

Meu objetivo é criar uma coluna adicional que vai me informar o 'range' de valor que a coluna 'Pedido' se enquadra, por exemplo:

PedidoValorRange
45000000726.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'

Labels (1)
1 Solution

Accepted Solutions
felipedl
Partner - Specialist III
Partner - Specialist III

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:

Sample.png

View solution in original post

21 Replies
IvanOsatchuk
Contributor III
Contributor III

Boa tarde,

Não sei se entendi direito, mas segue um exemplo

PEDIDO.png

felipedl
Partner - Specialist III
Partner - Specialist III

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:

Sample.png

Anonymous
Not applicable
Author

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:

   

RangeQtde PedidosValor Pedido
<5K1        6.000,00
>5K1     100.000,00

Não sei se estou sendo muito claro, mas estou aqui para eventuais duvidas

Anonymous
Not applicable
Author

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

michellysodre
Contributor III
Contributor III

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]

print.JPG

felipedl
Partner - Specialist III
Partner - Specialist III

Fazendo a agregação com o exemplo que passei, ficaria algo como o seguinte:

Sample.png

Anonymous
Not applicable
Author

Felipe,

Depois de algum tempo, consegui fazer como você me falou.

Obrigado pela ajuda.

felipedl
Partner - Specialist III
Partner - Specialist III

Que bom que te ajudou .

Anonymous
Not applicable
Author

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

Erro_PO.jpg

Consigo debugar somente essa PO pra tentar entender por que nao classificou corretamente?