Power BI DAX多条件SUMMARIZE:按日期过滤的库存扫描状态度量值
Power BI 订单扫描状态度量值实现(支持日期过滤)
问题分析
你原来使用SUMMARIZE创建计算表的方式无法满足需求,原因是:
- 计算表是静态对象,不会响应报表中的筛选器(如日期切片),无法按日期查看对应时间点的状态
- 计算表会累加所有历史扫描记录,订单后续完成扫描后状态直接更新为"完整",无法保留历史状态快照
解决方案:编写动态度量值
通过度量值可以响应筛选上下文(如日期筛选),实时计算每个订单在指定时间点的扫描状态。
1. 单个订单扫描状态度量值
订单扫描状态 = VAR 当前订单总箱数 = CALCULATE( MAX('Table'[TotalBoxes]), ALLEXCEPT('Table', 'Table'[Order ID]) ) VAR 当前已扫描箱数 = CALCULATE( DISTINCTCOUNT('Table'[Barcode]), -- 按唯一条码去重,避免重复扫描计数 'Table'[Received(Y/N)] = "Y" ) RETURN SWITCH( TRUE(), 当前已扫描箱数 = 0 || ISBLANK(当前已扫描箱数), "缺失", 当前已扫描箱数 = 当前订单总箱数, "完整", "部分完成" )
2. 各状态订单数量统计度量值
如果需要统计不同状态的订单数量,可以使用以下度量值:
缺失订单数 = CALCULATE( DISTINCTCOUNT('Table'[Order ID]), FILTER(VALUES('Table'[Order ID]), [订单扫描状态] = "缺失") ) 完整订单数 = CALCULATE( DISTINCTCOUNT('Table'[Order ID]), FILTER(VALUES('Table'[Order ID]), [订单扫描状态] = "完整") ) 部分完成订单数 = CALCULATE( DISTINCTCOUNT('Table'[Order ID]), FILTER(VALUES('Table'[Order ID]), [订单扫描状态] = "部分完成") )
使用说明
- 将
订单扫描状态度量值拖入表格视觉对象,搭配Order ID列,再添加日期切片器/筛选器,即可查看指定日期下各订单的扫描状态。 - 如果你的扫描记录中每条
Received(Y/N)="Y"的记录对应唯一未重复扫描的箱子,可以将DISTINCTCOUNT('Table'[Barcode])替换为COUNTROWS(FILTER('Table', 'Table'[Received(Y/N)] = "Y"))。
内容的提问来源于stack exchange,提问作者Tejinder Singh
相关产品推荐
相关产品推荐

