2014-10-10 2 views
1

Как-то я могу найти примеры, которые показывают, как добавить один столбец.Как добавить несколько столбцов сразу в kdb?

Итак, я написал этот код, который работает, но я знаю, что есть намного лучший способ сделать это: таблица t уже существует с столбцами, заполненными данными, и мне нужно добавить новые столбцы, изначально нулевые.

t: update column1:` from t; 
t: update column2:` from t; 
t: update column3:` from t; 
t: update column4:` from t; 

Я попытался сделать его функцию:

colNames:`column1`column2`column3`column4; 
t:{update x:` from t}each colNamesList; 

Но это только добавил один столбец и назвал его х.

Любые предложения по улучшению этого кода будут очень признательны. Из-за этого мне нужно добавить намного больше, чем просто четыре столбца, и мой код очень длинный. Спасибо!

ответ

3

Различные способы достижения этой цели ....

q)newcols:`col3`col4; 

q)@[tab;newcols;:;`] 
col1 col2 col3 col4 
------------------- 
a 1 
b 2 
c 3 

Можно также указать различные типы

q)@[tab;newcols;:;(`;0N)] 
col1 col2 col3 col4 
------------------- 
a 1 
b 2 
c 3 

Или сделать функциональное обновление

q)![`tab;();0b;newcols!count[newcols]#enlist(),`] 
`tab 
+0

Спасибо вам большое за ваш кап Ответить! Функциональное обновление, которое я использовал, но какова функция с именем @ []? Я хотел бы узнать его имя, чтобы я мог больше узнать об этом. – Hopper06

+0

Это функция «применить» (в сочетании с q делает некоторые полезные вещи под обложками - например, заполнение атома «до такой же длины, как и таблица») http://code.kx.com/wiki/JB : QforMortals2/функции # Functional_Forms_of_Amend – terrylynch

Смежные вопросы