查看: 959|回复: 14

PowerQuery拼接两列数据时为什么显示为Null或者Error?

[复制链接]

26

主题

722

帖子

4114

积分

版主

Rank: 7Rank: 7Rank: 7

积分
4114
 楼主| 发表于 2023-3-17 14:58:22 | 显示全部楼层 |阅读模式
本帖最后由 Alpha 于 2023-3-18 09:00 编辑

在Power Query中,拼接操作通常使用“&”符号完成。如果要拼接两列,并且其中一列为空,拼接的结果也将为空。这是因为在Power Query中,将空值与其他值拼接的结果仍然是空值。这意味着,如果想要在拼接时避免结果为空,则需要确保要拼接的两个列都不为空。


可以使用Power Query中的“if”语句来检查某个列是否为空,然后根据需要选择是否执行拼接操作。
例如,以下公式将检查两个列是否都不为空,如果两个列都不为空,则拼接这两个列:
  1. = if Text.Length([Column1]) > 0 and Text.Length([Column2]) > 0 then [Column1] & [Column2] else null
复制代码

在这个公式中,如果列“Column1”和“Column2”都不为空,则使用“&”运算符将它们拼接在一起。否则,返回空值(null)。

请注意,在使用“&”运算符进行拼接时,拼接的列必须具有相同的数据类型。如果两个列的数据类型不同,可能需要使用“Text.From”函数将其转换为文本类型。
例如,以下公式将把一个日期列和一个文本列拼接在一起:
  1. = if Text.Length([DateColumn]) > 0 and Text.Length([TextColumn]) > 0 then Text.From([DateColumn]) & [TextColumn] else null
复制代码
在这个公式中,“Text.From”函数将日期列转换为文本类型,以便可以与文本列拼接在一起。

如果要在拼接时忽略空值,您可以使用Power Query中的“Text.Combine”函数。该函数可以将文本列中的所有非空值拼接在一起,并使用指定的分隔符将它们分隔开来。
以下是一个示例公式:
  1. = Text.Combine(List.RemoveNulls({[Column1], [Column2]}), ", ")
复制代码


在这个公式中,“List.RemoveNulls”函数会从包含列“Column1”和“Column2”的列表中删除空值。然后,“Text.Combine”函数将非空值拼接在一起,并使用逗号和空格作为分隔符。

如果要在拼接时忽略空格和其他空白字符,可以使用“Text.Trim”函数。
例如,以下公式将拼接两列,并删除结果中的所有空白字符:

  1. = Text.Trim([Column1] & [Column2])
复制代码

在这个公式中,“Text.Trim”函数会从拼接的结果中删除前导和尾随空格以及其他空白字符。

注意:Power Query中的函数和公式可能因版本和环境而异,如遇特殊情况可回帖共同讨论



回复

使用道具 举报

257

主题

1593

帖子

7974

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7974
发表于 2023-3-17 15:05:55 | 显示全部楼层
感谢小方老师!正遇到这个问题呢!完美用IF解决!
回复 支持 反对

使用道具 举报

13

主题

134

帖子

907

积分

高级会员

Rank: 4

积分
907
发表于 2023-3-17 23:31:12 | 显示全部楼层
感谢小方老师!
回复 支持 反对

使用道具 举报

19

主题

549

帖子

2179

积分

金牌会员

Rank: 6Rank: 6

积分
2179
发表于 2023-3-18 14:16:00 | 显示全部楼层
感谢小方老师~
回复 支持 反对

使用道具 举报

330

主题

1300

帖子

9219

积分

论坛元老

Rank: 8Rank: 8

积分
9219
发表于 2023-3-19 22:09:37 | 显示全部楼层
感谢小方老师~
回复 支持 反对

使用道具 举报

13

主题

450

帖子

2640

积分

金牌会员

Rank: 6Rank: 6

积分
2640
发表于 2023-3-20 10:16:27 | 显示全部楼层
感谢小方老师~
回复 支持 反对

使用道具 举报

52

主题

469

帖子

3037

积分

论坛元老

Rank: 8Rank: 8

积分
3037
发表于 2023-3-20 10:33:20 | 显示全部楼层
感谢小方老师~
回复 支持 反对

使用道具 举报

6

主题

323

帖子

3248

积分

论坛元老

Rank: 8Rank: 8

积分
3248
发表于 2023-3-20 14:19:39 | 显示全部楼层
感谢小方老师~
回复 支持 反对

使用道具 举报

27

主题

815

帖子

4146

积分

论坛元老

Rank: 8Rank: 8

积分
4146
发表于 2023-3-20 14:20:20 | 显示全部楼层
感谢分享
回复

使用道具 举报

9

主题

420

帖子

2225

积分

金牌会员

Rank: 6Rank: 6

积分
2225
发表于 2023-3-20 14:30:49 | 显示全部楼层
感谢小方老师~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表