Power BI中基于DAX的客户首月订单统计及cohort分析可视化问询
DAX实现客户Cohort分析:首月订单统计与矩阵展示
前提准备
确保Customers表与Orders表已通过Customers[ID]和Orders[customerId]建立一对多关系(Customers为一方,Orders为多方)。
1. 统计客户首月订单次数
创建以下DAX度量值,计算每个客户在注册当月的订单数量:
第1个月订单次数 = VAR CustomerFirstRegMonth = EOMONTH(MAX(Customers[DateOfFirstRegistration]), 0) VAR FirstMonthStart = DATE(YEAR(CustomerFirstRegMonth), MONTH(CustomerFirstRegMonth), 1) RETURN IFERROR( CALCULATE( COUNT(Orders[ID]), Orders[orderDate] >= FirstMonthStart, Orders[orderDate] <= CustomerFirstRegMonth ), 0 )
2. 判断首月订单是否超过阈值
假设阈值为3,创建度量值标记是否达标:
首月订单超阈值 = VAR FirstMonthOrders = [第1个月订单次数] RETURN IF(FirstMonthOrders >= 3, "是", "否")
可根据需求修改阈值数值。
3. 矩阵展示第1-3个月订单情况
分别创建第2、3个月的订单次数度量值,配合第1个月的度量值实现矩阵展示:
第2个月订单次数
第2个月订单次数 = VAR CustomerFirstRegMonth = EOMONTH(MAX(Customers[DateOfFirstRegistration]), 0) VAR SecondMonthStart = DATE(YEAR(CustomerFirstRegMonth), MONTH(CustomerFirstRegMonth)+1, 1) VAR SecondMonthEnd = EOMONTH(SecondMonthStart, 0) RETURN IFERROR( CALCULATE( COUNT(Orders[ID]), Orders[orderDate] >= SecondMonthStart, Orders[orderDate] <= SecondMonthEnd ), 0 )
第3个月订单次数
第3个月订单次数 = VAR CustomerFirstRegMonth = EOMONTH(MAX(Customers[DateOfFirstRegistration]), 0) VAR ThirdMonthStart = DATE(YEAR(CustomerFirstRegMonth), MONTH(CustomerFirstRegMonth)+2, 1) VAR ThirdMonthEnd = EOMONTH(ThirdMonthStart, 0) RETURN IFERROR( CALCULATE( COUNT(Orders[ID]), Orders[orderDate] >= ThirdMonthStart, Orders[orderDate] <= ThirdMonthEnd ), 0 )
矩阵配置步骤
- 插入矩阵视觉对象;
- 将
Customers[ID]拖入矩阵的「行」区域; - 将
第1个月订单次数、第2个月订单次数、第3个月订单次数拖入矩阵的「值」区域; - 可右键度量值重命名,让列标题更清晰(比如直接叫「第1个月」「第2个月」「第3个月」)。
内容的提问来源于stack exchange,提问作者Hanna
相关产品推荐
相关产品推荐

