如何解读KDB函数`xbar`的域与范围?能否直接对t列应用xbar?
问题解答
核心结论
完全可以直接对完整的datetime类型列t使用xbar函数,无需拆分日期和时间字段做联合分组。
正确用法示例
针对你的分钟级数据,按5分钟间隔分组的正确语句如下:
select max o by 0D00:05:00 xbar t from xlk
这里0D00:05:00是明确表示5分钟的时间跨度,和t列的datetime类型匹配,执行后会把同一5分钟窗口内的所有记录归为一组,得到你预期的5分钟K线结果。
文档相关说明
你查阅的文档中「Domain and Range」部分明确标注了xbar的输入支持datetime类型:
- 当输入为datetime类型时,
xbar左侧的间隔参数需要是对应时间跨度值,既可以用0Dhh:mm:ss的直观格式表示,也可以用纳秒数的整数形式传入。 - 函数会自动将每个datetime值向下对齐到最近的间隔边界,以此实现指定时间窗口的分组逻辑。
原有语句的问题
你之前拆分t.date和t.time并使用5 xbar t.time的写法无效,原因是:5作为间隔参数作用于time类型的t.time时,单位是纳秒,5 xbar t.time只会将时间向下对齐到最近的5纳秒边界,完全达不到5分钟分组的效果,这才导致你得到了和原数据几乎一致的分组结果。
内容的提问来源于stack exchange,提问作者cjm2671
相关产品推荐
相关产品推荐

