Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde,
Eu gostaria de saber se é possível utilizar a expressão Rank de uma forma mais dinamica. Aonde ela irá ajudar fazendo o calculo das Vendas Acumuladas até o Rank da linha.
Exemplo:
Rank | Vendas | Vendas Acumulada |
1 | 50 | 50 |
8 | 60 | 440 |
7 | 80 | 380 |
4 | 90 | 195 |
3 | 20 | 105 |
2 | 35 | 85 |
5 | 45 | 240 |
6 | 60 | 300 |
9 | 90 | 530 |
Então se olharmos o Rank 7 por exemplo, ele somaria todas as linhas até o rank 7.
Agradeço desde já pela atenção.
Sei que os mais experientes não recomendariam isso, mas te proponho algo direto no script (o que não sofrerá impacto com a interação do usuário com o painel);
Fazer o ranking na carga:
VENDAS_TEMP:
LOAD * INLINE [
VENDEDOR_ID,TOTAL_VENDA
1,2000
2,2100
3,1800
4,2150
5,3000
];
LEFT JOIN (VENDAS_TEMP)
LOAD * INLINE [
VENDEDOR_ID,VENDEDOR
1,VANDERLEI SILVA
2,CASTRO ALVES
3,JULIO KOELLER
4,ERIC CLAPTON
5,JOHN ABE
];
VENDAS:
LOAD
*,
AutoNumber(TOTAL_VENDA) as RANK,
NumSum(TOTAL_VENDA,Peek('ACUMULADO')) as ACUMULADO
Resident VENDAS_TEMP
Order By TOTAL_VENDA desc;
DROP TABLE VENDAS_TEMP;
Olha o resultado:
How the Rank column used here, if its a measure, not sure what expression is used, it doesn't look to be ranking sales data so you may need to share some more info. If rank is a dimension here then may be like this -
Leonardo,
Se quiser uma solução via script:
VENDAS_TEMP:
LOAD * INLINE [
Rank,Vendas
1, 50
8, 60
7, 80
4, 90
3, 20
2, 35
5, 45
6, 60
9, 90
];
VENDAS:
LOAD
*,
NumSum(Vendas,Peek('Acumulado')) as Acumulado
RESIDENT VENDAS_TEMP Order By Rank;
DROP TABLE VENDAS_TEMP;
Resultado:
Olá Leonardo.
Resolvida sua dúvida ? se sim marque como "Correta" a resposta..
Boa tarde,
Obrigado pelo retorno pessoal. Mas o problema é um pouquinho mais complicado.
Vou tentar explicar melhor:
Tenho essa tabela abaixo que possui uma Expressão de Rank na terceira coluna;
A 4ª Coluna é exatamente o que eu gostaria de fazer:
Só que ela da certo por que a ordem está crescente na coluna do Rank, aí ela só acumula e fica tudo OK. Mas eu gostaria que independente da ordem que o Rank estivesse, a expressão da 4ª Coluna só calcula-se as vendas até o Rank do produto. Se eu embaralhar a ordem, veja o que acontece:
Ela não calcula do jeito que eu gostaria respeitando a venda acumulada até o RANK do PRODUTO. É claro que no exemplo acima, a 4ª Coluna soma linha a linha e vai acumulando o que tem em cima sem se preocupar com o Rank.
É como se fosse uma função do excel:
Somases(Coluna VENDAS, Coluna RANK, "<=Rank do Produto")
Acho que agora consegui melhorar minha explicação rs.
Agradeço desde já a atenção
Sei que os mais experientes não recomendariam isso, mas te proponho algo direto no script (o que não sofrerá impacto com a interação do usuário com o painel);
Fazer o ranking na carga:
VENDAS_TEMP:
LOAD * INLINE [
VENDEDOR_ID,TOTAL_VENDA
1,2000
2,2100
3,1800
4,2150
5,3000
];
LEFT JOIN (VENDAS_TEMP)
LOAD * INLINE [
VENDEDOR_ID,VENDEDOR
1,VANDERLEI SILVA
2,CASTRO ALVES
3,JULIO KOELLER
4,ERIC CLAPTON
5,JOHN ABE
];
VENDAS:
LOAD
*,
AutoNumber(TOTAL_VENDA) as RANK,
NumSum(TOTAL_VENDA,Peek('ACUMULADO')) as ACUMULADO
Resident VENDAS_TEMP
Order By TOTAL_VENDA desc;
DROP TABLE VENDAS_TEMP;
Olha o resultado:
Vou explorar esta opção. Acho que poderá me atender.
Obrigado pela ajuda.