根据Set Analysis

时间:2016-08-10 16:44:36

标签: qlikview qliksense 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列中,我希望通过推介显示该关联的总销售额。

Alice负责推荐Bob和Dan,导致100个销售单位。 鲍勃称爱丽丝为50个单位。 卡尔推荐鲍勃,60个单位。 丹没有提到任何人。

如何实现这一目标?我试过了:

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

3 个答案:

答案 0 :(得分:1)

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

enter image description here

要详细了解集合分析check here。例如,您可以使用此选项将输出限制为只引用一个关联者:sum({$<Associate={'Bob'}>} SalesQty)

enter image description here

答案 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()语句创建你想要的表,但是在设置分析路径上会出现空白,因为我无法想到一种使集合分析有选择地打破维度的方法。

My solution

我试过这个

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))