在Power BI中,数据分组通常借助辅助表实现。

打开网易新闻 查看更多图片

在Power BI中,若使用预设的类型表进行分组,这些分类会遵循固定的边界点。然而,是否可以允许用户根据自己的需求自定义分类标准呢?

自定义标准,需要向用户提供一个输入界面。这个界面可以通过使用切片器来构建,而为了创建这个切片器,首先需要使用DAX创建一个序列列表。

打开网易新闻 查看更多图片

这里利用GENERATESERIES函数生成一个从500到5000的序列,假设分类标准都在这个范围内,具体起止点,你可以根据实际分析需要来调整。

接下来,利用分组表中的字段创建一个切片器,并将其样式设置为“介于”。这样,切片器将显示两个输入框,用户可以在这两个框中输入值。利用这两个输入值来定义自定义的分类标准。为了帮助用户理解这两个值的作用,可以在切片器的标题中添加相应的文字说明,正如下图所展示的那样。

打开网易新闻 查看更多图片

当然关于客户的分类表,依然还是需要的,这里还是用上面的三个分类,只是每个类别的最大值和最小值不需要了。

这些基础工作做好以后,建立度量值:

利润 客户细分 =

SWITCH(

TRUE(),

[利润]

[利润]<=MAX('分组表'[Value])&&[利润]>=MIN('分组表'[Value])&&SELECTEDVALUE('客户分类表'[客户分类])="一般贡献客户",[利润],

[利润]>MAX('分组表'[Value])&&SELECTEDVALUE('客户分类表'[客户分类])="高贡献客户",[利润]

该度量值的逻辑如下:根据利润所在的区间以及分类表的上下文类型进行判断。如果利润小于分组表中的最小值,并且客户分类为“低贡献客户”,则返回利润值。其他两个判断条件也遵循相同的逻辑。这样,只有当客户处于正确的类型时,其利润数据才会被返回。以下是预期的效果展示:

打开网易新闻 查看更多图片

通过调整切片器的范围,就能够自定义分组了,按散点图的效果更加直观的看到随着分组标准的变化,客户所属类型的变化情况。

打开网易新闻 查看更多图片

进一步的,如果想统计每种客户类型的利润总额和客户数量,可以这样来写度量值:

利润 按类型汇总 =

SUMX(

CROSSJOIN(

VALUES('客户'[客户姓名]),

VALUES('客户分类表'[客户分类])

),

[利润 客户细分]

客户数量 按类型 =

COUNTROWS(

FILTER(

CROSSJOIN(

VALUES('客户'[客户姓名]),

VALUES('客户分类表'[客户分类])

),

[利润 客户细分]>0

然后就可以随着分类标准的变化,动态即时统计出每个分类的指标:

打开网易新闻 查看更多图片