Power BI - 用于计算前 31 天销售额的 DAX 度量值 - 'DATEADD'需要连续选择



两个表。销售_行为&DateKey。于日期加入。

基于销售额的DateKey表动态:

DateKey = CALENDAR(MIN(Sales_Fact[Date]),MAX(Sales_Fact[Date]))    

Sales Table具有以下结构。

Customer PurchaseDate  FirstTimePurchaseDate  Amount
A        2018/04/11       2018/02/26           500
b        2018/04/11       2018/03/01           300
c        2018/04/11       2018/04/11           400
A        2018/04/12       2018/02/26           100
b        2018/04/12       2018/03/01           200
c        2018/04/12       2018/04/11           400

我想计算每位客户在首次购买后31天的总购买金额Sales表具有过去2年的连续日期,没有缺少"购买日期"。

以下度量值返回"DATEADD",需要一个连续的选择。。。错误

First 31 days  = CALCULATE(SUM(Sales_Fact[Amount]),DATESBETWEEN(Sales_Fact[PurchaseDate],MIN(Sales_Fact[FirstTimePurchaseDate]),DATEADD(Sales_Fact[PurchaseDate],31,DAY)))

DAX表达式应该如何编写才能使该度量有效?

感谢

您可以计算每笔交易自第一次购买以来的天数,然后将天数为<=31:

=
SUMX (
FILTER (
Sales_Fact,
Sales_Fact[PurchaseDate] - Sales_Fact[FirstTimePurchaseDate] <= 31
),
Sales_Fact[Amount]
)

同样的结果也可以通过创建一个计算列来实现,该列实际上是自第一次购买以来的天数的销售额:

Days Since First Purchase = Sales_Fact[PurchaseDate] - Sales_Fact[FirstTimePurchaseDate]

"前31天"的衡量标准非常简单:

= CALCULATE ( SUM(Sales_Fact[Amount]), Sales_Fact[Days Since First Purchase] <= 31)

关于你所犯的错误,这是一个不同的问题。DATEADD是一个时间智能功能。此类函数通常在日历维度上操作,而不是在事实数据表上操作(正是因为维度具有连续的日期,而事实数据表通常没有(。在你的情况下,事情是复杂的,因为有两个日期而不是一个,所以对于你目前的工作方法,你需要有两个日历表,而不是一张(即"购买日历"one_answers"首次购买日历"(。更好的是,您可以重新设计您的销售事实表,使其只有一个日期("购买日期"(。然后,第一个购买日期可以在列中标记,也可以在DAX中检测为客户的最小日期。换句话说,如果您想使用日历表,我建议重新设计您的数据模型。

最新更新