科技资讯
Text.PositionOf_提取重复值
2023-05-05 01:01  浏览:330

本期案例对敬请关注码中得重复值进行提取,前后转换效果如下:

解题套路

1.Text.PositionOf

解题思路:对敬请关注码进行拆分去重,再对拆分结果进行遍历查询在原敬请关注码中出现得位置个数,对于个数大于1得,返回敬请关注码值,其余得返回Null。最后对结果进行列合并。

Table.AddColumn(源,"重复",each Text.Combine(List.Transform(List.Distinct(Text.Split([敬请关注码],",")),(x)=>if List.Count(Text.PositionOf([敬请关注码],x,2))>1 then x else null),"、"))

这里也专业使用List.PositionOf,只要将拆分后得结果作为函数第壹参数即可。

Table.AddColumn(源,"重复",each let lst=Text.Split([敬请关注码],",") in Text.Combine(List.Transform(List.Distinct(lst),(x)=>if List.Count(List.PositionOf(lst,x,2))>1 then x else null),"、"))

2.Table.Group

解题思路:对敬请关注码进行拆分并转换为表,对敬请关注码进行分组并计算行数,最后筛选行数大于1得部分,进行深化合并。

Table.AddColumn(源,"重复",each Text.Combine(Table.SelectRows(Table.Group(Table.FromValue(Text.Split([敬请关注码],",")),"Value",{"a",Table.RowCount}),each [a]>1)[Value],"、"))

3.List.Accumulate

解题思路:对敬请关注码进行拆分排序,对各项进行逐项类似累加得操作,对于敬请关注码列表个数大于1得保留敬请关注码,其余返回null值。

Table.AddColumn(源,"重复",each Text.Combine(List.Accumulate(List.Sort(Text.Split([敬请关注码],","))&{"A"},{{},{}},(x,y)=>if x{1}={} or not List.Contains(x{1},y) then {x{0}&{if List.Count(x{1})>1 then x{1}{0} else null},{y}} else {x{0},x{1}&{y}}){0},"、"))

4.List.Difference

解题思路:List.Difference用于返回两个列表之间得差异数,但它有个特性,图片重复值。在本案例中,对敬请关注码进行拆分获的列表lst,然后用lst以及去重后得lst作为函数得两个参数,获的最终得结果。

Table.AddColumn(源,"重复",each let lst=Text.Split([敬请关注码],",") in Text.Combine(List.Distinct(List.Difference(lst,List.Distinct(lst))),"、"))

以上是本期内容。