请求协助将指定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
相关产品推荐
相关产品推荐

