kdb - 如何在运行的 KDB 服务器中评估 Q 脚本?

标签 kdb

我有一个大表,我想将其分区加载到 kdb+ 服务器中。分区代码位于 Q 脚本中,我需要在服务器上对其进行评估,但我没有对其进行 I/O 控制(服务器在后台运行,内存中的数据是通过 C API 加载的)。

到目前为止,我找到的唯一解决方案是打开一个句柄并将所有语句转换为字符串(我必须使用的所有这些\"看起来相当困惑):

if[4 <> count .z.x; 0N!"usage: part_md.q host port db_dir date (YYYY.MM.DD)"; exit[1]]

arg_host: .z.x 0
arg_port: .z.x 1
arg_db_dir: .z.x 2
arg_date: "D"$(.z.x 3)

/get server handle
h:hopen `$(":",arg_host,":",arg_port)
set_db: "db: \":",arg_db_dir, "/mydb/\""
set_sym_path: "sym_path: \":",arg_db_dir,"\""
h set_db
h set_sym_path

/select fields to partition
h "mydb_select: select [-10] A,B,C from mydb"

/enumerate symbols
h "md_select_enum: .Q.en[`$sym_path] md_select"
h "delete md_select from `."
...

如何在不使用同一台计算机上的服务器句柄的情况下直接评估我的脚本?

最佳答案

您可以使用 kdb IDE,例如 qStudio http://www.timestored.com/qstudio通过输入命令来发送查询,就像在控制台上一样。

其他一些建议:

  1. 阅读进程间通信的函数形式,这是始终发送字符串的替代方法。更强大,因为它允许使用对象。

  2. 避免在变量名称中使用下划线,因为它们也是 kdb 中的运算符。 (有关 q 语言指南,请参阅此处:http://www.timestored.com/kdb-guides/q-coding-standards)

  3. 查看 sv 函数的许多变体,特别是 (` sv `:file,`name) 它允许在独立于平台的情况下快速形成文件路径方式。

问候, 瑞安

关于kdb - 如何在运行的 KDB 服务器中评估 Q 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16616579/

相关文章:

Python + Q (KDB) - 哪些工具易于使用且维护良好

KDB 附加具有不同列的表

kdb - 获取当前文件在 q (kdb) 中的位置

kdb - 如何将此 select 语句转换为函数形式?

kdb - 如何 ssr 替换 kdb 中的所有字符串?

kdb - 使用每个权限将参数传递给 kdb 函数

java - 等待并通知问题

kdb - 在 KDB 中选择非空字符串行

java - 从多个线程发布到 KDB

kdb - 在q kdb中获取上一季度的最后一个工作日和第一个工作日(工作日)