KDB:如何将表中的列初始化为String

时间:2018-12-19 20:41:10

标签: kdb

我注意到,只有在创建第一个非空/空条目之后,才会为列分配一个String数据类型。

meta select AsOfDate from t
c         t   f  a
AsOfDate 

插入记录后:

meta select AsOfDate from t
c         t   f  a
AsOfDate  C

是否有更干净的方法将字符串数据类型分配给列?

2 个答案:

答案 0 :(得分:2)

某些开发人员存储从未使用或访问的初始化/原型行(行0)。关键值使得调用代码不会获取它。或某种“软删除”标志列

一旦表中有真实的行,您可以删除原型行,但是逻辑很混乱,如果在表中有数百万行或将其持久化到磁盘时删除该行,则可能会耗费大量资金。

我希望表的“元”是粘滞的,以便在删除所有行时保留所有类型。

q)tbl:([] a:1; b:1.1; c:1#enlist "abc")
q)meta tbl
c| t f a
-| -----
a| j    
b| f    
c| C    
q)meta 1_tbl
c| t f a
-| -----
a| j    
b| f    
c|

答案 1 :(得分:1)

不幸的是,kdb +不允许在表创建期间将列类型定义为列表列表(字符串只是字符列表)。

您已经正确地注意到,必须确保您的第一个条目是字符串类型。