Power BI - DAX用于计算当前期间流失和重新激活的客户的度量。总数不正确

问题描述 投票:4回答:1

以下是数据的简化版本。客户ID的每日交易清单

SalesData = 
DATATABLE (
    "Customer ID", INTEGER,
    "Date", DATETIME,
    "Amount", INTEGER,
    {
         { 101245, "2019/04/07", 500 },
         { 101245, "2018/08/05", 400 },
         { 100365, "2018/07/30", 900 },
         { 100365, "2018/02/22", 700 },
         { 104300, "2019/04/05", 300 },
         { 104300, "2019/04/03", 350 },
         { 104300, "2019/04/01", 310 },
         { 107804, "2018/11/08", 650 },
         { 107804, "2018/11/19", 640 },
         { 108040, "2019/01/02", 730 }
    }
)

目标:计算当前期间重新激活和搅拌的客户,在下面的示例中是2019年4月1日至7日。

搅拌=无效90天或更长时间。

重新激活=在最近一次购买之前无效90天或更长时间。

在矩阵中 - 如下图所示 - 以下措施按照预期在4月1日至7日的当前期间重新激活和搅拌。

    churnedInCurrentPeriod = 
    VAR dayspassed =
    DATEDIFF(
        MAX(SalesData[Date]),
        CALCULATE(
            MAX(SalesData[Date]),
            ALLEXCEPT(SalesData,SalesData[Date])),
            DAY)
    Return 
    IF(dayspassed >= 90 && dayspassed <= 97,1,0)

请注意,在这种情况下,“当前期间”需要是动态的日期,这就是为什么日期切片器在那里,我在日期列上使用allexpect使其工作。在if语句中它是90 + 7天,也应该是动态的。

ReactivatedInCurrentPeriod = 
VAR differenceDays =
DATEDIFF(
    CALCULATE(
        MAX(SalesData[Date]),
        FILTER(SalesData,SalesData[Date] <> MAX(SalesData[Date])
        )
    ),
    MAX(SalesData[Date]),
    DAY
)
RETURN 
IF(AND(differenceDays >= 90,MAX(SalesData[Date]) >= DATE(2019,4,1)),1,0)

enter image description here

截图显示矩阵按预期工作。不是总数。我已经尝试使用calculate with distinctcount来相应地计算客户数而没有成功。目前我通过在excel(!)中导出矩阵和求和在我的真实数据集中解决这个问题。

必须是使用DAX更好的方法。

非常感谢您的帮助。

powerbi dax datediff measure
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.