我的数据如下:
Associate ReferredBy SalesQty ReferralSales
Alice Bob 50
Bob Carl 60
Carl NULL 70
Alice NULL 80
Bob Alice 90
Dan Alice 10
在ReferralSales
列中,我希望通过推介显示该关联的总销售额。
Alice负责推荐Bob和Dan,导致100个销售单位。 鲍勃称爱丽丝为50个单位。 卡尔推荐鲍勃,60个单位。 丹没有提到任何人。
如何实现这一目标?我试过了:
SUM({1 Associate = {ReferredBy}} SalesQty)
答案 0 :(得分:1)
假设您尝试在条形图或类似图表中执行此操作,请将ReferredBy
作为主要维度,然后使用sum(SalesQty)
作为表达式。这将为您提供一个条形图,显示每个引荐来源的总销售额,这与您提到的突破相匹配。你根本不需要进行集合分析。
要详细了解集合分析check here。例如,您可以使用此选项将输出限制为只引用一个关联者:sum({$<Associate={'Bob'}>} SalesQty)
。
答案 1 :(得分:1)
如果您希望在同一个表格中显示RefferalSales,只需添加到您的脚本中:
left join
Load ReferredBy as Associate, sum(SalesQty) as ReferredByQty Resident T1 group by ReferredBy;
在RefferalSales calc中使用: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
答案 2 :(得分:0)
我知道这不完全是你问的问题,但是我可以用一些脚本技巧和if()语句创建你想要的表,但是在设置分析路径上会出现空白,因为我无法想到一种使集合分析有选择地打破维度的方法。
我试过这个
sum({<ReferredBy={'$(above(only(SelAssociate),0))'}>} SalesQty)
因为我可以使用此above(only(SelAssociate),0)
将Referer与Associatte放在同一行,但是当对象呈现它时,它对整个数据集执行$()而不是行为行,它返回null,然后答案只是null()referer total。我认为设置状态只能在每个表达式中评估一次。你也可以在图片中看到不正确的表达。
这就是我使用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))