MS Power Query - 消除一组分隔字符串中的重复项
MS Power Query - eliminating duplicates in a set of delimited strings
我有 Excel 看起来像这样的数据:
Sources Targets Routes
Lemons Chair A,D
Lemons Chair D,F
Oranges Chair B,F,G
Oranges Chair B,C
Oranges Door A,G
Oranges Door B,C
我正在尝试使用 Power Query 将其压缩为:
Sources Targets Routes
Lemons Chair A,D,F
Oranges Chair B,C,F,G
Oranges Door A,B,C,G
也就是说,对于每个 Source/Target 对,我需要
- 拆分逗号分隔的路线,
- 消除重复路由
- 将路由组合回逗号分隔列表
- 在 Source/Target 对的单个记录中显示它。
路由源数据中最多有 3 条路由。
我很确定我需要将 Routes 列拆分为 3 列,然后使用 Group。但是我卡住了。
建议?
下面的代码实现了您概述的步骤以及对路线的排序。
它不使用拆分列,但 Text.Split.
SplittedRoutes 步骤是使用转换选项卡上的一些文本转换功能创建的,然后调整为使用 Text.Split。
同样,GroupedRows 步骤是在 Transform 选项卡上使用 Group By 创建的,使用操作 All Rows,然后调整为以下代码。
let
Source = ExcelData,
SplittedRoutes = Table.TransformColumns(Source,{{"Routes", each Text.Split(_,",")}}),
ExpandedRoutes = Table.ExpandListColumn(SplittedRoutes, "Routes"),
RemovedDuplicates = Table.Distinct(ExpandedRoutes, {"Sources", "Targets", "Routes"}),
GroupedRows = Table.Group(RemovedDuplicates, {"Sources", "Targets"}, {{"Routes", each Text.Combine(List.Sort(_[Routes]),","), type text}})
in
GroupedRows
我有 Excel 看起来像这样的数据:
Sources Targets Routes
Lemons Chair A,D
Lemons Chair D,F
Oranges Chair B,F,G
Oranges Chair B,C
Oranges Door A,G
Oranges Door B,C
我正在尝试使用 Power Query 将其压缩为:
Sources Targets Routes
Lemons Chair A,D,F
Oranges Chair B,C,F,G
Oranges Door A,B,C,G
也就是说,对于每个 Source/Target 对,我需要
- 拆分逗号分隔的路线,
- 消除重复路由
- 将路由组合回逗号分隔列表
- 在 Source/Target 对的单个记录中显示它。
路由源数据中最多有 3 条路由。 我很确定我需要将 Routes 列拆分为 3 列,然后使用 Group。但是我卡住了。
建议?
下面的代码实现了您概述的步骤以及对路线的排序。 它不使用拆分列,但 Text.Split.
SplittedRoutes 步骤是使用转换选项卡上的一些文本转换功能创建的,然后调整为使用 Text.Split。
同样,GroupedRows 步骤是在 Transform 选项卡上使用 Group By 创建的,使用操作 All Rows,然后调整为以下代码。
let
Source = ExcelData,
SplittedRoutes = Table.TransformColumns(Source,{{"Routes", each Text.Split(_,",")}}),
ExpandedRoutes = Table.ExpandListColumn(SplittedRoutes, "Routes"),
RemovedDuplicates = Table.Distinct(ExpandedRoutes, {"Sources", "Targets", "Routes"}),
GroupedRows = Table.Group(RemovedDuplicates, {"Sources", "Targets"}, {{"Routes", each Text.Combine(List.Sort(_[Routes]),","), type text}})
in
GroupedRows