Kdb ';选择计数';“返回”;操作系统报告:没有这样的文件或目录;
我明白了Kdb ';选择计数';“返回”;操作系统报告:没有这样的文件或目录;,kdb,Kdb,我明白了 "./2017.10.14/:./2017.10.15/tableName. OS reports: No such file or directory" 当我试着去做 select count i by date from tableName where date within(.z.d-5;.z.d) 如果我这样做了,那就行了 select colName from trackFeedStats where date within(.z.d-5;.z.d)
"./2017.10.14/:./2017.10.15/tableName. OS reports: No such file or directory"
当我试着去做
select count i by date from tableName where date within(.z.d-5;.z.d)
如果我这样做了,那就行了
select colName from trackFeedStats where date within(.z.d-5;.z.d)
我猜是某个专栏的行为很奇怪
更新:问题似乎主要是在使用按colName1、colName2、colName3计数i时出现的
更新:我检查了权限,一切似乎都正常,表位于给定分区中(2017.10.14),没有符号链接
更新:我正在寻找修复数据库的建议。查询没有那么重要出现这种情况的原因有很多:
我想我伯爵可能是罪魁祸首。当应用于分区数据库时,它的行为异常 尽管您在where子句中指定了一个日期列表,但在后台,kdb正在对数据库中的所有表分区执行“count i” 作为参考,.Q.pn维护分区计数-
q).Q.pn
tabA |
tabB |
但是,正如这里演示的,“counti”将针对所有日期分区执行
q)select count i from tabA where date within 2020.10.10 2020.09.12;
q).Q.pn
tabA | 8001 7998 8101 0 0 8002 8102 7940 7999 0 0 0 0 0 0 0 0 0 0 0 0
tabB | ()
由于某些原因,如果向where子句添加额外的约束,.Q.pn不会更新
q)select count i from tabA where date within 2020.10.10 2020.09.12,price>0;
q).Q.pn
tabA |
tabB |
查询将实际运行。例如,在这个数据库中,有一些空的tabB分区
q)select count i from tabB where date within .z.d + -7 0
'./2020.09.30/tabB. OS reports: No such file or directory
但是,如果我们向where子句添加一些其他约束,查询将按我们希望的方式运行
q)select count i from tabB where date within .z.d + -7 0,not null sym
x
-----
16948
对列运行“count”将起作用
q)select count sym from tabB where date within .z.d + -7 0
x
-----
16948
作为一种解决方法,您可以更新查询以对某个键列(如果存在)执行“计数”。或者,您可以通过运行.Q.chk-来填充缺少的分区。我检查了表所在的文件夹。我检查了权限,同一用户创建了文件夹。您是否检查了日期文件夹中的隐藏文件和文件夹?正如Matt Moore提到的,您的错误中的文件路径看起来不正确:
/2017.10.14/:/2017.10.15/tableName
,它应该类似于。/2020.09.30/tabB
,作为一个通用点,在日期分区的表上执行类似于selectcount1b by
的操作比selectcounti by
更好。我想我对修复数据库更感兴趣。查询没有那么重要。您是否对数据库运行了.Q.chk?您是否尝试过.Q.chk?这将有助于“修复”数据库,它会为您创建缺失的表,2017.10.14分区内2017.10.15的文件路径看起来非常奇怪。查看该目录,看看是否有人在那里意外地保存了不正确的内容