在kdb中聚合rdb和hdb

时间:2014-12-17 22:06:04

标签: kdb

我有一个标准的tickerplant设置,我的rdb在端口5011上,hdb设置在端口5012上。是否有一种优雅的方式来处理对今天和历史数据的联合的查询?我对联合进程持开放态度,该进程保持与5011和5012的连接。

2 个答案:

答案 0 :(得分:1)

网关/联合进程将是一个很好的解决方案。请参阅Michael McClintocks白皮书中的示例: http://www.firstderivatives.com/lecture_series_pp.asp?downloadflyer=q_for_Gods_May_2013

虽然白皮书可能比您需要的更详细,但即使是纸上最基本的设置也足够了。基本上只是查询rdb(并添加“缺少”日期col)并查询hdb然后组合结果。

答案 1 :(得分:1)

假设这个函数存在于一个独立的q实例上,并且你想要所有列,今天为d +今天为sym s ...注意列重新排列。

mergeFun:{[d;s]
    rdb:hopen`::5011;
    hdb:hopen`::5012;
    t:hdb({[d;s] `time`sym xcols delete date from select from table where date=d, sym=s};d;s),rdb({[s] select from table where sym=s};s);
    hclose each rdb,hdb;
    t
}