Power Query-查找拆分并删除

问题描述 投票:0回答:2

我有一列包含文本数据。我要对其执行一些操作。

  1. 检查是否有特殊字符,然后从文本的第二部分中拆分并删除前导零,然后返回第二部分(不包含前导零)。

  2. 如果没有特殊字符,请删除前导零并返回文本

我使用搜索和替换功能在Excel中完成了此操作,但是我想在Power BI Power Query Editor中执行相同的操作。

enter image description here

powerbi powerquery m
2个回答
0
投票

要删除文本中的前导零,您可以使用以下自定义列表达式:

=Text.TrimStart([Column1], "0")

Transform > Split Column > By Delimiter下的查询编辑器中,您可以用定界符和一些其他设置来拆分列。在您的情况下,您可以使用不同的定界符几次。您还可以选择所需的部分和所需的部分。

您也可以将两个动作组合几次。


0
投票

可以使用Text.PositionOfAnyText.Range和变量。您需要使用以下代码创建一个新的计算列:

所以len,position_special,position_n,position_0是变量

len-获取文本的长度以获取后面的子字符串

position_special = Text.PositionOfAny([Column1], {"-", "_"}, Occurrence.Last)

查找该列中的“-”或“ _”,如果不存在,则将返回-1。您可以在其自己的自定义列中对其进行测试。

position_n = position_special + 1

只需在字符串的起始位置加1

return_value = if position_special <> -1 then Text.Range([Column1], position_n , (len - position_n)) else Text.TrimStart([Column1], "0")

此部分是IF / THEN / ELSE部分,因此它检查它是否具有特殊字符,不等于-1,然后将得到该范围内的文本,如果不是,则应找到前导“ 0” 。计算列的完整代码为:

let
len = Text.Length([Column1]),
position_special = Text.PositionOfAny([Column1], {"-", "_"}, Occurrence.Last),
position_n = position_special + 1,
return_value = if position_special <> -1 then Text.Range([Column1], position_n , (len - position_n)) else Text.TrimStart([Column1], "0")  
in  
return_value

enter image description here

希望有帮助。它可能需要整理,但它应该可以为您提供所需的内容

© www.soinside.com 2019 - 2024. All rights reserved.