2016-11-16 38 views
1

我有一个包含交易级销售信息的表。如果客户在休眠一年以上后进行购买,我们希望建立一种新的模式来补偿销售代表。为了弄清楚这将会花费多少成本,我想在过去的365天里添加一个带有标志的列,以确定每笔购买是否是买方的第一笔。我想要做的是在一个PowerPivot的行数,由客户在365日内提出的所有销售和包装它在IF结果设置为0或1DAX - 在过去的一年中需要列计数的列

例子:

Order Date Buyer First Purchase in Year? 
1/1/2015 1 1 
1/2/2015 2 1 
2/1/2015 1 0 
4/1/2015 2 0 
3/1/2016 2 1 
5/1/2017 2 1 

任何援助将不胜感激。

回答

1

优秀的商业用例!这在商业世界中非常重要。

为了解决这个问题,我将创建3列:2与一些计算,1与结果。一旦你明白了我是如何做到这一点的,你可以将所有3列公式结合起来,并为你的数据集制作一列,如果你喜欢的话。

这里的结果的画面: Data

因此,这里是我创建了3列:

  1. 最后购买 - 为了运行这个计算,你需要知道什么时候买方进行了最后一次购买。

    CALCULATE(MAX([Order Date]),FILTER(Table1,[Order Date]<EARLIER([Order Date]) && [Buyer]=EARLIER([Buyer]))) 
    
  2. 天自上次购买 - 现在你可以比较最后一次购买日期为当前订单日期。

    DATEDIFF([Last Purchase],[Order Date],DAY) 
    
  3. 首次购买1年 - 最后,结果列。这只是检查自上次购买以来是否超过365天,或者如果最后一次购买列是空白的(这意味着它是第一次购买),并创建您想要的标志。现在

    IF([Days Since Last Purchase]>365 || ISBLANK([Days Since Last Purchase]),1,0) 
    

,可以将这些3列的逻辑很容易结合成一列,并得到你想要的。希望这可以帮助!

我想添加的一点是,对于这种类型的分析,按照您最初的建议进行行计数并不是一个明智之举,因为稍后您的数据集可以轻松扩展(如果您想添加更多属性列?),然后你会有问题。所以我与你分享的这个解决方案更加健壮。

+0

非常感谢!这是完全合理的。如果可能,你能解释一下EARLIER的作用,以备将来参考吗? –

+0

是的。简而言之,EARLIER允许您调用当前行。例如,当我键入订单日期] RedVII

+0

再次感谢!很有帮助! –