在 q 中创建一个展开的 table
Create a splayed table in q
我有一个 table trades
我想在我创建的目录 splay 中展开。
根据我的研究,正确的语法是:
`:splay/ set trades
我已经试过了,但是我得到一个错误 'type
。
我已经通过以下方式成功节省了一套公寓 table:
`:splay/flattrades set trades
这在官方文档站点上有记录:https://code.kx.com/q/kb/splayed-tables/
问题可能是您没有使用 .Q.en
枚举符号列。
如果您在枚举之后仍然遇到错误,则可能是由于您的列中的数据类型不一致(例如,混合了 long 和 int 的列)。您可以使用以下内容进行检查:
distinct type''[trades]
假设您的交易 table 是内存中的 table。以上应该 return 每列只有一种唯一的数据类型。
Terry 很可能是正确的,类型错误是由于试图张开 table 而没有确保首先枚举符号。如果出于某种原因你想绕过这个(我不建议这样做),你可以使用类似下面的内容单独编写列。
再说一次,这是不可取的。但这是了解如何在 kdb+
中写入磁盘的一个很好的练习
forceSplay:{[dir;tab]
{[d;t;c]@[d;c;:;t[c]]}[dir;0!tab;] each cols tab;
@[dir;`.d;:;cols 0!tab]
}
我在这里使用 @ 将 set
函数(表示为 :
)应用于目录。第一步是单独编写 table 的每一列,接下来是编写 .d
列列表文件。
我有一个 table trades
我想在我创建的目录 splay 中展开。
根据我的研究,正确的语法是:
`:splay/ set trades
我已经试过了,但是我得到一个错误 'type
。
我已经通过以下方式成功节省了一套公寓 table:
`:splay/flattrades set trades
这在官方文档站点上有记录:https://code.kx.com/q/kb/splayed-tables/
问题可能是您没有使用 .Q.en
枚举符号列。
如果您在枚举之后仍然遇到错误,则可能是由于您的列中的数据类型不一致(例如,混合了 long 和 int 的列)。您可以使用以下内容进行检查:
distinct type''[trades]
假设您的交易 table 是内存中的 table。以上应该 return 每列只有一种唯一的数据类型。
Terry 很可能是正确的,类型错误是由于试图张开 table 而没有确保首先枚举符号。如果出于某种原因你想绕过这个(我不建议这样做),你可以使用类似下面的内容单独编写列。
再说一次,这是不可取的。但这是了解如何在 kdb+
中写入磁盘的一个很好的练习forceSplay:{[dir;tab]
{[d;t;c]@[d;c;:;t[c]]}[dir;0!tab;] each cols tab;
@[dir;`.d;:;cols 0!tab]
}
我在这里使用 @ 将 set
函数(表示为 :
)应用于目录。第一步是单独编写 table 的每一列,接下来是编写 .d
列列表文件。