我有一个张开的表格,我可以从中选择数据。
当我尝试查看元数据时出现`sym
错误。任何人都可以提出可能发生这种情况的原因吗?
q)meta tablename
k){$[(20h>t)|77h<t:@x;`;98h>@. t:!x;`;t]}
'sym
.:
`sym
q.Q))
枚举向量未加载到会话中。要在 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
一切顺利!
您收到错误,因为缺少枚举的 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