Power BI中如何统计归属多个服务类别的用户数量
Power BI 多服务使用用户数统计方案
场景说明
- 现有事实表名为
Supported,存储机构服务对象的服务使用记录,机构提供多类服务,单个用户在指定时间段内可使用1项或多项服务,例如序列号为102617的用户在2020年1月共使用社区服务、出版物服务2项服务。 - 需求为:在支持日期范围等筛选器生效的前提下,统计不同服务使用数量对应的用户人数,例如使用1项服务的用户数、使用2项服务的用户数等。
- 已尝试编写如下度量值:
Total = SUMX( VALUES(Supported[SERIALNUMBER]), CALCULATE(DISTINCTCOUNT(Supported[Service Type])) )
该度量值搭配SERIALNUMBER字段制作图表时,可正确展示单个用户的服务使用数量,可匹配“6人使用3项服务”的样例结果,但无法直接输出不同服务数对应的用户数统计值。
实现步骤
1. 编写单用户服务数计算的基础度量值
首先创建可在当前筛选上下文下,计算单个用户使用不同服务类型数量的基础度量值:
单用户服务使用数 = CALCULATE( DISTINCTCOUNT(Supported[Service Type]), ALLEXCEPT(Supported, Supported[SERIALNUMBER]) )
如果你的报表使用独立的日期维度表做日期筛选,度量值会自动继承切片器、页面级、视觉级的所有筛选条件,无需额外调整。
2. 准备服务数维度表(用于可视化分组)
新建一张不与Supported表建立关系的独立维度表,命名为服务数分组,仅包含1列服务数量,值填充为1、2、3……直到覆盖你业务场景中单用户可能使用的最大服务数量即可。
3. 编写分组统计用户数的核心度量值
基于基础度量值和维度表,编写最终统计用度量值:
对应服务数的用户数 = VAR 目标服务数 = SELECTEDVALUE('服务数分组'[服务数量]) RETURN COUNTROWS( FILTER( VALUES(Supported[SERIALNUMBER]), [单用户服务使用数] = 目标服务数 ) )
补充说明
- 你之前编写的
Total度量值本质是对所有用户的服务使用数求和,输出的是服务使用总人次;只有当视觉对象的筛选上下文落到单个SERIALNUMBER维度时,才会展示单个用户的服务数,本身没有按服务数分组计数的逻辑,因此无法直接得到分组用户数结果。 - 如果不需要做分组可视化,仅需要统计使用2项及以上服务的多服务用户总数,可直接使用如下度量值,无需创建独立维度表:
多服务用户总数 = COUNTROWS( FILTER( VALUES(Supported[SERIALNUMBER]), [单用户服务使用数] >= 2 ) )
内容的提问来源于stack exchange,提问作者AntonAAK
相关产品推荐
相关产品推荐

