首页 > 解决方案 > 在 q kdb 中检索展开的表

问题描述

我尝试了以下代码来检索张开的表格,但徒劳无功。加载 sym 后,该表仍将其符号列保留为裸枚举。

\l dir/file
load `:dir/file/sym
get `:/dir/file/

这是文件结构

file 
-sym 
-col1
-col2
-col3
-.d

请帮忙

标签: loadenumerationkdb

解决方案


因此,在此示例中,“文件”是您的表,您应该在与表相同的目录中有另一个 sym 文件(这是枚举列映射到的不同符号列表)。因此,在您的目录 'dir' 中应该存在一个 sym 文件,这就是您需要加载的内容,而不仅仅是名为 sym 的列,这就是您正在执行的操作。

这是一个适合您的工作示例,退出并重新启动 q 后的前 2 行显示代码中的问题。

q)t:([]sym:10?`2;time:.z.t;alpha:til 10)
q)`:newDir/t/ set .Q.en[`:newDir]t
`:newDir/t/
q)
q)\\

C:>q
q)get`:newDir/t/sym
`sym!0 1 2 3 4 5 4 6 4 7
q)get`:newDir/sym
`mi`ig`ka`ba`kf`je`lk`fg
q)get`:newDir/t
sym time         alpha
----------------------
0   06:07:57.191 0
1   06:07:57.191 1
2   06:07:57.191 2
3   06:07:57.191 3
4   06:07:57.191 4
5   06:07:57.191 5
4   06:07:57.191 6
6   06:07:57.191 7
4   06:07:57.191 8
7   06:07:57.191 9
q)load`:newDir/sym
`sym
q)get`:newDir/t
sym time         alpha
----------------------
mi  06:07:57.191 0
ig  06:07:57.191 1
ka  06:07:57.191 2
ba  06:07:57.191 3
kf  06:07:57.191 4
je  06:07:57.191 5
kf  06:07:57.191 6
lk  06:07:57.191 7
kf  06:07:57.191 8
fg  06:07:57.191 9

推荐阅读