【问题标题】:How can I evaluate a Q script in a running KDB server?如何在运行的 KDB 服务器中评估 Q 脚本?
【发布时间】:2013-05-17 19:32:20
【问题描述】:

我有一个大表,我想在 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


    【解决方案1】:

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

    其他一些建议:

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

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

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

    问候, 瑞恩

    【讨论】:

    • 我使用 q-lab 进行交互式查询。我要去看看qstudio。对于这个特定的问题,这是一项每天运行的作业来对我的数据库进行分区。选项 1) 听起来是最好的方法。
    【解决方案2】:

    另一个选项是 studioForKdb+,尽管它提供的功能不如 qstudio http://code.kx.com/wiki/StudioForKdb%2B

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 2019-08-27
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多