如何获取 kdb 数据库中每一列的长度?

How to get the length of every column in a kdb database?

我们已经看到 kdb 数据库损坏的问题,并且正在寻找一种方法来实现检查每个 kdb 列在特定 table 中的长度是否相同。有关如何执行此操作的任何建议?

即,想要获得 table 中每一列的 return 值及其长度。

这些 table 有超过 200 列。有什么方法可以有效地解决这个问题?

感谢任何帮助。谢谢。

类似的内容可能适合您。

q)tables[]
`positions`quote`trade
q)count each flip trade
time  | 40000
sym   | 40000
src   | 40000
price | 40000
amount| 40000
side  | 40000

您也可以 运行 对分区数据执行同样的操作。

q)count each flip select from ohlc where date=last date
date     | 1440
sym      | 1440
exchange | 1440
timestamp| 1440
open     | 1440
high     | 1440
low      | 1440
close    | 1440
volume   | 1440

编辑:上面使用的方法只适用于未损坏的表,这可能不适合您的用例。

如果数据已损坏,您可以 get 每一列在磁盘上的位置并对其进行计数。

q)cols[ohlc]!{count get hsym`$"/path/to/hdb/2020.02.09/ohlc/",string x}each cols ohlc
date     | 1440
sym      | 1440
date     | 1440
exchange | 1440
timestamp| 1439
open     | 1440
high     | 1440
low      | 1440
close    | 1440
volume   | 1440