2017-02-02 21 views
0

У меня есть таблица с одной из колонн keyname быть int и еще один столбец keylist быть list из int. Я пытаюсь создать еще один столбец, который является положение keyname в keylist в моей таблице в следующем порядке:Поиск положение ключа в списке столбцов таблицы

update keypos:{y?x} . (keyname;keylist) from tableName 

ИЛИ

update keypos:{{x?1}(y=x)} . (keyname;keylist) from tableName 

Оба эти результата в keypos со значением = размер таблицы.

Любое понимание очень ценится.

+0

Причина, по которой он возвращает «размер таблицы», заключается в том, что вы выполняете единый поиск всего списка имен ключей в списке списков. Но весь список ключей не входит в список списков, и поэтому он возвращает индекс out-of-bounds (который, таким образом, равен счету таблицы). Затем Kdb преобразует этот единственный атом в вектор, чтобы сделать его допустимым столбцом. Я думаю, что вы пытаетесь сделать поиск * каждого * ключевого слова в * каждый * список. Это объясняет, почему каждый из них необходим. – terrylynch

+0

Спасибо @terrylynch – Rahul

ответ

2
update keypos:keylist?'keyname from tableName 
+0

Спасибо Akash. Это работает. Можете ли вы пролить свет, почему каждый из них необходим, когда это работает в настройках, отличных от таблицы. – Rahul

+1

Это потому, что столбцы таблицы реализованы в виде списков, что делает каждый из них подходящим. В случае использования вне таблицы ключевые слова являются скалярами. Так что keypos на самом деле список ints и keylist - список списков ints –

+0

Thanks @JamesLittle – Rahul