如何在Power BI中创建按故障模式与日期分组的计数度量值?
核心需求回顾
需要创建名为Failure Counts的度量值,针对Failure Mode(故障模式)与Experiment Start Time(日期)的每一个唯一组合,计算对应故障记录数(或唯一组合数)。
最优解法分场景说明
场景1:统计每个组合的故障记录数
如果数据表中每一行对应一条独立故障记录,直接使用以下简单度量值即可:
Failure Counts = COUNT('public failure'[failureModeId])
或更通用的写法:
Failure Counts = COUNTROWS('public failure')
逻辑说明:当你在Power BI视觉对象(如矩阵、表格)中把Failure Mode和Experiment Start Time放到行/列区域时,Power BI会自动为每个唯一组合生成筛选上下文,COUNT/COUNTROWS会自动统计该上下文内的记录数量,完全匹配需求。
场景2:统计唯一组合的总数量
如果需要统计整个数据集内,不重复的(故障模式+日期)组合总数,使用以下写法:
Failure Counts = COUNTROWS( SUMMARIZE( 'public failure', 'public failure'[Failure Mode], 'public failure'[Experiment Start Time] ) )
逻辑说明:SUMMARIZE函数会生成仅包含Failure Mode和Experiment Start Time唯一组合的表,COUNTROWS统计该表的行数,即唯一组合的数量。
你之前写法的问题分析
CALCULATE+双FILTER写法:
该写法使用ALL('public failure')移除所有筛选后,再用MAX匹配当前上下文的字段值,逻辑冗余且容易出错。MAX在这里是取当前筛选上下文内Failure Mode/Experiment Start Time的最大值,若上下文包含多个值(如未在视觉对象中放置字段),MAX会返回全局最大值,导致计数完全错误。DISTINCTCOUNT+GROUPBY写法:
GROUPBY返回的是表对象,而DISTINCTCOUNT要求输入是单列数据,语法不兼容,因此无法运行。
内容的提问来源于stack exchange,提问作者C S

