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'
Fiz um teste rápido aqui com o seu caso e classifica corretamente (imagem abaixo):
Coloca em uma tabela simples, sem agregação (sum([Spend BRL]) pra ver o que sai nesse caso de valor e de descrição por favor.
O seu Sense está com as configurações em inglês no começo do código? Com separador de milhar com vírgula e de decimal como ponto?
Consegue liberar um aplicativo com dados de exemplo pra ver o que está acontecendo?
Cara, não consigo disponibilizar, mas estou fazendo alguns testes. O meu arquivo de dados tem um outro campo de 'Spend', mas no caso em 'Moeda original'. Quando mudo o codigo para utilizar o campo 'Moeda', o calculo é feito, veja:
Começo do código.
SET ThousandSep=',';
SET DecimalSep='.';
O mais estranho é que minha base tem 500K linhas, e somente essa ficou sem classificação
Consegue passar a(s) linha(s) original dos seus dados na sua para esse caso em específico?
Segue o código. Agora eu tive a certeza de que o problema está, especificamente, neste pedido, pois quando eu troco 'Spend BRL' por 'Spend Moeda', o erro some.
LOAD
MIR,
Fornecedor,
PartNumber,
Centro,
GC,
GM,
UN,
"Tipo Doc",
NumPO,
ItemPO,
Moeda,
Data,
"Spend BRL",
Flex,
"Spend Moeda"
FROM [lib://AttachedFiles/bd_dashboard_2017.xlsx]
(ooxml, embedded labels, table is dashboard_2017);
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
];
IntervalMatch("Spend BRL")
Left join (dashboard_2017)
Load
De,
Para
Resident DePara1;
left join(dashboard_2017)
Load
De,
Para,
Desc
Resident DePara1;
drop fields De,Para from dashboard_2017;
drop table DePara1;
Oi Atila, quis dizer os dados na sua base, as vezes pode acontecer de não ter esse valor para esse dado e por isso ele não está classificando com o Intevalmatch.
Imagino que possa estar nulo / vazio o valor e quando ele for tentar usar a função, não acha valor nenhum.
Tente fazer o seguinte para ver se esse pedido vem classificado:
LOAD
MIR,
Fornecedor,
PartNumber,
Centro,
GC,
GM,
UN,
"Tipo Doc",
NumPO,
ItemPO,
Moeda,
Data,
Alt("Spend BRL",0) as "Spend BRL",
Flex,
Alt("Spend Moeda",0) as "Spend Moeda",
FROM [lib://AttachedFiles/bd_dashboard_2017.xlsx]
(ooxml, embedded labels, table is dashboard_2017);
Felipe,
Gerei um arquivo de dados apenas com duas linhas de POs, uma com o exemplo que nao está correto, e um outro PO.
No meu aqui, continua com erro nesta linha, e veja que a outra não está considerando o mesmo que vc colocou, pois o resultado da soma das POs deveria ser >5K, correto?
Tabela com os dados está anexa
Resultado
Oi Atila,
Descobri o problema e está acontecendo quando estão sendo importandos os seus dados para o Qlik.
É alguma questão de arredondamento que não está conseguindo interpretar o valor direito para o pedido
4500086885 |
No arquivo excel que você passou, o valor "Spend BRL" está como 988,71875 e se você alterar ele para 988,71 ele consegue fazer o cálculo corretamente.
Quando for fazer a carga dos dados, faça o seguinte (utilizei o arquivo que você passou no caso como origem de dados):
Dados:
LOAD MIR,
Forn,
PN,
Base,
GC,
GM,
UM,
[Tipo Doc],
NumPO,
ItemPO,
Moeda,
Data,
round([Spend BRL],0.01) as [Spend BRL],
Flex,
[Spend Moeda]
FROM
(ooxml, embedded labels, table is Plan1);
Isso irá arredondar o valor para o valor mais próximo na segunda casa decimal e assim irá conseguir fazer Intervalmatch.
Felipe.
Deu certo!!! Obrigado.
Agora que eu coloquei a base toda, e coloquei a ajuda inicial que você tinha me falado, eu vi que nao deu muito certo.
Usando essa mesma tabela que te passei como exemplo, o resultado do PO 4500000072 deveria ser >5K, correto?
Visto que a soma das linhas da PO são maiores que 5K.
O agrupamento seria pelo 'Pedido'
O intervalmatch está sendo usado para linhas individuais Atila, então cada linha está sendo avaliada conforme o DePara e o campo "Spend BRL".
A agregação (soma, média, etc) não vai dar certo com esse esquema que está ai.
O print ao meu ver está correto por valor de "Spend BRL" mas você pode estar querendo outra lógica.