KDB 如何创建长度为 n 的向量
KDB how to create a vector of length n
我正在尝试将日期列添加到 table,因此我想进行更新,将今天的日期添加到每一行。
http://www.timestored.com/b/forums/topic/add-a-column-to-a-table-kdb/
之后 link 我只想更新它,但我无法找到如何创建一个长度为 table 的矢量,其中填充了今天的日期。
听起来很简单,我就是找不到方法,非常感谢您的帮助。
您可以使用'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
正如 James 提到的,如果您 update/generate 使用原子 table 中的列,那么 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"
我正在尝试将日期列添加到 table,因此我想进行更新,将今天的日期添加到每一行。
http://www.timestored.com/b/forums/topic/add-a-column-to-a-table-kdb/
之后 link 我只想更新它,但我无法找到如何创建一个长度为 table 的矢量,其中填充了今天的日期。 听起来很简单,我就是找不到方法,非常感谢您的帮助。
您可以使用'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
正如 James 提到的,如果您 update/generate 使用原子 table 中的列,那么 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"