KDB + / Q查询太重而无法处理

时间:2016-06-30 12:04:44

标签: kdb

我想从KDB数据库中获取数据,以获取过去两年内大约200天的列表。 200天没有特别的模式。

我每天只需要来自09:29:00.000 to 09:31:00.000的数据。

我的第一种方法是查询过去两年中09:29:00.000 and 09:31:00.000之间有时间戳的所有数据,因为我没有找到一种方法来查询我需要的特定200天。 但事实证明这对我的服务器来说太过分了。

然后我尝试将每个日期的2分钟数据汇总到一个平均值,然后打印出平均值,所以现在我只有200行数据作为输出。但不知怎的,这仍然太过分了。我不确定这是因为我没有正确选择数据。

我的另一个怀疑是,查询首先收集所有数据,然后平均每个日期,这意味着平均不会使其更容易处理。 这是我的代码:

    select maxPriceB:max(price),  minPriceB:min(price), avgPriceB:avg(price), avgSizeB:avg(qty) by date from dms where date within(2015.01.01, 2016.06,10), time within(09:29:00.000, 09:31:00.000), sym = `ZF6

poms是数据所在的表 ZFU6是我正在寻找的符号 我尝试在选择后添加关键词distinct。 我想知道是否有分解查询,或者使查询更轻,以便服务器处理。 谢谢!

1 个答案:

答案 0 :(得分:1)

如果您使用32位kdb +并获得臭名昭着的'wsfull错误,那么您可以尝试一次处理这样的一天:

raze{select maxPriceB:max(price), minPriceB:min(price), avgPriceB:avg(price), avgSizeB:avg(qty)
     from dms where date=x,sym=`ZF6,time within 09:29:00.000 09:31:00.000}each 2015.01.01+1+til 2016.06.10-2015.01.01