在使用powerquery进行数据处理时,需要合并动态数量的列,且列中值会有空的情况;
一开始使用的是如下代码:
= Table.CombineColumns(已透视列,List.Skip(Table.ColumnNames(已透视列),4),Combiner.CombineTextByDelimiter("|", QuoteStyle.None),"已合并")
其中List.Skip(Table.ColumnNames(已透视列),4)表示,先获取列名的list,然后从list中剔除固定的前4个值,此时只要将固定的列排到前面,则能动态获取要合并的列。
而上面的代码会出现如果列中存在null值,在合并后会出现多个|,由于是动态列,且null值也不固定,无法进行替换;
无意中发现在合并2列时的代码
= Table.AddColumn(替换的值2, "已合并", each Text.Combine({[颜色], Text.From([值], "zh-CN")}, ":"), type text)
当有一列值为null时,合并的列的值就只包含有有值的列,而不包含分隔符,这不正是我想要的结果么,此时按照思路修改代码如下:
= Table.CombineColumns(已透视列,List.Skip(Table.ColumnNames(已透视列),4),each Text.Combine(_,"|"),"已合并")
运行结果符合预期。
思考原因:应该是由于Text.Combine合并的是文本,而null值为空则自动过滤不进行用分隔符合并了。
网友评论