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

DAX查询返回不符合Plant No重复过滤条件的行问题求助

问题排查与解决办法

根因分析

原代码中的COUNT('WO'[Plant No]) >=2是计算整个日期过滤范围内所有Plant No的总条目数,而非每个Plant No单独的出现次数。只要日期范围内总条目数≥2,所有符合日期条件的行都会被返回,这就是为什么大部分结果仅满足日期过滤,未达到Plant No重复≥2次的要求。

解决思路

先筛选出在目标日期范围内出现≥2次的Plant No,再提取这些Plant No对应的所有符合日期条件的记录。

修正后的DAX代码

使用变量预计算符合条件的Plant No,性能更优:

EVALUATE
VAR ValidPlantNos =
    SUMMARIZE(
        FILTER(
            'WO',
            'WO'[Raised Date] >= NOW() - 365 &&
            'WO'[Raised Date] <= NOW() + TIME(10, 0, 0)
        ),
        'WO'[Plant No],
        "TotalEntries", COUNTROWS('WO')
    )
VAR FilteredPlantNos =
    SELECTCOLUMNS(
        FILTER(ValidPlantNos, [TotalEntries] >= 2),
        "Plant No", 'WO'[Plant No]
    )
RETURN
CALCULATETABLE(
    SELECTCOLUMNS(
        'WO',
        "Raised Date", 'WO'[Raised Date],
        "Address", 'WO'[WO Address],
        "Plant No", 'WO'[Plant No],
        "Work Order", 'WO'[WO]
    ),
    'WO'[Raised Date] >= NOW() - 365,
    'WO'[Raised Date] <= NOW() + TIME(10, 0, 0),
    'WO'[Plant No] IN FilteredPlantNos
)

替代写法(行级计算)

如果不需要优先考虑性能,也可以直接在过滤条件中计算每个Plant No的出现次数:

EVALUATE
CALCULATETABLE(
    SELECTCOLUMNS(
        'WO',
        "Raised Date", 'WO'[Raised Date],
        "Address", 'WO'[WO Address],
        "Plant No", 'WO'[Plant No],
        "Work Order", 'WO'[WO]
    ),
    'WO'[Raised Date] >= NOW() - 365,
    'WO'[Raised Date] <= NOW() + TIME(10, 0, 0),
    CALCULATE(
        COUNTROWS('WO'),
        ALLEXCEPT('WO', 'WO'[Plant No]),
        'WO'[Raised Date] >= NOW() - 365,
        'WO'[Raised Date] <= NOW() + TIME(10, 0, 0)
    ) >= 2
)

验证方式

运行修正后的代码后,可将结果导出到Excel,按Plant No分组统计出现次数,确认所有返回的Plant No出现次数均≥2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:30:30