kdb+ 导入后无法使用 csv 数据

1 csv kdb

我正在尝试加载 csv 数据来测试我编写的一些 kdb+ q 函数。将数据加载到表并将一行翻转到字典中后,引用的数据中出现意外的逗号。

我创建了一个非常简单的 csv 文件,名为 testdata.txt:

a,b,c,d,e,f,g
1,2,3,4,5,6,7
10,11,12,13,14,15,16
Run Code Online (Sandbox Code Playgroud)

我像这样加载 csv:

td: ("JJJJJJJ";1#",") 0: `:data/testdata.txt
Run Code Online (Sandbox Code Playgroud)

结果:

a  b  c  d  e  f  g 
--------------------
1  2  3  4  5  6  7 
10 11 12 13 14 15 16

Run Code Online (Sandbox Code Playgroud)

然后我提取一行并将其翻转到字典中:

tdic: flip 1#td
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好:

a| 1
b| 2
c| 3
d| 4
e| 5
f| 6
g| 7

Run Code Online (Sandbox Code Playgroud)

然后我尝试引用字典中的一项,并且在该值之前有一个逗号。

q)tdic `a
,1
Run Code Online (Sandbox Code Playgroud)

由于逗号,我的数据无法用于任何测试目的,至少如果我将其翻转到字典中。我很确定我做错了什么,因为我没有在任何地方看到这个问题的记录。

Tho*_*yth 6

如果你检查每个条目的类型,tdic你会发现它们实际上是列表(正整数):

type each tdic
a| 7
b| 7
c| 7
d| 7
e| 7
f| 7
g| 7
Run Code Online (Sandbox Code Playgroud)

您可以使用索引来获取原子而不是列表:

show tdic:td[0]
a| 1
b| 2
c| 3
d| 4
e| 5
f| 6
g| 7

type each tdic
a| -7
b| -7
c| -7
d| -7
e| -7
f| -7
g| -7
Run Code Online (Sandbox Code Playgroud)

输出不再是列表:

q)tdic`a
1
Run Code Online (Sandbox Code Playgroud)