【问题标题】:Using Power Query, apply filter to show only highest values使用 Power Query,应用筛选器以仅显示最高值
【发布时间】:2021-02-11 18:28:51
【问题描述】:

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

【问题讨论】:

  • 只需使用过滤器
  • 问题是数据是动态的,最高版本会发生变化。我需要它来找到最高值并只允许它出现
  • 哪一列有值?生态等级?
  • 列“REV”
  • 最高值是什么意思?

标签: excel powerquery excel-2016


【解决方案1】:

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

将数据加载到 powerquery 中(数据 .. 来自 ... [x] 的表用作标题)

添加列..自定义列...命名为 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])))

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

如果您的数据在 Table1 中,则示例完整代码

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"

【讨论】:

    【解决方案2】:

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

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

    之前:

    之后:

    【讨论】:

    • 这似乎对我不起作用。我收到错误“Expression.SyntaxError: Token RightParen expected.”
    • 所以你错过了正确的括号,把它放在正确的地方)
    • 现在它会导致“Expression.Error:在评估期间遇到循环引用。”
    • 确保在公式的两个位置引用上一步中的同一个表(在我的示例中为 YourTable)。
    • 我想我不太了解电源查询的工作原理。这是当前的高级编辑器代码let Source = Csv.Document(File.Contents("H:\tvolmer\Production Planner\Data\SN Flow Tracking Data\FullSNList.csv"),[Delimiter=",",Encoding=1252]), #"Promoted Headers" = Table.PromoteHeaders(Source), #"Removed Columns" = Table.RemoveColumns(#"Promoted Headers",{"State"}), #"Sorted Rows" = Table.Sort(#"Removed Columns",{{"Config", Order.Ascending}}), #"Filtered Rows" = Table.SelectRows(#"Sorted Rows", each ([Config] = ConfigParameter)) in #"Filtered Rows"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 2023-02-02
    • 2020-07-21
    • 2019-03-16
    • 1970-01-01
    相关资源
    最近更新 更多