0

我有一个张开的表格,我可以从中选择数据。

当我尝试查看元数据时出现`sym错误。任何人都可以提出可能发生这种情况的原因吗?

 q)meta tablename
 k){$[(20h>t)|77h<t:@x;`;98h>@. t:!x;`;t]}
 'sym
 .:
 `sym
 q.Q))
4

2 回答 2

2

枚举向量未加载到会话中。要在 hdb 分区内复制启动 q - 展开的表都是有效的,但由于未加载 sym,meta 将失败。

glen@aquaq:~>q hdb1/

q)2#trades
sym time                          src price size
------------------------------------------------
3   2014.04.22D08:00:00.937000000 10  25.02 5167
3   2014.04.22D08:00:04.567000000 9   25.05 3376
q)meta trades
k){$[(20h>t)|77h<t:@x;`;98h>@. t:!x;`;t]}
'sym
.:
`sym
q.Q))\\

q)sym:get`:../sym
q)meta trades
c    | t f a
-----| -----
sym  | s   p
time | p
src  | s
price| f
size | i

一切顺利!

于 2014-10-02T15:27:06.187 回答
1

您收到错误,因为缺少枚举的 sym 文件。通常,Q 解释器会在展开目录上方的一个目录中查找它。

例如:如果您发出这样的保存命令:

       q)  t:([]sym:`a`b;id:1 2)

       q) `:/home/test/t/ set .Q.en[`:test] t

它将在 /home/test 内为展开的表 't' 创建目录 't',并在目录 /home/test 中创建枚举的 'sym' 文件。

要加载此表:

       q)\l /home/test

另一件事是,您还可以像这样手动加载枚举的“sym”文件:

       q)sym:get `:path to sym file

内存中的所有表都会自动映射到这个新列表。

参考: http ://code.kx.com/q4m3/14_Introduction_to_Kdb+/#1422-splayed-tables-with-symbol-columns

于 2014-10-02T16:46:49.027 回答