2017-07-17 79 views
0

我有一個表,如:KDB/Q更新密鑰表元素的列表元素

q)tbl[`XXX] 
1977 1987 1997 

,我想更新從多年的列表中第n個元素,因此上述變成

q)tbl[`XXX] 
1997 1987 2007 

而且需要它到位? 一直在尋找文檔,但很難搞清楚。

回答

3

您可以將該表視爲翻轉的字典。 做一個字典更新,指數在關鍵的第一:

q)tbl:([]XXX:1977 1987 1997) 
    q)dict:flip tbl 
    q)dict[`XXX;n]:2007 
    q)dict 
    XXX| 1977 1987 2007 

因此做一個就地更新桌子上使用的語法如下:Jamies答案

q)tbl:([]XXX:1977 1987 1997) 
    q)tbl[`XXX] 
    1977 1987 1997 
    q)tbl[n;`XXX]:2007 
    q)tbl[`XXX] 
    1977 1987 2007 
+0

這樣做,謝謝。 –

+0

我有一個後續問題:現在,更新被保存在內存中。但是,如果我想要在重新啓動kdb後繼續進行更改,那麼要做什麼?盡我所知,我們需要能夠將更改保存到磁盤! –

+0

有許多方法可以將表格保存下來。 – jomahony

0

QSQL版本:

q)update XXX:2007 from `tbl where i=n 

這也將允許您使用其中根據表中的其他列第