【发布时间】:2014-02-24 12:15:58
【问题描述】:
在 KDB 中进行分组时。我必须在该组中为一列找到第一个非空值
例如
t:([]a:1 1 1 2;b:0n 1 3 4 )
select first b by a from t
我找到了一种方法来实现这一点:
select first b except 0n by a from t
我不确定这是否是正确的方法。请提供建议。
【问题讨论】:
在 KDB 中进行分组时。我必须在该组中为一列找到第一个非空值
例如
t:([]a:1 1 1 2;b:0n 1 3 4 )
select first b by a from t
我找到了一种方法来实现这一点:
select first b except 0n by a from t
我不确定这是否是正确的方法。请提供建议。
【问题讨论】:
这对我来说似乎是个好方法。
两种选择包括:
select first b where not null b by a from t
好处是它不依赖于特定的列类型,也许更清楚地解释了您的意图,但它会稍长一些。或者
select b:last fills reverse b by a from t
在某些测试运行中哪个是最快的方法。
在 kdb 中,做事总是有多种方法,但从来没有真正正确或错误的答案。
【讨论】: