В сводной таблице: как игнорировать измерение в выражении, используя переменную, которая зависит от этого измерения

Я пытаюсь ранжировать (A, B, C) список клиентов в соответствии с их прибыльностью, которая рассчитывается как сумма каждой продажи, умноженная на прибыльность продукта (каждому продукту присвоено значение прибыльности). Следовательно, прибыль = сумма продажи * прибыльность продукта.

Чтобы ранжировать каждого клиента, у меня есть сводная таблица с идентификатором клиента (CustID) в качестве измерения и двумя выражениями:

1)

= SaleAmount*ProductProfitability

2) = if(SaleAmount*ProductProfitability > $(vPercentile75Profit),'A', if(SaleAmount*ProductProfitability > $(vPercentil25Profit),'B','C'))

Выражение 2) работает правильно, если я фиксирую значения vPercentile75Profit и vPercentile25Profit, но, очевидно, мне нужно, чтобы это было динамическим.

Для этого я определил эти переменные как (одинаковые для обоих, просто переключение 0,75 на 0,25):

vPercentile75Profit =Fractile(aggr(sum({$<ProductProfitability = {'>0'} >}  SaleAmount*ProductProfitability/100),CustID), 0.75)

Если я правильно понимаю, это вычисляет список прибыльности каждого клиента, а затем выполняет 75 процентиль этого списка (что является одним значением). Это прекрасно работает, если я показываю значение, например, в текстовом поле, однако, если я использую его в своей таблице, для каждого клиента используется другой процентиль (поскольку CustID находится в измерении).

Как я могу обойти это? Процентили должны быть одинаковыми для каждого клиента, но я не могу найти способ.

Заранее спасибо, любая помощь будет принята с благодарностью!


person Carlos Borau    schedule 30.06.2017    source источник


Ответы (1)


Ничто не помогает найти ответ лучше, чем задать свой вопрос другим. Это было так же просто, как добавить TOTAL к определению переменной:

vPercentile75Profit =Fractile(TOTAL aggr(sum({$<ProductProfitability = {'>0'} >}  SaleAmount*ProductProfitability/100),CustID), 0.75)
person Carlos Borau    schedule 30.06.2017