KDB+/Q:如何在给定的时间内或在给定的行数内获取所有行?

KDB+/Q:如何在给定的时间内或在给定的行数内获取所有行?,kdb,Kdb,如何使用KDB+/Q在时间或行计数中创建具有回望窗口的选择 i、 e.根据下表: time (seconds) | val --------------------- 1 | 5 2 | 6 3 | 7 4 | 8 6 | 9 如何最有效地: a选择获取最后一行和给定最后一行的前两行,即[]时间:3,4,6;瓦尔:7,8,9 b选择大于或等于2秒的事件,即[]时间:

如何使用KDB+/Q在时间或行计数中创建具有回望窗口的选择

i、 e.根据下表:

time (seconds) | val
---------------------
1              | 5
2              | 6
3              | 7
4              | 8
6              | 9
如何最有效地:

a选择获取最后一行和给定最后一行的前两行,即[]时间:3,4,6;瓦尔:7,8,9 b选择大于或等于2秒的事件,即[]时间:4,6;瓦尔:8,9 我已经尝试了wj和xbar,它们在整个表上都很好地工作,但是,我正在寻找本例中可以有效地应用于单行及其各自的回望窗口的两个函数


谢谢

这是一种解决您两个问题的通用方法:

q)t:([]time:1 2 3 4 6;val:5 6 7 8 9)

/get last row and previous 2
q)select from t where {x|next x}/[2;time=6]
time val
--------
3    7
4    8
6    9

/or alternatively (depending on exactly how you define "last row")
select from t where {x|next x}/[2;time=max time]
select from t where {x|next x}/[2;i=4]

/events >=2 seconds old (and the previous 1)
q)select from t where {x|next x}/[1;2<=deltas time]
time val
--------
4    8
6    9