Tengo una consulta que devuelve datos para un montón de símbolos para una fecha de una tabla.

dataFromTab:delete date from select from table where date=2015.01.01,any (sym like) each ("sym1";"sym2";"sym3";"sym4")
dataFromTab:`sym xasc dataFromTab;
@[`dataFromTab;`sym;`p#];

Type var es 98h y la clasificación por sym funciona bien, pero al agregar p # usando la modificación funcional me está dando un 'error de tipo'.

Se agradecería cualquier comentario sobre dónde me equivoco.

¡Gracias!

kdb
1
CleanSock 15 feb. 2018 a las 20:39

2 respuestas

La mejor respuesta

¿Está llamando a todo esto desde una función o desde el espacio de nombres global?

Si dataFromTab es una variable local, la aplicación de p# to the global reference dataFromTab no funcionará.

q){data:select from tab;@[`data;`sym;`p#]}[]
'type
 [1]  {data:select from tab;@[`data;`sym;`p#]}
                         ^
q))\

Deberá reasignar dataFromTab localmente para que esto funcione;

q){data:select from tab;data:@[data;`sym;`p#]}[]

También puede usar 'set' para crear su tabla globalmente, lo que permitiría que su sintaxis original funcione. Sin embargo, probablemente no desee crear globales innecesarios;

q){`data set select from tab;@[`data;`sym;`p#]}[]
`data
3
Gilmer 15 feb. 2018 a las 19:31

¿Es sym una columna de cadena? Recibo ese error si convierto a cadena:

q)trades:update string sym from trades
q)trades:`sym xasc trades
q)@[`trades;`sym;`p#]
'type
  [0]  @[`trades;`sym;`p#]
       ^

¿Puedes intentar convertirlo en un símbolo y ver si funciona?

0
Thomas Smyth 15 feb. 2018 a las 17:51