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

简化DAX语句:如何复用通用条件拆分Teams通话质量数据查询?

解决方案:提取通用筛选条件实现多时间段EVALUATE查询

可以通过DEFINE块定义变量提取通用筛选逻辑,让每个EVALUATE仅专注于不同的CQD[End Time]时间段,适配DAX Studio的单DEFINE多EVALUATE规则,同时规避10000行的结果限制。

实现思路

  • 将除End Time外的所有固定筛选条件打包到变量中,避免重复编写
  • 每个EVALUATE语句仅指定目标时间段,结合通用变量过滤数据
  • 拆分时间段时需保证单查询结果行数不超过10000

修改后的DAX代码示例

DEFINE
    VAR CommonFilters = 
        FILTER(
            CQD,
            CQD[Stream Direction] = "First-to-Second"
            && CQD[CDR Response Reason] = "OK"
            && CQD[First UserType] = "Server"
            && CQD[Second Inside Corp] = "Inside"
            && CQD[Second Network Connection Detail] = "Wired"
            && CQD[Test Call Type] = "NonTest"
            && CQD[Session Type] = "Conf"
            && CQD[Is Server Pair] IN {"Client : Server", " : Client"}
            && CQD[Second UserType] IN {"User", "Anonymous"}
            && NOT (CQD[Packet Utilization] IN {"(Blank)", "062: [0 - 0]", "064: [1 - 2)"})
        )

-- 第一个时间段:00:00-06:00
EVALUATE
    CALCULATETABLE(
        SUMMARIZECOLUMNS(
            CQD[Second Network Name],
            CQD[Second Subnet],
            CQD[Date],
            CQD[Day Of Week],
            CQD[Hour],
            CQD[Total Call Count],
            CQD[Avg Network Jitter Max],
            CQD[Audio Poor Percentage],
            CQD[Video Poor Percentage],
            CQD[Avg Round Trip Max]
        ),
        CommonFilters,
        CQD[End Time] >= dt"2024-07-17T00:00:00",
        CQD[End Time] < dt"2024-07-17T06:00:00"
    )

-- 第二个时间段:06:00-12:00
EVALUATE
    CALCULATETABLE(
        SUMMARIZECOLUMNS(
            CQD[Second Network Name],
            CQD[Second Subnet],
            CQD[Date],
            CQD[Day Of Week],
            CQD[Hour],
            CQD[Total Call Count],
            CQD[Avg Network Jitter Max],
            CQD[Audio Poor Percentage],
            CQD[Video Poor Percentage],
            CQD[Avg Round Trip Max]
        ),
        CommonFilters,
        CQD[End Time] >= dt"2024-07-17T06:00:00",
        CQD[End Time] < dt"2024-07-17T12:00:00"
    )

-- 第三个时间段:12:00-18:00
EVALUATE
    CALCULATETABLE(
        SUMMARIZECOLUMNS(
            CQD[Second Network Name],
            CQD[Second Subnet],
            CQD[Date],
            CQD[Day Of Week],
            CQD[Hour],
            CQD[Total Call Count],
            CQD[Avg Network Jitter Max],
            CQD[Audio Poor Percentage],
            CQD[Video Poor Percentage],
            CQD[Avg Round Trip Max]
        ),
        CommonFilters,
        CQD[End Time] >= dt"2024-07-17T12:00:00",
        CQD[End Time] < dt"2024-07-17T18:00:00"
    )

注意事项

  • CommonFilters中的筛选逻辑均为DirectQuery支持的基础条件,不会触发模式不兼容问题
  • 需根据实际数据量调整时间段区间长度,确保单EVALUATE结果不超限制行数
  • 通用筛选条件需修改时,仅需在DEFINE块中调整一次即可同步到所有查询

内容的提问来源于stack exchange,提问作者Dr.YSG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:58:11