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

我想从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)

2 years ago

如果您使用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