KDB - 为什么插入不起作用时更新插入起作用

KDB - Why does upsert work when insert does not

我正在尝试在 KDB tickerplant 中操作 upd 函数,以便它可以接受 table 作为数据参数。

尝试在本地插入时,插入似乎不喜欢从 table 传递数据,但在从 feedhandler 传递时会很好地处理列表列表。这是为什么?

tbl1:([] sym:`symbol$(); price:`int$(); vol:`long$())
tbl2:([] sym:3?`3;price:3?10i;vol:3?100j)
insert[tbl1;(value each tbl2)]
'type
upd:{[t;x] upsert[t;x]}
upd[`tbl1;(value each tbl2)]
`tbl1

你上面的例子有两个问题

  1. insert要求左参数为符号原子
  2. 正确的参数需要与 table
  3. 的列对齐
q)insert[`tbl1;value flip tbl2];tbl1
sym price vol
-------------
lhk 8     49
mga 1     82
mio 7     40

upsert更灵活