我有一个分区表,可以使用get命令这样阅读:得到`:HDB / 2018年1月1日/贸易
并给我:
sym size exchange
-----------------
0 100 2
1 200 2
1 300 2
我喜欢从200和300修改一样大小的单元值,以给定的行的索引或列表1000。所以我用
.Q.ind[`:hdb/2018.01.01/trade; 1 2j]
让行,然后改变细胞。但是,在运行时.Q.ind []我得到一个`排名错误。
你得到的错误是第一个输入参数去.Q.ind是映射表的名称,而不是代表表格名称/位置的符号
我不知道如果.Q.ind将帮助你在这里但是,它的数据检索比数据更有用的(再)写的。
一对夫妇的方法,你可以采取:
select from table where date=X
,修改它在内存中,然后把它写下来回用`:hdb/2018.01.01/trade/ set delete date from modifiedTable
。这是假设你没有修改任何枚举/符号列。你必须要小心,以保持相同的架构,保持相同的压缩等p set @[get p:`:hdb/2018.01.01/trade/col1;1 2;:;1000]
你也可以使用一个修改操作来更新值。
@[`:hdb/2018.01.01/trade;`size;@[;1 2;:;1000]
这将修改磁盘上的表。
q)get`:hdb/2018.01.01/trade
sym size exchange
-----------------
0 100 2
1 200 2
1 300 2
q)@[`:hdb/2018.01.01/trade;`size;@[;1 2;:;1000]]
`:hdb/2018.01.01/trade
q)get `:hdb/2018.01.01/trade/
sym size exchange
-----------------
0 100 2
1 1000 2
2 1000 2