PowerBI CRM 同时购买某几个产品的客户有多少

2021-05-27 10:32:01 浏览数 (1)

继续 CRM 的专题,本次解决一个问题:如题。

同时购买某几个产品的客户有多少。

业务意义

在某月的活动中,可能会硬推某些产品组合,或当月主打产品,并为此投入资源。

所以,业务人员希望看到,选择某些 SKU 后,称这个集合为:重点产品集合。希望系统可以动态计算出某段时间内,客户购买重点产品集合内所有商品(可以超过重点集合范畴),这样的客户有多少。

仔细分析过后,会发现该问题的解法并不简单,那下面给出简单解法。

效果

DAX 实现

新建一个度量值:

代码语言:javascript复制
Customer.Count.Product = 
// 购买过某几类(个)商品的客户数
VAR _product_list = VALUES( 'Product'[Subcategory] )
VAR _user_product_set = 
    GROUPBY(
        SUMMARIZE( 'Order' , Customer[CustomerID] , 'Product'[Subcategory] ) ,
        Customer[CustomerID] ,
        "Value" ,
        SUMX( CURRENTGROUP( ) , IF( [Subcategory] IN _product_list , 1 ) )
    )
RETURN COUNTROWS( FILTER( _user_product_set , [Value] >= COUNTROWS( _product_list ) ) )

完成。

这里用了 3 个重要 DAX 技巧:

1、'Order' 在此通过扩展表特性伸展到 Customer[CustomerID]'Product'[Subcategory]

2、SUMMARIZE 提取仅仅需要的列,刚刚好。

3、GROUPBY 基于分组做再次分组。(该技巧在此前文章彻底刨析过,此处不再说明。)

在完全精通上述三个技巧后,设计了这样的计算模式,上图还给出了检验效果。

总结

不难分析,这个问题本身有一定复杂度,而且还涉及到性能问题,但本实现几乎兼顾了这些方面。大家可以自行尝试。

0 人点赞