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

如何在DAX中实现同表子查询,完成SQL到DAX的转换

SQL转DAX:实现同表子查询(NOT EXISTS)的解决方案

原SQL逻辑梳理

原SQL要生成包含table2[code]、table2[text]和New列的结果集,其中New列统计table1中满足以下条件的记录数:

  • 记录的created时间≤2023-06-24 17:00:00,且col1为空或>该时间、col2为空或>该时间
  • 记录的code与table2当前行的code匹配
  • 不存在另一条table1记录(记为B),满足:
    • B的created时间≤2023-07-24 17:00:00
    • B的col1为空或>该时间、col2为空或>该时间
    • B的col3与当前table1记录(记为A)的col3相等

现有DAX的问题

你写的DAX存在两个核心问题:

  1. 末尾重复了ORDER BY table2[created],属于语法错误
  2. 处理NOT EXISTS的部分,FILTER(table1, ... && table1[col3] = table1[col3])是恒成立的条件,没有关联到当前行的col3,无法模拟SQL中A.col3 = B.col3的关联逻辑

修正后的DAX代码

EVALUATE
SUMMARIZECOLUMNS(
    table2[code],
    table2[text],
    "New",
    CALCULATE(
        COUNTROWS(table1),
        FILTER(
            table1,
            table1[created] <= DATETIME(2023, 6, 24, 17, 0, 0)
            && (ISBLANK(table1[col1]) || table1[col1] > DATETIME(2023, 6, 24, 17, 0, 0))
            && (ISBLANK(table1[col2]) || table1[col2] > DATETIME(2023, 6, 24, 17, 0, 0))
            && table1[code] = RELATED(table2[code])
            && ISEMPTY(
                VAR CurrentCol3 = table1[col3]
                RETURN
                FILTER(
                    table1,
                    table1[created] <= DATETIME(2023, 7, 24, 17, 0, 0)
                    && (ISBLANK(table1[col1]) || table1[col1] > DATETIME(2023, 7, 24, 17, 0, 0))
                    && (ISBLANK(table1[col2]) || table1[col2] > DATETIME(2023, 7, 24, 17, 0, 0))
                    && table1[col3] = CurrentCol3
                )
            )
        )
    )
)
ORDER BY table2[created]

关键修正说明

  • 用VAR捕获当前行col3:在处理NOT EXISTS的FILTER内部,通过VAR CurrentCol3 = table1[col3]捕获当前迭代的table1行的col3值,再在内部FILTER中匹配table1[col3] = CurrentCol3,完美对应SQL中A.col3 = B.col3的关联逻辑
  • 修正日期函数:DAX中生成带时分秒的日期要用DATETIME(),而不是DATE()(DATE()仅生成年月日)
  • 清理语法错误:移除重复的ORDER BY,将排序逻辑放在EVALUATE结果的最后
  • RELATED的使用前提:确保table1和table2之间已建立基于code列的关系;如果没有关系,需将table1[code] = RELATED(table2[code])替换为table1[code] = table2[code],并确保上下文正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:20:35