使用 Power Query,应用过滤器以仅显示最高值

Using Power Query, apply filter to show only highest values

我试图只显示最新的修订版(下图中的 AKA REV)。这些将永远是字母。我知道如何按此对它们进行排序,但我想丢弃较低的修订版。

我假设问题是在使用字母字符而不是数字作为修订标记时试图找出“最新”修订。假设字符越多,版本越高,并且 Z > A,那么这应该适用于 powerquery

将数据加载到 powerquery(数据 .. table 来自 ... [x] 用作 headers)

添加列 .. 自定义列...命名为 dupe,公式为:

= try Number.From( List.Accumulate(Text.ToList([REV]), "", (state, current)=> state&Number.ToText(Character.ToNumber(current), "0"))) otherwise null

这会将文本 REV 转换为数字。

使用 dupe 列顶部的箭头过滤 [x] 以获取单个值。在公式栏中编辑生成的公式,以类似于与最大值比较的方式结束:

= Table.SelectRows(#"Added Custom", each ([dupe] = List.Max(#"Added Custom"[dupe])))

右键单击以删除多余的列。文件 .. 关闭并加载 ..

如果您的数据在表 1 中,请示例完整代码

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "dupe", each try Number.From( List.Accumulate(Text.ToList([REV]), "", (state, current)=> state&Number.ToText(Character.ToNumber(current), "0"))) otherwise null),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([dupe] = List.Max(#"Added Custom"[dupe]))),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"dupe"})
in #"Removed Columns"

假设,您需要过滤 REV 列中的最大值:

= Table.SelectRows(YourTable, let a = List.Max(YourTable[REV]) in each [REV] = a)

之前:

之后: