0

我的数据如下所示:

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 个单位的销售额。Bob 推荐了 Alice,50 个单位。卡尔提到鲍勃,60 个单位。丹没有提到任何人。

如何做到这一点?我努力了:

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

3 回答 3

1

假设您尝试在条形图或类似图中执行此操作,请制作ReferredBy您的主要维度,然后sum(SalesQty)用作表达式。这将为您提供一个条形图,显示与您提到的突破相匹配的每个推荐人的总销售额。为此,您根本不需要集合分析。

在此处输入图像描述

要了解有关集合分析的更多信息,请点击此处。例如,您可以使用它来将输出限制为仅推荐给一位 Associate: sum({$<Associate={'Bob'}>} SalesQty)

在此处输入图像描述

于 2016-08-11T00:13:10.607 回答
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
于 2016-08-11T08:50:36.090 回答
0

我知道这不完全是你问的,但我可以用一点脚本技巧和 if() 语句创建你想要的表,但在设置分析路线上出现空白,因为我想不出办法使集合分析有选择地打破维数。

我的解决方案

我试过这个

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

因为我可以使用 this 在与 Associatte 相同的行上获取Referer,above(only(SelAssociate),0)但是当对象呈现时,它对整个数据集执行 $() 而不是 line for line 它返回空值,然后答案只是 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))
于 2016-08-11T09:50:20.657 回答