2017-04-27 95 views
2

我想將一個日期列添加到表中,所以我想要做一個更新,將今天的日期添加到每一行。KDB如何創建一個長度爲n的向量

http://www.timestored.com/b/forums/topic/add-a-column-to-a-table-kdb/ 

下面這個鏈接,我只想更新它,但我不能找出如何創建充滿了今天的日期長度計數表的載體。 聽起來很簡單,我只是無法找到辦法做到這一點,所以感謝任何幫助。

回答

4

您可以使用'take'功能#。例如。

q)length:10 
q)length#.z.d 
2017.04.27 2017.04.27 2017.04.27 2017.04.27 2017.04.27 2017.04.27 2017.04.27 2017.04.27 2017.04.27 2017.04.27 

儘管您可能只是定期進行更新,

q)t 
s p 
----- 
IBM 1 
IBM 1 
IBM 1 
q)update dt:.z.d from t 
s p dt 
---------------- 
IBM 1 2017.04.27 
IBM 1 2017.04.27 
IBM 1 2017.04.27 
+0

哦,是的,甚至不需要那個矢量...不錯。謝謝 – chrise

+0

我同意@ james-little,只需使用'update dt:.z.d from t'方法;不需要剪切矢量並追加。 – davidcrossey

4

正如詹姆斯所提到的,如果更新/使用原子然後KDB將自動開啓原子成需要長度的矢量產生一個表中的一列。

q)tab:([] col1:`a`b`c;col2:1 2 3) 
q)update date:.z.d from tab 
col1 col2 date 
-------------------- 
a 1 2017.04.27 
b 2 2017.04.27 
c 3 2017.04.27 

這也會發生翻轉

q)flip (1 2 3;`a) 
1 `a 
2 `a 
3 `a 

然而,對於字符串或其他嵌套結構不會出現這種情況。在這種情況下,你必須手動生成矢量

q)update str:count[i]#enlist "hello" from tab 
col1 col2 str 
----------------- 
a 1 "hello" 
b 2 "hello" 
c 3 "hello" 
相關問題