Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia,
Quero criar um campo de rank dos 5 clientes com maiores resultados em % mas considerando somente aqueles que estão dentro dos 50% dos volumes em peças acumulados conforme ilustrado abaixo.
Se alguém puder me ajudar agradeço.
You can achieve this by using the Rank(), Aggr(), Above(), and RangeSum() functions, as well as the dimension limitation chart feature.
1. First we create our basic measures:
Volume:
=Sum(Volume)
Volume as % of Total:
=Sum(Volume) / Sum(Total Volume)
Results:
=Sum(Results)
That gives us a table like this:
2. Let's create the accumulation measure for Volume:
=RangeSum(
Above( If( Count([Client]) > 0
, (Sum(Volume) / Sum(Total Volume)) + Sum({1} 0)
, 0
)
, 0, RowNo()
)
)
This expression uses the RangeSum() and Above() functions to accumulate the Volume as % of Total measure we created in the previous step.
That should give us a table like this:
3. Now let's filter to only those [Client] values that are under the 50% cumulative Volume %:
=RangeSum(
Above( If( Count([Client]) > 0
, (Sum(Volume) / Sum(Total Volume)) + Sum({1} 0)
, 0
)
, 0, RowNo()
)
) < 0.5
Note the new < 0.5 condition that we added at the end of the expression.
This should give us something like this:
4. Now we can apply that filter to the [Client] field like so:
=Aggr(
Only({<
[Client]={"=RangeSum(Above(If(Count([Client])>0,(Sum(Volume)/Sum(total Volume))+Sum({1}0),0),0,RowNo()))<0.5"}
>} [Client])
, [Client]
)
This expression is using the Aggr() function because it allows us to use an aggregation function and, therefore, Set Analysis in order to limit values in a dimension field. The Only() function is our aggregation function in this case and the Set Expression we use is that same "under 50% cumulative volume %" measure we created in the previous step.
Make sure to uncheck the Include null values option!
That should give us a table like this:
5. Now we can use the Rank() function to rank those [Client] values on the sum of [Results], like so:
=Rank(Total Sum(Results), 4, 2)
That gives us a table like this:
6. Finally, we use the field limitation setting to limit the [Client]s to only the top 5. These the settings you can use:
Here's what our table should look like:
Bom dia,
Muito obrigada pela ajuda. Não estou tendo êxito apenas na parte da classificação. Com a fórmula abaixo está considerando os clientes que estão fora dos 50%.
Fiquei em dúvida também o que quer dizer os números 4,2 da fórmula. Por acaso é o número das colunas para a seleção?
obrigada
The Rank() function should not be taking into account the [Client]s that are below 50% accumulation. Did you uncheck the Include null values option for the the [Client] field?
And those other two arguments I used in the Rank(..., 4, 2) function are mode and format parameters. They specify how to display the rank number when being grouped and how to display duplicate ranks, respectively.
Here's the Qlik Help page that describes this function:
Sim, desmarquei "Incluir valores nulos" do campo Cliente.
Na fórmula do ranking estamos considerando apenas o resultado. Não deveria inserir um filtro nela para considerar apenas os clientes que estão abaixo de 50%? Como o Qlik entende quais são? Não seria uma fórmula semelhante a que foi criado para filtro no campo cliente?
Obrigada