我想从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。 我想知道是否有分解查询,或者使查询更轻,以便服务器处理。 谢谢!
答案 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