如何在可选择时段内统计达标与未达标机器数量?
MTBF达标统计性能优化方案
核心问题分析
你当前使用SUMMARIZECOLUMNS创建计算表的方式存在两个关键问题:
- 计算表属于静态对象,仅在数据刷新时更新,无法响应时段切片器的动态变更;
- 生成全量中间表的计算逻辑对资源消耗极大,导致耗时过长。
优化方案:改用动态度量值
直接创建两个度量值来实时统计达标/未达标机器数量,替代静态计算表:
达标机器数度量值
达标MTBF机器数 = CALCULATE( DISTINCTCOUNT(Perf_CDASHBOARD_KPI[SerialNo]), 'InstalledBase'[EquipmentType] = "CE_FM", Perf_CDASHBOARD_KPI[Internal Spec. MTBF] > 0, [FM MTBF] >= Perf_CDASHBOARD_KPI[Internal Spec. MTBF] )
未达标机器数度量值
未达标MTBF机器数 = CALCULATE( DISTINCTCOUNT(Perf_CDASHBOARD_KPI[SerialNo]), 'InstalledBase'[EquipmentType] = "CE_FM", Perf_CDASHBOARD_KPI[Internal Spec. MTBF] > 0, [FM MTBF] < Perf_CDASHBOARD_KPI[Internal Spec. MTBF] )
优化说明
- 动态响应筛选:度量值会自动感知时段切片器的变化,实时更新计算结果,无需手动刷新;
- 性能提升:通过
CALCULATE直接统计符合条件的机器ID数量,避免生成冗余中间表,大幅降低计算开销; - 逻辑简化:移除嵌套
FILTER,直接在CALCULATE的筛选参数中定义条件,DAX引擎可更高效地优化执行计划。
额外注意事项
- 确保
Perf_CDASHBOARD_KPI与InstalledBase表已通过SerialNo建立正确的关系,保证筛选上下文能正确传递; - 若
[FM MTBF]度量值本身计算复杂,可通过变量缓存中间结果进一步优化性能,示例:FM MTBF = VAR CurrentPeriodData = CALCULATETABLE(Perf, <时段筛选条件>) RETURN <原MTBF计算逻辑,基于CurrentPeriodData>
内容的提问来源于stack exchange,提问作者Lucilla
相关产品推荐
相关产品推荐

