我有一个值列表,范围从500到1000。我有第二个值列表,表示500-1000范围内的相关断点(500,520,540,600等)。我需要返回第二个列表中的最高值,该值小于第一个列表中给定数字的值。我注意到" N"函数允许你为它们设置条件,例如,如果我这样做:
List.Max(List.FirstN(SomeTable[Breakpoints], each _ < 530))
它正确地向我返回520。但是,如果我将它放在AddColumn函数中并将530更改为本地字段引用:
Table.AddColumn(MyTable, "MinValue", each List.Max(List.FirstN(SomeTable[Breakpoints], each _ < [SomeNumbers])))
然后我得到一个&#34;我们无法对类型Number&#34;进行字段访问。错误。我试图做的是什么,我只是把它格式错了?我总是对PQ中的范围和引用感到困惑,所以它可能就是这样。
答案 0 :(得分:1)
在each
之后,[SomeNumbers]
本身就是_[SomeNumbers]
的缩写(这是您在过滤列时看到的内容)。在List.FirstN
调用中,_
引用列表中的数字而不是表格中的行:_
的值与最接近的each
相关联,其中是通过_
和each
的外观之间的嵌套层数来衡量的。因此,在您的代码[SomeNumbers]
中,我们试图找到一个数字上的SomeNumbers列,这个数字并不存在。
有几种方法可以解决这个问题:
let...in
语句存储SomeNumbers列的当前值,以便稍后使用它,如下所示: each
let
currentNumber = [SomeNumbers],
result = List.Max(List.FirstN(SomeTable[Breakpoints], each _ < currentNumber))
in
result
(x) => ...
语法显式定义函数,而不是使用each
两次,如下所示: each List.Max(List.FirstN(SomeTable[Breakpoints], (point) => point < [SomeNumbers]))