我尝试编写一个 Q 代码,它将允许我传递参数,但我得到的结果是 Qprojection。我试过使用
qpython.sync(( 返回的是 QProjection 而不是查询的数据
但解决方案不起作用(Q/kdb 世界的新手( 关于我应该改变什么的任何想法?
q.sync(
'''{[x;y;z]select from quotestackevent where date within(x;y),sym=z}''',
[np.datetime64('2018-04-14','D'), #start date
np.datetime64('2018-04-14','D'), #end date
np.string_('GBPUSD')])
在Q/KDB中,函数格式是{......}[x;y;z]
,其中x y z是参数。如果保留了一个空白参数,则该函数将成为投影。
Qpython 允许您将 Python 参数传递给 q 函数,格式为q.sync('{......}',x,y,z)
。
在您的示例中,方括号导致输入作为单个数组传递给函数,从而导致投影。这可以通过删除方括号来修复。
q.sync('{[x;y;z]select from quotestackevent where date within(x;y),sym=z}', np.datetime64('2018-04-14','D'), np.datetime64('2018-04-14','D'), np.string_('GBPUSD'))
希望这有帮助!