qPython qpython.qtype.QException: b'长度'
qPython qpython.qtype.QException: b'length'
所以我试图将以下查询(同步)触发到 kdb+:
q.sync('{select from trade where date>x,date<y, sym=z}', 'instr81', '2014.04.14', '2017.04.14')
执行时它给我 raise QException(self._read_symbol())
qpython.qtype.QException: b'length'
但我不知道它来自哪里。我尝试过其他类型,例如 numpy.string_ 或常规字节 (b'instr81') 但没有成功。
我是不是漏掉了什么?
您的参数顺序看起来不对:从您的 q.sync 调用来看,x
似乎是 'instr81'
,y
是 '2017.04.14'
,并且 z
是 '2017.04.14'
。
您的长度错误是因为您将 n 个日期的列表与长度为 m 的字符串进行比较。
我漂亮确定您的查询也会因为您的日期类型而失败 - 您需要发送实际日期(如 numpy.datetime64 D
每 the documentation ) 而不是字符串。
您需要转换字符串也是正确的 - 实际上,q 将接收 "symbol" 作为字符串类型,因为它尚未作为 numpy.string_
类型发送。
更好的语法可能如下所示 - 还要观察使用 within
而不是 date>x,date<y
的更高效的 q 代码 - 这将节省你阅读 all[=36] =] 在 x 之后进行分区,然后对 date<y
进行子集化。这是如果你想让你的 select inclusive - 我注意到你的查询是排他的,所以在你的例子中的查询中,你永远不应该取回任何数据(你的开始 == 你的结束所以 0 个结果)。
> import numpy as np
> q.sync(
'{[x;y;z]select from trade where date within(x;y),sym=z}',
np.datetime64('2014-04-14','D'), #start date
np.datetime64('2014-04-14','D'), #end date
np.string_('instr81')
)
所以我试图将以下查询(同步)触发到 kdb+:
q.sync('{select from trade where date>x,date<y, sym=z}', 'instr81', '2014.04.14', '2017.04.14')
执行时它给我 raise QException(self._read_symbol())
qpython.qtype.QException: b'length'
但我不知道它来自哪里。我尝试过其他类型,例如 numpy.string_ 或常规字节 (b'instr81') 但没有成功。
我是不是漏掉了什么?
您的参数顺序看起来不对:从您的 q.sync 调用来看,x
似乎是 'instr81'
,y
是 '2017.04.14'
,并且 z
是 '2017.04.14'
。
您的长度错误是因为您将 n 个日期的列表与长度为 m 的字符串进行比较。
我漂亮确定您的查询也会因为您的日期类型而失败 - 您需要发送实际日期(如 numpy.datetime64 D
每 the documentation ) 而不是字符串。
您需要转换字符串也是正确的 - 实际上,q 将接收 "symbol" 作为字符串类型,因为它尚未作为 numpy.string_
类型发送。
更好的语法可能如下所示 - 还要观察使用 within
而不是 date>x,date<y
的更高效的 q 代码 - 这将节省你阅读 all[=36] =] 在 x 之后进行分区,然后对 date<y
进行子集化。这是如果你想让你的 select inclusive - 我注意到你的查询是排他的,所以在你的例子中的查询中,你永远不应该取回任何数据(你的开始 == 你的结束所以 0 个结果)。
> import numpy as np
> q.sync(
'{[x;y;z]select from trade where date within(x;y),sym=z}',
np.datetime64('2014-04-14','D'), #start date
np.datetime64('2014-04-14','D'), #end date
np.string_('instr81')
)