KDB如何创建长度为n

时间:2017-04-27 09:14:58

标签: kdb

我正在尝试向表中添加日期列,因此我想进行更新,将每日的日期添加到每一行。

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

按照该链接我会更新它,但我无法找到如何创建一个填充今天日期的长度计数表向量。 听起来很简单,我只是找不到这样做的方法,所以感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

您可以使用'take'功能#。 E.g。

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

答案 1 :(得分:4)

正如James所说,如果使用原子更新/生成表中的列,则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"