Агрегировать другие строки на основе сравнения измерений в Set Analysis

У меня есть данные, которые выглядят так:

Associate   ReferredBy  SalesQty    ReferralSales
Alice       Bob         50
Bob         Carl        60
Carl        NULL        70
Alice       NULL        80
Bob         Alice       90
Dan         Alice       10

В столбце ReferralSales я хочу отобразить совокупные продажи партнера по рефералам.

Алиса отвечает за направление Боба и Дэна, в результате чего было продано 100 единиц. Боб направил Алису, 50 единиц. Карл рекомендовал Бобу, 60 единиц. Дэн никого не порекомендовал.

Как этого добиться? Я пытался:

SUM({1 Associate = {ReferredBy}} SalesQty)

person Kyle    schedule 10.08.2016    source источник


Ответы (3)


Предполагая, что вы пытаетесь сделать это с помощью гистограммы или подобного, сделайте ReferredBy своим основным измерением, а затем используйте sum(SalesQty) в качестве выражения. Это даст вам гистограмму, которая отображает совокупные продажи для каждого реферера, который соответствует упомянутому вами прорыву. Для этого вам вообще не понадобится анализ множеств.

введите описание изображения здесь

Чтобы узнать больше об анализе множеств, проверьте здесь. Например, вы можете использовать это, чтобы ограничить вывод только ссылками на одного партнера: sum({$<Associate={'Bob'}>} SalesQty).

введите описание изображения здесь

person bdiamante    schedule 11.08.2016

Если вы хотите отобразить RefferalSales в той же таблице, просто добавьте в свой скрипт:

left join
Load ReferredBy as Associate, sum(SalesQty) as ReferredByQty Resident T1 group by ReferredBy;

В расчете RefferalSales используйте: sum(ReferredByQty), и тогда вы легко получите

Associate   ReferredBy  SalesQty    ReferralSales
Alice           Bob         50          100
Alice           NULL        80          100
Bob             Alice       90          50
Bob             Carl        60          50
Carl            NULL        70          60
Dan             Alice       10          0
person EldadT    schedule 11.08.2016

Я знаю, что это не совсем то, о чем вы просили, но я могу создать нужную вам таблицу с помощью небольшого хитрого сценария и оператора if (), но на заданном маршруте анализа ничего не получится, потому что я не могу придумать способ провести анализ множества выборочно с нарушением размерности.

Мое решение

Я пробовал это

sum({<ReferredBy={'$(above(only(SelAssociate),0))'}>} SalesQty)

потому что я могу получить Referer в той же строке, что и Associatte, используя этот above(only(SelAssociate),0), но затем, когда объекты визуализируют, он выполняет $ () для всего набора данных, а не строку для строки, он возвращает нули, и тогда ответ - только null () референт итого. Я представляю, что установленное состояние может быть оценено только один раз для каждого выражения. Вы также можете увидеть неправильные выражения на картинке.

Вот почему я использовал if (), потому что он будет работать строка за строкой внутри объекта, но тогда мне все равно нужно было нарушить размерность, поэтому я создал в сценарии список партнеров, которые не могут быть потеряны.

T:
load * inline [
Associate,ReferredBy,SalesQty 
Alice,Bob,50
Bob,Carl,60
Carl,,70
Alice,,80
Bob,Alice,90
Dan,Alice,10
];

Load distinct 
Associate as SelAssociate resident T;

И тогда SelAssociate - это измерение, а выражения

sum(if(Associate=SelAssociate, SalesQty))
sum(if(ReferredBy=SelAssociate, SalesQty))
person The Budac    schedule 11.08.2016