我在跟踪这份文件: https://code.kx.com/q/wp/capi/#publishing-to-a-kdb-tickerplant

在sym.q中: 交易:([]时间:timespan$();[sym:符号$()];价格:float$();size:长$())

现在,我希望使用键控表,这就是为什么上面的模式遵循键控表语法. 但问题是tickerPLANT模式应该以time:TimeSpan列开头,它导致的问题是当我输入type trade时,它返回98h,而不是99h(这是键表的类型编号).

因此,在《R.Q》中:

/q tick/r.q [host]:port[:usr:pwd] [host]:port[:usr:pwd]
/2008.09.09 .k ->.q

if[not "w"=first string .z.o;system "sleep 1"];

upd:upsert

/ get the ticker plant and history ports, defaults are 5010,5012
.u.x:.z.x,(count .z.x)_(":5010";":5012");

/ end of day: save, clear, hdb reload
.u.end:{t:tables`.;t@:where `g=attr each t@\:`sym;.Q.hdpf[`$":",.u.x 1;`:.;x;`sym];@[;`sym;`g#] each t;};

/ init schema and sync up from log file;cd to hdb(so client save can run)
.u.rep:{(.[;();:;].)each x;if[null first y;:()];-11!y;system "cd ",1_-10_string first reverse y};
/ HARDCODE \cd if other than logdir/db

/ connect to ticker plant for (schema;(logcount;log))
.u.rep .(hopen `$":",.u.x 0)"(.u.sub[`;`];`.u `i`L)";

我有upsert,但因为它不是真正的键表,它导致一次又一次地插入重复的条目,而不是更新同一行的唯一键.

推荐答案

您的表定义无效.你看起来好像

trade:([]time:`timespan$();[sym:`symbol$()];price:`float$();size:`long$())

我认为这意味着您希望该表按符号进行键控.在这种情况下,表定义应为:

trade:([sym:`symbol$()]time:`timespan$();price:`float$();size:`long$())

但是,您可能不希望在tickerPLANT模式中设置表的关键字,只有RDB应该为它设置关键字.这样,您就可以在tickerPLANT中维护一个可重放的日志(log),并且不必更改tickerPLANT逻辑(需要删除"timesym"判断,并且UPD函数必须为不是第一列的数据加时间戳).

因此,您应该保持交易模式的无关紧要

trade:([]time:`timespan$();sym:`symbol$();price:`float$();size:`long$())

您还可以将RDB中的重放函数更改为:

.u.rep:{(.[;();:;].)each x;`sym xkey `trade;if[null first y;:()];-11!y;system "cd ",1_-10_string first reverse y};

最后一点要注意的是,您的upd:upsert将比默认的upd:insert

C++相关问答推荐

如何将长字符串转换为较小的缩写,该缩写由第一个字符、最后一个字符和中间的字符数组成?

非正规化边缘毛刺

每个 struct 变量在C中都有自己的命名空间吗?

将uintptr_t添加到指针是否对称?

我怎么才能用GCC编译一个c库,让它包含另一个库呢?

判断X宏的空性

在C中访问数组中的特定值

仅从限制指针参数声明推断非混叠

为什么realloc函数在此代码中修改变量?

For循环不会迭代所有字符串字符吗?(初学者问题)

从BIOS(8086)中读取刻度需要多少?

通过对一个大的Malloc内存进行切片来使用Malloc的内存片

为什么我的半数组测试和奇数组测试不起作用?(我使用Assert进行调试)

*S=0;正在优化中.可能是GCC 13号虫?或者是一些不明确的行为?

当用C打印过多的';\n';时输出不正确

memcmp 是否保证按顺序比较字节?

变量的指针右对齐,函数的指针左对齐

全局变量 y0 与 mathlib 冲突,无法编译最小的 C 代码

当循环变量在溢出时未定义时,可以进行哪些优化?

C99 的 %zu 格式说明符不起作用