什么是kdb +大写C类型?

时间:2017-07-31 12:14:09

标签: kdb qpython

在尝试查询kdb实例时遇到了一些类型转换问题(使用qPython)。使用meta <tablename>获取表的元数据时,它返回以下内容:

c          | t f a
-----------| -----
time       | t
sym        | s   g
OrderID    | C
ClOrderID  | g
OrigClOrdID| g
SecurityID | s
Symbol     | s
Side       | c
OrderQty   | f
CumQty     | f
LeavesQty  | f
AvgPx      | f
Currency   | s
Commission | f
CommType   | c
CommValue  | f
Account    | s
MsgType    | s
OrdStatus  | s
OrderTime  | t

现在OrderID列是导致我遇到麻烦的一栏。我查看了kdb docs我可以找到te c类型,表明列类型是char,但我找不到(大写)C类型的任何内容。

我已经尝试过将它当作一个炭色来处理,但那不起作用。

关于C的含义的任何想法?

2 个答案:

答案 0 :(得分:2)

资本类型是嵌套列表 - 因此OrderID列是一个列表,其中列表的每个元素都是类型字符列表,例如

q)meta ([]OrderID:("hello";"there");charlist:"ht")
c       | t f a
--------| -----
OrderID | C
charlist| c    

答案 1 :(得分:1)

同样在定义空表时,可以将列类型定义为char列表。

q)t:([] oid:();price:`float$();side:`char$() )
q)meta t
c    | t f a
-----| -----
oid  |          //type undefined 
price| f
side | c

q)meta t upsert `oid`price`side!("123";100.01;"B")
c    | t f a
-----| -----
oid  | C
price| f
side | c

在这种情况下插入第一条记录时必须小心,否则,可能需要一些无意的结构。 如果oid作为符号而不是char列表插入的示例。

q)show meta t upsert `oid`price`side!(`$"123";100.01;"B")
c    | t f a
-----| -----
oid  | s
price| f
side | c