DAX - 需要在过去一年内具有行数的列

时间:2016-11-16 16:26:51

标签: powerpivot dax

我在交易级别有一张包含销售信息的表格。如果客户在休眠一年以上后进行购买,我们希望建立一个新模型来补偿销售代表。为了弄清楚这在历史上会花多少钱,我想添加一个带有标志的列,以确定每次购买是否是买方过去365天的第一次购买。我想做的是Powerpivot中的行数,用于该客户在过去365天内所做的所有销售,并将其包装在IF中以将结果设置为0或1。

示例:

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 个答案:

答案 0 :(得分: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)
    
  4. 现在,您可以轻松地将这3列的逻辑组合到一个列中,并获得您想要的内容。希望这有帮助!

    我要添加的一个注意事项是,对于这种类型的分析,按照您最初建议的方式进行行计数并不明智,因为您的数据集可以在以后轻松扩展(如果您想要添加,该怎么办?更多属性列?)然后你会遇到问题。因此,我与您分享的此解决方案更加强大。