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

easyBI中Xray测试计划MDX计算性能问题及优化问询

优化Xray测试计划最新执行结果的MDX计算

原MDX在处理包含大量测试执行的计划时超时,核心问题是针对每个测试用例嵌套迭代了所有时间维度日成员、所有执行状态成员,导致计算量呈指数级增长。以下是优化后的MDX及说明:

优化后的MDX代码

-- annotations. Group=Xray User defined
CASE WHEN
  [Xray Test Run Status].CurrentMember.Level.Name = "Status"
THEN -- 按最新执行状态统计测试用例数
  Cache(NonZero(Count(
    Filter(
      Descendants([Xray Test].CurrentMember, [Xray Test].[Test]),
      [Measures].[Xray Tests with executions] > 0 AND
      -- 直接获取该测试最后一次执行对应的状态
      (
        [Measures].[Xray Test Run Status],
        Tail(
          -- 按执行时间倒序取最后一次执行的时间节点
          Order(
            Filter([Time].[Day].Members, [Measures].[Xray Tests with executions] > 0),
            [Time].CurrentHierarchyMember.StartDate, BDESC
          ), 1
        ).Item(0)
      ) = [Xray Test Run Status].CurrentMember.Name
    )
  )))
ELSE -- 统计有执行记录的测试用例总数
  ([Measures].[Xray Tests with executions], [Xray Test Run Status].DefaultMember)
END

优化点说明

  • 砍掉多层嵌套循环:原代码在排序执行状态时嵌套了Generate、Tail等多层时间迭代逻辑,优化后直接先对时间成员按执行时间倒序排序,取最后一条记录再关联状态,大幅减少计算层级。
  • 简化状态匹配逻辑:直接通过最后执行时间对应的Xray Test Run Status度量值匹配当前状态成员,替代原代码中对状态成员排序后取第一条的复杂逻辑,降低计算开销。
  • 保留缓存优化:保留Cache函数,确保计算结果可被缓存,重复查询时直接复用。

额外优化建议

  • 限制时间范围:如果报表无需查询全量历史数据,可在报表层面添加时间维度过滤,减少需要处理的时间成员数量。
  • 预计算度量:若easyBI支持,可将“测试用例最后执行状态”设为预计算自定义度量,提前完成计算,报表直接调用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 21:17:45