Если единственными изменениями между прогонами является то, что записи добавляются в новую таблицу, вы можете просто сохранить переменную, обозначающую последний увиденный индекс, а затем выбрать только те строки, в которых idx
больше этого значения.
Если индексы постоянно растут, этого можно достичь с помощью запроса, подобного
lastidx:exec last idx from tbl
select from tbl where idx>lastidx
Если значения idx не всегда увеличиваются монотонно, вы можете вместо этого вести подсчет количества строк и только
lasti:count tbl
select from tbl where i>=lasti
Это не требует сохранения всей таблицы в памяти для использования в следующей итерации.
Например, для начала со старой таблицей было 4 строки, поэтому lasti
= 4
q)tbl
idx name age
-------------
0 Tom 30
1 Jerry 25
2 Bob 30
3 Ken 45
q)lasti
4
Приходит новая таблица и при запуске команды выбирает новую строку
q)tbl
idx name age
-------------
0 Tom 30
1 Jerry 25
2 Bob 30
3 Ken 45
4 Sam 40
q)select from tbl where i>lasti
idx name age
------------
4 Sam 40
lasti
затем можно обновить, чтобы отразить новый счет
q)lasti:count tbl
q)lasti
5