我有一列包含文本数据。我要对其执行一些操作。
检查是否有特殊字符,然后从文本的第二部分中拆分并删除前导零,然后返回第二部分(不包含前导零)。
如果没有特殊字符,请删除前导零并返回文本
我使用搜索和替换功能在Excel中完成了此操作,但是我想在Power BI Power Query Editor中执行相同的操作。
要删除文本中的前导零,您可以使用以下自定义列表达式:
=Text.TrimStart([Column1], "0")
在Transform > Split Column > By Delimiter
下的查询编辑器中,您可以用定界符和一些其他设置来拆分列。在您的情况下,您可以使用不同的定界符几次。您还可以选择所需的部分和所需的部分。
您也可以将两个动作组合几次。
可以使用Text.PositionOfAny,Text.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
希望有帮助。它可能需要整理,但它应该可以为您提供所需的内容