Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python KDB+/q:什么是远程查询的规范实现?_Python_Time Series_Client_Kdb - Fatal编程技术网

Python KDB+/q:什么是远程查询的规范实现?

Python KDB+/q:什么是远程查询的规范实现?,python,time-series,client,kdb,Python,Time Series,Client,Kdb,我正在尝试使用qpython从python客户机实现一个多行查询 我想执行以下查询: a = """ /declare a function that pivots a table on index piv:{[t;k;p;v]f:{[v;P]`${raze "_" sv x} each string raze P,'/:v};v:(),v; k:(),k; p:(),p;G:group flip k!(t:.Q.v t)k;F:group flip p!t p;key[G]!flip(C:f[

我正在尝试使用qpython从python客户机实现一个多行查询

我想执行以下查询:

a = """
/declare a function that pivots a table on index
piv:{[t;k;p;v]f:{[v;P]`${raze "_" sv x} each string raze P,'/:v};v:(),v; k:(),k; p:(),p;G:group flip k!(t:.Q.v t)k;F:group flip p!t p;key[G]!flip(C:f[v]P:flip value flip key F)!raze{[i;j;k;x;y]a:count[x]#x 0N;a[y]:x y;b:count[x]#0b;b[y]:1b;c:a i;c[k]:first'[a[j]@'where'[b j]];c}[I[;0];I J;J:where 1<>count'[I:value G]]/:\:[t v;value F]};

/get aggregated trades table 
tt:0!select last_price:last price, last_qty: last qty, low_qty: min qty by exch,sym,side,1 xbar time.second from trades

/apply pivot function on aggregated trade table
piv[`tt;`second;`exch`sym`side;`last_price`last_qty`low_qty]
"""
但是,它会引发以下“读取”错误:

qpython.qtype.QException:b'tt'

但是,在远程服务器q shell上执行的相同查询是否正确运行? 我认为这可能与反序列化过程中变量的解引用有关,但是我不确定这是否是由于上述客户机的不正确实现或查询中的错误逻辑造成的


实现上述多行查询的规范方式是什么?

可能是因为在第二行末尾没有分号来声明变量tt,这意味着这些行将被视为一个表达式

当q从右向左求值时,它将运行调用piv的最后一行,而piv又在声明之前使用输入tt调用t:.q.VT

尝试将第二行更改为包含分号

tt:0!按exch、sym、side、1XBAR time.SEXT从交易中选择上次价格:上次价格、上次数量:上次数量、低位数量:最小数量

with qconnection.QConnection(host='localhost', port=5001, pandas = True) as q:
    q.query(qconnection.MessageType.SYNC, a)
    msg = q.receive(data_only=False, raw=False)
    print(msg)