使用 Power Query,应用筛选器以仅显示最高值

Posted

技术标签:

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

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

【问题讨论】:

只需使用过滤器 问题是数据是动态的,最高版本会发生变化。我需要它来找到最高值并只允许它出现 哪一列有值?生态等级? 列“REV” 最高值是什么意思? 【参考方案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"

以上是关于使用 Power Query,应用筛选器以仅显示最高值的主要内容,如果未能解决你的问题,请参考以下文章

power BI OTD不同的日期如何设置report 时间

Power BI 不同的人报告默认界面不同

Excel Power Query:工序产出数据的整合与提取

powerquery追加查询如何将导入数据表头不显示null

powerquery中使用原始列名作为前缀 啥意思?

POWER BI DAX函数应用-筛选器函数(上)