使用DAX创建条件列遇变体数据类型错误的解决咨询
解决DAX计算列"变体数据类型"错误问题
错误原因
你遇到的错误Expressions that yield variant data-type cannot be used to define calculated columns,核心原因是IF函数的两个分支返回了不同数据类型:满足条件时返回文本"Audit<20days",不满足时返回数字0,DAX要求计算列的所有行必须返回统一数据类型。
修复方案
将IF函数两个分支的返回值统一为同一类型,以下两种方案任选其一:
方案1:统一为文本类型
把不满足条件的返回值改为空文本或明确的状态描述文本:
Status of Feedback = IF ( ISBLANK ( 'DAT IndAudPlan_IntSys_FindgMgmt_Findgs_RA_5Whys'[ProcConfm_CompdDate] ) || ( 'DAT IndAudPlan_IntSys_FindgMgmt_Findgs_RA_5Whys'[DatePlus20] > 'DAT IndAudPlan_IntSys_FindgMgmt_Findgs_RA_5Whys'[Present Day] && ISBLANK ( 'DAT IndAudPlan_IntSys_FindgMgmt_Findgs_RA_5Whys'[ProcsAccptce_Status] ) ), "Audit<20days", "" // 空文本,也可改为"已超20天/已完成"等明确状态文本 )
方案2:统一为数字类型
把满足条件的返回值改为数字编码,用数字标识不同状态:
Status of Feedback = IF ( ISBLANK ( 'DAT IndAudPlan_IntSys_FindgMgmt_Findgs_RA_5Whys'[ProcConfm_CompdDate] ) || ( 'DAT IndAudPlan_IntSys_FindgMgmt_Findgs_RA_5Whys'[DatePlus20] > 'DAT IndAudPlan_IntSys_FindgMgmt_Findgs_RA_5Whys'[Present Day] && ISBLANK ( 'DAT IndAudPlan_IntSys_FindgMgmt_Findgs_RA_5Whys'[ProcsAccptce_Status] ) ), 1, // 1代表"Audit<20days"状态 0 // 0代表其他状态 )
额外提示
DAX中逻辑运算符优先级为&&高于||,建议给DatePlus20>Present Day && ISBLANK(ProcsAccptce_Status)这部分加上括号,确保逻辑判断完全符合你的预期。
内容的提问来源于stack exchange,提问作者Avinash Rao
相关产品推荐
相关产品推荐

