我们在刻度数据上运行Q查询,并在1分钟内合并到OHLC。
select subsel:(
exec last datetime.date+1 xbar datetime.minute.z.Z
from `base
where instrument=`GBPUSD,
datetime=datetime.date+1 xbar datetime.minute.z.Z),
max(datetime),
min(datetime),
Open:first price,
High:max price,
Low:min price,
Close:last price,
Volume:count(i)
by DT:($)datetime.date+1 xbar datetime.minute.z.Z
from `base
where instrument=`GBPUSD,
datetime>=2017.07.03T10:20:00.00,
datetime<2017.07.03T10:20:59.999
问题是xbar日期在主表和'subselect'上都是合成的,exec“datetime =”需要引用主表并且找不到别名的使用方法。考虑到ej,但由于双方都是合成的,也找不到构造。
答案 0 :(得分:1)
在我们进入子选择之前,您的查询存在一些问题。首先,datetime.minute.z.Z
是无效的语法。您可能不需要.z.Z
后缀。其次,1 xbar
是多余的:1 xbar x
对于整数x
是x
而datetime.minute
是整数。您只需执行datetime.date+datetime.minute
即可将日期时间舍入为分钟。 (请注意,如果你使用时间戳,你应该使用时间戳,舍入只是0D00:01 xbar timestamp
,对于日期时间,你必须预先计算一分钟U:reciprocal 24*60
并将其用于xbar
- {{ 1)}。)第四,将U xbar timestamp
&#39; d时间戳转换为by子句中的字符串。如果你真的想要它们作为字符串 - 在聚合之后将其作为单独的更新。最后,还有一些小问题,例如冗余括号和xbar
,其中q应拼写为($)
。
现在,回到子选择。我想一旦你解决了我上面提到的问题,你会发现你根本不需要子查询。结果将在密钥列中包含string
&t; d时间戳。如果您希望将结果作为常规表 - 只需使用xbar
。