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

请求协助将指定SQL查询转换为DAX表达式(附尝试代码)

SQL转DAX表达式验证与修正

原始SQL需求

计算符合条件的ctScanAbort总和除以747683后保留三位小数,过滤规则如下:

  • 关联的机器需处于活跃状态(active=1)、所属国家需上报(reporting=1)、平台ID为4(fk_platform=4)
  • 排除ctScanAbort为空的记录
SELECT ROUND(CAST(SUM(ctScanAbort) as float) /747683, 3) 
FROM [PetData].[dbo].[MachineKPI]
WHERE fk_machine IN (
    Select m.id from [PetData].[dbo].Machine m 
    INNER JOIN Country c ON m.fk_country = c.id 
    WHERE m.active = 1 and c.reporting = 1 and fk_platform = 4
)
AND ctScanAbort IS NOT NULL;

你的DAX代码问题与修正

你编写的DAX存在语法错误,主要是变量声明不规范、使用了HTML转义字符等问题,以下是修正后的完整DAX表达式:

ScanAbortRate = 
VAR FilteredMachineIDs =
    FILTER (
        'Machine',
        'Machine'[active] = 1
        && 'Machine'[fk_platform] = 4
        && RELATED ( 'Country'[reporting] ) = 1
    )
VAR TotalCtScanAbort =
    CALCULATE (
        SUM ( 'FSMachineKPI'[ctScanAbort] ),
        NOT ISBLANK ( 'FSMachineKPI'[ctScanAbort] ),
        'FSMachineKPI'[fk_machine] IN SELECTCOLUMNS(FilteredMachineIDs, "ID", [id])
    )
RETURN
    ROUND ( DIVIDE ( TotalCtScanAbort, 747683 ), 3 )

修正点说明

  • 用VAR正确声明FilteredMachineIDs变量,符合DAX语法规范
  • 将HTML转义字符&&替换为DAX原生的&&逻辑与运算符
  • 把VALUES ( FilteredMachineIDs[id] )改为SELECTCOLUMNS(FilteredMachineIDs, "ID", [id]),确保正确从过滤后的机器表中提取ID列表
  • 将'FSMachineKPI'[ctScanAbort] IS NOT BLANK ()调整为NOT ISBLANK ( 'FSMachineKPI'[ctScanAbort] ),符合DAX函数调用格式
  • 为度量值命名为ScanAbortRate,提升代码可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:35:05