kdb/q 更新键控 table 元素的列表元素
kdb/q update a keyed table element's list element
我有一个 table 喜欢:
q)tbl[`XXX]
1977 1987 1997
我想更新年份列表中的第 n 个元素,所以上面变成
q)tbl[`XXX]
1997 1987 2007
需要它就位吗?
一直在查看文档,但很难搞清楚。
您可以将 table 视为一本翻转字典。
要进行字典更新,您首先要在键上建立索引:
q)tbl:([]XXX:1977 1987 1997)
q)dict:flip tbl
q)dict[`XXX;n]:2007
q)dict
XXX| 1977 1987 2007
因此,要对 table 执行就地更新,使用以下语法:
q)tbl:([]XXX:1977 1987 1997)
q)tbl[`XXX]
1977 1987 1997
q)tbl[n;`XXX]:2007
q)tbl[`XXX]
1977 1987 2007
qsql版的Jamies回答:
q)update XXX:2007 from `tbl where i=n
这也将允许您使用基于 table
中其他列的 where 子句
我有一个 table 喜欢:
q)tbl[`XXX]
1977 1987 1997
我想更新年份列表中的第 n 个元素,所以上面变成
q)tbl[`XXX]
1997 1987 2007
需要它就位吗? 一直在查看文档,但很难搞清楚。
您可以将 table 视为一本翻转字典。 要进行字典更新,您首先要在键上建立索引:
q)tbl:([]XXX:1977 1987 1997)
q)dict:flip tbl
q)dict[`XXX;n]:2007
q)dict
XXX| 1977 1987 2007
因此,要对 table 执行就地更新,使用以下语法:
q)tbl:([]XXX:1977 1987 1997)
q)tbl[`XXX]
1977 1987 1997
q)tbl[n;`XXX]:2007
q)tbl[`XXX]
1977 1987 2007
qsql版的Jamies回答:
q)update XXX:2007 from `tbl where i=n
这也将允许您使用基于 table
中其他列的 where 子句