KDB+中模式内空表触发.Q.hdpf函数'type错误的技术问询
Q&A: .Q.hdpf处理空表的问题
针对你在KDB+ 3.6 2019.04.02版本中遇到的问题,直接解答如下:
1. .Q.hdpf是否要求表必须包含数据才能正常工作?
是的,这个版本的.Q.hdpf确实无法处理空表。空表的列类型默认是通用类型``,而.Q.hdpf在保存时需要明确的列类型信息,空表的类型缺失会导致抛出'type错误。
2. 是否有相关说明文档?
官方文档中.Q.hdpf的条目没有明确标注这个限制,但这是KDB+ 3.6版本的已知特性/问题,后续更新的版本(如4.x)已经修复了空表保存的问题。
3. 是否需要在保存前从rt中删除空表?
这是最直接可行的解决方案。你可以在调用.Q.hdpf前过滤掉rt中的空表,示例代码如下:
// 过滤保留非空表 rt: {not 0=count x} each rt // 执行保存 .Q.hdpf[`:your/save/path; rt]
如果需要保留空表的结构,也可以手动为每个空表的列指定明确类型后再保存,比如:
// 为空表的列指定类型 emptyTable: ([] id:`long$(); value:`float$())
内容的提问来源于stack exchange,提问作者niken
相关产品推荐
相关产品推荐

