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

如何在行上下文统计未关闭工单时长并按周期分类?

问题需求

在行上下文环境中统计未关闭工单的时长,并将其分类为「未关闭≤4天」「未关闭>7天」等类别,期望得到如下格式的统计结果:

Level    <=4days    >7days
Level1   30         5
Level2   40         20
当前尝试的DAX代码
Open Ticket _Age = 
IF(
   SELECTEDVALUE( Incident'[closedate]) = BLANK(),
    DATEDIFF((Incident[contactdate]),(Calendartable[MonthEnding]),DAY)
)
问题分析与修正方案

原代码存在的问题

  1. 表名引用格式错误:Incident'[closedate]应为'Incident'[closedate](表名需用单引号包裹);
  2. 行上下文误用SELECTEDVALUE:该函数用于筛选上下文获取单一值,行上下文直接判断行级字段是否为空应使用ISBLANK();
  3. 日期引用可能引发多值错误:Calendartable[MonthEnding]在多行上下文可能返回多个值,需用聚合函数(如MAX())锁定当前上下文的日期。

修正后的DAX实现

1. 计算未关闭工单的时长

如果是计算列(静态行级计算):

Open Ticket Age = 
IF(
    ISBLANK('Incident'[closedate]),
    DATEDIFF('Incident'[contactdate], TODAY(), DAY), -- 若需按日历表统计,替换为MAX('CalendarTable'[Date])
    BLANK()
)

如果是度量值(适配动态筛选上下文):

Open Ticket Age = 
VAR CurrentDate = MAX('CalendarTable'[Date]) -- 取当前上下文的最大日期,或用TODAY()
RETURN
CALCULATE(
    DATEDIFF(MAX('Incident'[contactdate]), CurrentDate, DAY),
    FILTER('Incident', ISBLANK('Incident'[closedate]))
)

2. 创建分类统计度量值

  • 统计未关闭≤4天的工单数量:
Open Tickets ≤4 Days = 
VAR CurrentDate = MAX('CalendarTable'[Date])
RETURN
CALCULATE(
    COUNT('Incident'[IncidentID]),
    FILTER(
        'Incident',
        ISBLANK('Incident'[closedate]) &&
        DATEDIFF('Incident'[contactdate], CurrentDate, DAY) <= 4
    )
)
  • 统计未关闭>7天的工单数量:
Open Tickets >7 Days = 
VAR CurrentDate = MAX('CalendarTable'[Date])
RETURN
CALCULATE(
    COUNT('Incident'[IncidentID]),
    FILTER(
        'Incident',
        ISBLANK('Incident'[closedate]) &&
        DATEDIFF('Incident'[contactdate], CurrentDate, DAY) > 7
    )
)

3. 生成统计表格

将Incident表中的Level字段放入报表的行区域,将上述两个分类度量值放入值区域,即可得到符合要求的统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:52:13