You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求设计基于条件显示值的DAX度量MEASURE_COLOUR

DAX度量MEASURE_COLOUR设计方案

核心规则对应逻辑

基于给定的判断规则,我们需要结合当前日期的RESULT值、选定日期范围内首次fail的位置,以及当前日期前连续pass的次数,返回对应颜色:

  • 当RESULT为pass时,直接返回GREEN
  • 当RESULT为fail且满足以下任一条件,返回RED:
    • 是选定日期范围内第一次出现的fail
    • 当前日期之前连续出现了9次pass
  • 其他fail场景返回BLUE

DAX度量代码实现

MEASURE_COLOUR = 
VAR CurrentResult = SELECTEDVALUE('Table'[RESULT])
VAR CurrentDate = SELECTEDVALUE('Table'[Date])
VAR DateRange = ALLSELECTED('Table'[Date])
VAR FirstFailDate = MINX(FILTER(DateRange, 'Table'[RESULT] = "fail"), 'Table'[Date])
VAR ConsecutivePassBefore = 
    VAR CurrentRowRank = RANKX(DateRange, CurrentDate, , ASC)
    VAR LastFailRank = 
        MAXX(
            FILTER(
                DateRange,
                'Table'[Date] < CurrentDate && 'Table'[RESULT] = "fail"
            ),
            RANKX(DateRange, 'Table'[Date], , ASC)
        )
    RETURN IF(ISBLANK(LastFailRank), CurrentRowRank - 1, CurrentRowRank - LastFailRank - 1)
RETURN
SWITCH(
    TRUE(),
    CurrentResult = "pass", "GREEN",
    CurrentResult = "fail" && (CurrentDate = FirstFailDate || ConsecutivePassBefore >= 9), "RED",
    CurrentResult = "fail", "BLUE",
    BLANK()
)

代码逻辑拆解

  1. 变量定义:

    • CurrentResult:提取当前行的RESULT状态值
    • CurrentDate:提取当前行的日期
    • DateRange:获取用户选定的日期范围
    • FirstFailDate:计算选定日期范围内首次出现fail的日期
    • ConsecutivePassBefore:计算当前日期与上一次fail之间的连续pass次数;若之前无fail,则计算从范围起始到当前日期的pass次数
  2. 条件判断:

    • 优先匹配pass场景,返回GREEN
    • 针对fail场景,先校验是否是首次fail或满足连续9次pass前置条件,满足则返回RED
    • 剩余fail场景统一返回BLUE

示例场景验证

对应需求中的测试场景:

  • 第1天pass → GREEN
  • 第3天首次fail → RED
  • 第4-12天连续pass → GREEN
  • 第13天(连续9次pass后)fail → RED
  • 第14天pass → GREEN
  • 第15天fail(仅1次pass后)→ BLUE

内容的提问来源于stack exchange,提问作者Kitti Leelahasin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:05:47