Power BI带条件的TicketId去重计数及DAX度量创建需求
Power BI DAX 度量实现方案
现有基础信息
数据集字段:Date、TicketId、Step、Result
已创建的DAX度量:
LogDistcount_:统计去重工单ID数量LogDistcount_ = DISTINCTCOUNT(Logging[TicketId])Errors_dist:统计Step=8且Result为Error的去重工单ID数量Errors_dist = CALCULATE(Logging[LogDistcount_], Logging[Step] = 8)
需求1:统计最终结果为Successfull且历史存在Error记录的去重TicketId数量(支持钻取)
度量代码
Success_With_Previous_Error = VAR Ticket_Status_Summary = ADDCOLUMNS( DISTINCT(Logging[TicketId]), // 获取当前工单的最后结果(仅限定当前工单的记录范围) "@LastResult", CALCULATE(MAX(Logging[Result]), ALLEXCEPT(Logging, Logging[TicketId])), // 判断当前工单是否有过Error记录 "@HasErrorHistory", CALCULATE(COUNTROWS(FILTER(Logging, Logging[Result] = "Error")), ALLEXCEPT(Logging, Logging[TicketId])) > 0 ) RETURN COUNTROWS( FILTER( Ticket_Status_Summary, [@LastResult] = "Successfull" && [@HasErrorHistory] = TRUE() ) )
说明
- 用
ALLEXCEPT限定计算范围仅针对当前工单,避免跨工单干扰 - 生成的临时表包含每个工单的最终状态和错误历史,筛选后统计数量,支持钻取到
TicketId层级
需求2:统计最终结果仍为Error的去重TicketId数量
度量代码
Final_Error_Tickets = VAR Ticket_Last_Status = ADDCOLUMNS( DISTINCT(Logging[TicketId]), "@LastResult", CALCULATE(MAX(Logging[Result]), ALLEXCEPT(Logging, Logging[TicketId])) ) RETURN COUNTROWS( FILTER( Ticket_Last_Status, [@LastResult] = "Error" ) )
说明
- 基于
ALLEXCEPT锁定当前工单的记录,获取其最终结果后筛选统计
内容的提问来源于stack exchange,提问作者bombom
相关产品推荐
相关产品推荐

