天天看点

Table.SplitColumn 格式转换

作者:可乐之滨

本期案例是进行如下格式转换:

Table.SplitColumn 格式转换

解题套路

1.Table.SplitColumn

解题思路:拆分函数的第三参数最终获取的是拆分后的结果,因此这里依据最终的结果进行转换。定义标题字段列表,进行遍历转换,判断依据是根据分隔符进行拆分并去除空值部分是否包含传递的字段部分,包含的返回对应的列表首项,否则返回空值。

Table.SplitColumn 格式转换
let name={"个人","客户","供应商"} in Table.SplitColumn(源,"数据",each List.Transform(name,(x)=>List.Select(Text.SplitAny(_,"【】 "),each Text.Contains(_,x)){0}? ??""),name)           

这里List.Select对应的转换格式比较多,可以自行扩展下。

2.Table.ToList

解题思路:根据指定的字段列表,获取字段与对应值的列表,接着转换为表并提升标题,最后进行表合并处理。

Table.SplitColumn 格式转换
Table.Combine(Table.ToList(源,each Table.PromoteHeaders(Table.FromColumns(List.Transform({"个人","客户","供应商"},(x)=>{x,try List.Select(Text.SplitAny(_{0},"【】"),(y)=>Text.Contains(y,x)){0} otherwise ""})))))           

3.List.Accumulate

解题思路:将源数据各行先进行拆分、去除空值处理,接着通过添加新增字段的模式遍历转换。【】内的数据按分隔符进行拆分,首项就是对应记录的字段名,拆分前的数据是记录对应的值。

Table.SplitColumn 格式转换
Table.Combine(List.Transform(源[数据],each Table.FromRecords({List.Accumulate(List.RemoveItems(Text.SplitAny(_,"【】 "),{""}),[],(x,y)=>Record.AddField(x,Text.Split(y,":"){0},y))})))           

以上是本期内容。

继续阅读