今天,讲聚类分析。
静态聚类分析
在 Power BI 中,有一种最简单的做法来实现聚类分析,那就是:
自动查找群集。
这个功能是非常容易学会的。只需要选择群集数即可,如下:
效果如下:
至此,Power BI 已经帮助我们零代码实现了聚类分群的操作。
但这个划分,是静态的。当我们选择一个内容的时候,例如,某个产品分类,则得到:
这些客户会叠在一起,因为在这类产品类别下,并没有重新分群,而还是按照刚才的全局分群实现的。
动态聚类分析
来理解下,什么是动态效果,如下:
动态效果的含义,就是不论用户怎么选择,都可以动态做出分群,甚至根据群数来动态划分。
DAX 函数 KMEANSCLUSTERING
这里有一个重要的 DAX 函数,这个函数不保存在任何文档中,因此,你知道了这个函数,你就可以用来做很多可能。它就是:
KMEANSCLUSTERING
我们来实现刚刚的 4 分群,新建计算表,如下:
新建计算表的 DAX 表达式为:
CustomerCluster =
VAR __DS0Core =
SUMMARIZECOLUMNS(
'客户'[客户名称],
"KPI_Sales", 'DAX'[KPI.Sales],
"KPI_Profit", 'DAX'[KPI.Profit])
VAR __Data =
SELECTCOLUMNS(
__DS0Core,
"客户名称", [客户名称],
"KPI_Sales", [KPI_Sales],
"KPI_Profit", [KPI_Profit]
)
VAR __Result =
KMEANSCLUSTERING(
__Data,
{
( "[KPI_Sales]" , "Attribute"),
( "[KPI_Profit]" , "Attribute"),
( "[客户名称]" , "Item")
},
{
( "[客户名称]", BLANK() ),
( "所属分群", "ClusterId")
},
4
)
RETURN
__Result
这里使用的 KMEANSCLUSTERING 根本不在 DAX 的文档中,如果你去查看相关文档,只能是该函数不存在,但实际上,这个函数是存在的,这是一个神奇的函数,它封装了 K-Means 聚类算法的精华。该函数接受四个参数:
数据表
输入格式定义
输出格式定义
分群数量
其中,输入格式定义中的 Attribute 表示这是一个分群时要考虑的属性;而 Item 表示要进行分群的元素。输出格式定义中的 BLANK () 表示不做定义;ClusterId 表示将计算得到的集群序号赋予此列。分群数量必须是 0 到 25 之间的整数。
特别注意,这里的 "[KPI_Sales]" 必须是 "[KPI_Sales]",而不能是 "KPI_Sales",这是一个特别的格式,记住就行了。
由于,在这个世界上根本没有这个函数的说明,以上规律通过实验得到,大家可以当作模板使用。
总结
本文给出了聚类分析的 DAX 函数以及模板用法,可以直接套用,同时指出了静态聚类与动态聚类分析的区别,对于如何进一步实现动态聚类分析可以关注后续文章。作为普通用户,请先理解本文,并先学习使用本文的聚类分析模板,高手可以自己尝试实现动态聚类分析。我们会在后续文章进一步给出解法。
在订阅了BI佐罗讲授的《BI真经》之《BI进行时》课程区,除了可以下载本文案例,还可以观看视频讲解。
Power BI 终极系列课程《BI真经》
扫码与精英一起讨论 Power BI,验证码:data2023
点击“阅读原文”进入学习中心
↙