从列表中获取上限最大值
Get Capped Maximum Value From List
我有一个值列表,范围从 500 到 1000。我有第二个值列表,表示 500-1000 范围内的相关断点(500、520、540、600 等)。我需要 return 第二个列表中小于第一个列表中给定数字中的值的最大值。我注意到 "N" 函数可以让你为它们设置条件,例如,如果我这样做:
List.Max(List.FirstN(SomeTable[Breakpoints], each _ < 530))
对我来说 return 是 520。但是,如果我将其放入 AddColumn 函数并将 530 更改为本地字段引用:
Table.AddColumn(MyTable, "MinValue", each List.Max(List.FirstN(SomeTable[Breakpoints], each _ < [SomeNumbers])))
然后我收到 "We cannot apply field access to the type Number" 错误。我正在尝试做的是可能的,我只是格式化错误吗?我总是对 PQ 中的范围和引用感到困惑,所以可能就是这样。
在 each
之后,[SomeNumbers]
本身就是 _[SomeNumbers]
的缩写(这是您在过滤列时看到的)。在 List.FirstN
调用中,_
引用列表中的数字而不是 table 中的一行:_
的值与最接近的 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]))
我有一个值列表,范围从 500 到 1000。我有第二个值列表,表示 500-1000 范围内的相关断点(500、520、540、600 等)。我需要 return 第二个列表中小于第一个列表中给定数字中的值的最大值。我注意到 "N" 函数可以让你为它们设置条件,例如,如果我这样做:
List.Max(List.FirstN(SomeTable[Breakpoints], each _ < 530))
对我来说 return 是 520。但是,如果我将其放入 AddColumn 函数并将 530 更改为本地字段引用:
Table.AddColumn(MyTable, "MinValue", each List.Max(List.FirstN(SomeTable[Breakpoints], each _ < [SomeNumbers])))
然后我收到 "We cannot apply field access to the type Number" 错误。我正在尝试做的是可能的,我只是格式化错误吗?我总是对 PQ 中的范围和引用感到困惑,所以可能就是这样。
在 each
之后,[SomeNumbers]
本身就是 _[SomeNumbers]
的缩写(这是您在过滤列时看到的)。在 List.FirstN
调用中,_
引用列表中的数字而不是 table 中的一行:_
的值与最接近的 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]))