kdb/q 如何保存字典?

问题描述 投票:0回答:2

我有一本字典,我正在尝试使用 kdb/q 进行保存。为了保存我的字典,我尝试了与保存表格相同的方法:

save `output.csv

但是,我的输出字典(类型 99h)给了我一个错误:

q))save `output.csv
   'output
   [4]  save `output.csv
        ^

我认为这是因为该表示法仅适用于表格而不适用于字典。任何人都可以帮助我如何做到这一点,或者如果不可能,我如何将字典更改为表格?

这是我的字典的样子:

输出 -> 输入 99

使用 `:out.csv 设置输出来输出

csv dictionary output export-to-csv kdb
2个回答
0
投票

这应该有效。

save
足够灵活,可以将带键表写入 csv。 https://code.kx.com/q/ref/save/

q)output:([Name:`Tim`Bob`Ant;Time:02:20 01:12 03:30;ID:`9h`8a`2w]Score:100 212 998;Comment:("";"Late";"Over"))
q)type output
99h
q)save`output.csv
`:output.csv
q)read0`:output.csv
"Name,Time,ID,Score,Comment"
"Tim,02:20,9h,100,"
"Bob,01:12,8a,212,Late"
"Ant,03:30,2w,998,Over"

您粘贴的错误消息将表明

output
在您当前的上下文中不存在。您是否可能尝试保存本地表而不是全局表?

q){output2:([Name:`Tim`Bob`Ant;Time:02:20 01:12 03:30;ID:`9h`8a`2w]Score:100 212 998;Comment:("";"Late";"Over"));save`output2.csv}[]
'output2

0
投票

使用

set
写入二进制文件:

https://code.kx.com/q/ref/get/#set

q)`:file set `a`b!1 2
`:file

q)get `:file
a| 1
b| 2

注意:文件路径必须是

hsym
,即以
:

开头的符号

https://code.kx.com/q/ref/hsym/

您的对象是一个键控表,它是一种特殊类型的字典。

https://code.kx.com/q/kb/faq/#keyed-tables

您可以使用

0!

取消表格的密钥

https://code.kx.com/q/ref/enkey/#unkey

q)t:`a`b xkey ([] a:1 2;b:4 5;c:5 6)
q)type t
99h
q)t
a b| c
---| -
1 4| 5
2 5| 6
q)0!t
a b c
-----
1 4 5
2 5 6
q)type 0!t
98h

统一长度列表的字典也可以使用

flip

转换为表格

https://code.kx.com/q/ref/flip/

© www.soinside.com 2019 - 2024. All rights reserved.