【问题标题】:LEFT function using SWITCH: "DAX Comparison operations do not support comparing values of type Integer with values of type Text."使用 SWITCH 的 LEFT 函数:“DAX 比较操作不支持将 Integer 类型的值与 Text 类型的值进行比较。”
【发布时间】:2021-12-19 16:08:09
【问题描述】:

这是我第一次在 stackoverflow 上发帖,昨天刚刚进入 PowerBI 世界,因为我的公司使用 Access 和 VB 代码编写所有报告,我已经受够了。

我目前正在尝试创建一个将写入序列号的新列。这可以通过使用 PNUM 的前 2 或 4 位数字来实现。例如,系列 20 将表示为 2003、2010 或 RH201564、CH20 3456等对于我的新专栏,我希望所有这些结果都显示为 20。

下面是我当前使用 SWITCH 中的 LEFT 函数编写此专栏的代码。当我收到标题中提到的这个错误时,我不明白。

FormulaCode2 = 
SWITCH(
        LEFT('Overall Product Portfolio Planning'[PNUM],2 ="RH"),20,
        LEFT('Overall Product Portfolio Planning'[PNUM],2 ="ZR"),20,
        LEFT('Overall Product Portfolio Planning'[PNUM],2 ="CD"),20
        )

注意:起初,我尝试了最简单的方法,尝试创建一个列表的 VAR,例如 {"A".."z"} 来捕获可能出现在前面的 AA-zz 的所有可能形式系列。但是,我无法走得很远。我希望 DAX 能够使用通配符,这样放置 ??20 就容易多了!

如果有人阅读了我的长篇解释,我将不胜感激。我希望回馈这个社区并尽可能多地学习!谢谢。

The [PNUM] Column

【问题讨论】:

  • 这种转换更适合 M/PowerQuery,为什么不使用它呢?您能否提供更多关于“整体产品组合计划”[PNUM] 中值的示例(以表格形式)?还有那些不应该被限定为 20 以避免误报
  • 所以,我从 [PNUM] 中提取的列包含文本和数字。由于 SWITCH 和 LEFT 与文本不兼容,我如何能够使用 PNUM 作为参考来获取我的新系列列?我添加了 PNUM 列的图片。
  • SWITCH 可以很好地处理文本,错误是由于 LEFT 中的布尔值而不是整数

标签: powerbi switch-statement dax


【解决方案1】:

你的语法有点不对劲。 SWITCH 的第一个参数是要检查的内容。

我想这就是你想要写的。

FormulaCode2 =
SWITCH (
    LEFT ( 'Overall Product Portfolio Planning'[PNUM], 2 ),
    "RH", 20,
    "ZR", 20,
    "CD", 20
)

另一方面,如果要提取第 3 和第 4 个字符,则可以使用 MID 而不是 LEFT。

MID ( 'Overall Product Portfolio Planning'[PNUM], 3, 2 )

【讨论】:

  • 谢谢!我对 DAX 代码缺乏一些基本的了解,非常感谢帮助我了解我是否遗漏了!
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
相关资源
最近更新 更多