我有一个kdb函数,它以字典为param。需要提供筛选条件作为wClause密钥。
乐趣:{dic}
例如wClause:登记(in;sym;enlistsym1‘sym2)
因为如果我使用字符串,它将被发送为‘in’,或者如果我使用characterArray,它将是"in“。
如何在Java上构建wClasue?从java调用kdb函数的方法是什么,例如"in,like“。
谢谢
发布于 2022-06-17 11:30:01
测试表+查询。使用一个小的函数选择助手功能:
q)test:([] a:1 2 3;b:`a`b`c)
q)test
a b
---
1 a
2 b
3 c
q)select from test where a in 1 2,b like "a*"
a b
---
1 a
q)?[test;((in;`a;1 2);(like;`b;"a*"));0b;()]
a b
---
1 a
q)fsel:{[t;wc] ?[t;wc;0b;()]}
q)fsel[`test;((in;`a;1 2);(like;`b;"a*"))]
a b
---
1 a您不能直接从java接口发送in或like运算符,因为序列化程序不会生成此数据类型。
但是,您可以发送解析树,它将对它们进行评估:
q)value"in"
in
q)eval(`$".q.value";"in")
in
q)?[test;(((`.q.value;"in");`a;1 2);((`.q.value;"like");`b;"a*"));0b;()]
a b
---
1 a来自Java:
c c=new c("localhost",5000);
Object[]wc=new Object[]{
new Object[]{new Object[]{".q.value","in".toCharArray()},"a",new long[] {1,2}},
new Object[]{new Object[]{".q.value","like".toCharArray()},"b","a*".toCharArray()}
};
Object result=c.k("fsel","test",wc);

https://stackoverflow.com/questions/72657474
复制相似问题