企业的商品有很多,客户的选择也有很多。
客户放弃选择某个产品,并不表示客户离开这个品牌本身,因此,我们需要跟踪客户在品牌中的品类或者产品中的流动情况,如下:
这反应的业务逻辑是,在开始购买区间购买了复印机的客户在流向区间没有购买复印机,转而购买其他产品的情况。
设计要点
数据模型,以原始的情况呈现。
为了设计流向可视化以及给出用户区间选择,同时不破坏业务数据模型,采用非侵入式设计,构建:
- 两个日期表,分别提供两个日期轴,用于用户可以拖拽
- 两个产品表,分别提供流向图的来源和去向以支持可视化
业务逻辑
基于这样的流向的业务逻辑,用度量值给出复杂计算。
用 PowerBI DAX 表示,如下:
代码语言:javascript复制CRM.UserNumber.Flow =
// 1.选择日期,和交易的产品,计算客户集合
VAR _users_source =
CALCULATETABLE(
VALUES( 'Order'[CustomerID] ) ,
TREATAS( VALUES( 'Calendar.Source'[Date] ) , 'Calendar'[Date] ),
TREATAS( { SELECTEDVALUE( 'Product.Source'[Subcategory] ) } , 'Product'[Subcategory] )
)
// 2.选择日期,和交易的产品,计算客户集合
VAR _users_dest =
CALCULATETABLE(
VALUES( 'Order'[CustomerID] ) ,
TREATAS( VALUES( 'Calendar.Dest'[Date] ) , 'Calendar'[Date] ),
TREATAS( { SELECTEDVALUE( 'Product.Dest'[Subcategory] ) } , 'Product'[Subcategory] )
)
// 3.计算 1 中的客户集合,流动到 2 中的数量
RETURN COUNTROWS( INTERSECT( _users_source , _users_dest ) )
使用 TREATAS
进行动态挂载,将辅助数据挂入数据模型完成计算。