Power BI中SWITCH语句报错:无法将文本类型转为布尔类型
DAX SWITCH函数类型转换错误修复
错误代码
Season = SWITCH(TRUE(), 'sales'[Month] = "December" || "January" , "Winter", 'sales'[Month] = "February" || "March" , "Spring", 'sales'[Month] = "April" || "May" || "June" , "Summer", 'sales'[Month] = "July" || "August" || "September" , "Monsoon", 'sales'[Month] = "October" || "November", "Autumn", "NA")
错误提示
无法将值'January'从文本类型转换为True/False类型。
问题原因
DAX的||(逻辑或)运算符要求两侧必须是布尔值(True/False)。原代码中类似'sales'[Month] = "December" || "January"的写法,会把文本"January"直接作为布尔条件使用,但DAX无法将文本转换为布尔值,因此触发类型转换错误。
正确的逻辑判断需要为每个选项单独完成列值与目标文本的相等校验,不能省略列引用。
修复后的代码
方式一:完整逻辑或判断
Season = SWITCH(TRUE(), 'sales'[Month] = "December" || 'sales'[Month] = "January", "Winter", 'sales'[Month] = "February" || 'sales'[Month] = "March", "Spring", 'sales'[Month] = "April" || 'sales'[Month] = "May" || 'sales'[Month] = "June", "Summer", 'sales'[Month] = "July" || 'sales'[Month] = "August" || 'sales'[Month] = "September", "Monsoon", 'sales'[Month] = "October" || 'sales'[Month] = "November", "Autumn", "NA")
方式二:使用IN函数简化(推荐)
用IN函数可以让代码更简洁易读,避免重复书写列名:
Season = SWITCH(TRUE(), 'sales'[Month] IN {"December", "January"}, "Winter", 'sales'[Month] IN {"February", "March"}, "Spring", 'sales'[Month] IN {"April", "May", "June"}, "Summer", 'sales'[Month] IN {"July", "August", "September"}, "Monsoon", 'sales'[Month] IN {"October", "November"}, "Autumn", "NA")
内容的提问来源于stack exchange,提问作者Divyajeet Singh
相关产品推荐
相关产品推荐

