DAX - 需要在过去一年内包含行数的列

DAX - Need column with row count within past year

我有一个 table,其中包含交易级别的销售信息。我们想建立一种新模式,如果客户在休眠一年多后进行购买,我们会补偿销售代表。为了弄清楚这在历史上会花费多少,我想添加一个带有标记的列,以表明每次购买是否是过去 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

如有任何帮助,我们将不胜感激。

出色的商业用例!它在商业世界中非常重要。

为了给您分解,我将创建 3 列:2 列包含一些计算,1 列包含结果。一旦您理解了我是如何做到这一点的,您可以根据需要组合所有 3 列公式并为您的数据集创建一个列。

这是结果的图片:

这是我创建的 3 列:

  1. 上次购买 - 为了运行此计算,您需要知道买家上次购买的时间。

    CALCULATE(MAX([Order Date]),FILTER(Table1,[Order Date]<EARLIER([Order Date]) && [Buyer]=EARLIER([Buyer])))
    
  2. 距离上次购买的天数 - 现在您可以将上次购买日期与当前订单日期进行比较。

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

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

现在,您可以轻松地将这 3 列的逻辑组合到一个列中并获得您想要的内容。希望这对您有所帮助!

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