首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qPython函数查询

qPython函数查询
EN

Stack Overflow用户
提问于 2020-04-02 18:25:33
回答 2查看 177关注 0票数 0

我们正在尝试使用qPython构建函数式查询。从简单的示例开始,在运行时构建where条件。我们在外部KDB服务器上定义了一个Q函数,如下所示

代码语言:javascript
复制
fn:{[c]
    t: (select from tbl);
    :?[t;c;0b;()];
}

在Python中,我们打开一个连接并发送条件

代码语言:javascript
复制
c = [['=', numpy.string_('TradeId'), 123456]]
result = conn.sendSync('fn', c)

当我这样做时,在Q控制台中我看到=运算符是"=“。问题是如何传递运算符

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-02 19:17:13

您可以在kdb端对字符串/字符执行value操作,以将其从字符串/字符转换为底层的kdb操作符。这在您的示例中可以工作,但您可能需要一些额外的工作/测试来将其推广到您可能发送的所有可能的运算符:

代码语言:javascript
复制
q)tbl:([]TradeId:0 123456 123456 123456;col2:1 2 3 4)
q)fn:{[c] c:.[c;(::;0);value];t:(select from tbl); :?[t;c;0b;()];}

q)0(`fn;enlist("=";`TradeId;123456))
TradeId col2
------------
123456  2
123456  3
123456  4

q)0(`fn;(("=";`TradeId;123456);("in";`col2;2 4)))
TradeId col2
------------
123456  2
123456  4

注意-我正在使用0()在kdb本身内发送请求,但这应该等同于从qPython发送。您需要更改的位是kdb函数中的c:.[c;(::;0);value];

票数 0
EN

Stack Overflow用户

发布于 2020-04-02 20:56:34

@terrylynch特别适用于qPython

来自python发送作品

代码语言:javascript
复制
 c = [[ qtype.QLambda( '{x in  y}'), numpy.string_('TradeId'), [123, 456,789]]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60989393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档