Power Query M - 我们无法将空值转换为逻辑类型。

3
在Power BI中,我有一个M查询,用于测试一列的值是否等于或不等于null
当我添加语句[Sale.Revenue] <> null时,我会收到一个错误提示,但对于语句[UserRole.Name] = null却可以正常工作。通过删除语句并重新添加进行测试。 我们无法将null值转换为逻辑类型。 这似乎应该可以工作,但我无法解决问题。
add_user_role_group = Table.AddColumn(
    join_expand_sale, 
    "UserRole.Group1", 
    each (
      if [UserRole.Name] = null and
         [Sale.Revenue] <> null then
        "Group1"
      else if Text.Contains([UserRole.Name], "Manager") then
        "Group2"
      else
        "Undefined"
    )
  )

我相信这一定是一个非常显然的问题:/ 感谢你对此提出的想法。

3个回答

10

您的一行数据同时在UserRole.Name和Sale.Revenue两个字段中都有空值。您需要明确检查并将其添加到"未定义"组中。

所发生的情况是,第一个条件失败了,因为Sale.Revenue为空。第二个条件调用Text.Contains,当[UserRole.Name]为空时返回null(Text.Contains返回可空逻辑值)。null既不是真也不是假,所以您会得到错误。


谢谢伙计。我考虑了你的答案,首先测试了UserRole.Name = null,然后在其中开始了一个新的if语句,最后在最后一个else语句之后处理了null收入。感谢您的见解。 - Jay Killeen

3

经过这样的旅程,我终于找到了 Text.Length !!

您可以像这样解决您的问题:

if Text.Length([UserRole.Name]) = 0 and
         Text.Length([Sale.Revenue]) > 0 then

我希望能够帮助您。

参考:Power Query M - Text.Length


1

你的问题出在Text.Contains公式上。你创建了一个if语句,期望返回一个true或false的表达式。

当Text.Contains公式包含一个null值时,它会返回'null'作为答案,而不是true或false。你可以调整你的代码:

Text.Contains([UserRole.Name], "Manager")

Text.Contains([UserRole.Name]??"", "Manager")

?? 是 COALESCE 运算符。如果它发现一个空值,它现在将其视为“”。它不再返回 null,而是返回 true 或 false。

有关文本函数的更多信息,请参阅本文:https://gorilla.bi/power-query/text-functions/

享受 Power Query,

Rick


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接