Как создать строку / список строк с символом в kdb?

У меня есть таблица с одним столбцом строк, я хочу создать новый столбец со строкой типа и `перед каждым элементом строки. Как я могу это сделать? пример:

Старая версия:

a
b
c

Новое:

"\`a"
"\`b"
"\`c"

person Deb    schedule 03.01.2018    source источник
comment
Если вам нравится ответ Томаса Смита, вы, вероятно, не хотите, чтобы в результате были эти обратные косые черты.   -  person SJT    schedule 05.01.2018


Ответы (4)


Другое решение (быстрее в этом сценарии):

q)update b:flip ("`";a) from tab
a b
------
a "`a"
b "`b"
c "`c"
person terrylynch    schedule 03.01.2018

В качестве примера возьмем следующую таблицу:

q)show tab:([]a:("a";"b";"c"))
a
-
a
b
c

Чтобы получить новый столбец с обратным апострофом впереди, вам нужно добавить "`" к каждой строке:

q)update b:("`",'a) from tab
a b
------
a "`a"
b "`b"
c "`c"

Если столбец состоит из символов, его нужно сначала преобразовать в строку:

q)tab2:([]a:`a`b`c)
q)update b:("`",'string a) from tab2
a b
------
a "`a"
b "`b"
c "`c"
person Thomas Smyth    schedule 03.01.2018
comment
Рад, что смог помочь! Если это отвечает на ваш вопрос, пожалуйста, подумайте о том, чтобы принять его как ответ, это поможет людям, которые могут вернуться к этой проблеме в будущем. - person Thomas Smyth; 03.01.2018

Иногда люди, более знакомые с SQL, чем с q, задают вопросы в терминах таблиц, когда им нужно только обрабатывать векторы; и создайте новые столбцы, где все, что нужно, - это переменная или значение, передаваемое в качестве аргумента.

q)"`",'tab[`a]
"`a"
"`b"
"`c"

Конечно, столбец a в tab не что иное, как вектор "abc", поэтому

q)"`",'"abc"
"`a"
"`b"
"`c"

может быть все, что вам нужно.

Видеть:

person SJT    schedule 05.01.2018

Другой способ: обновить ("` ", /: a) из вкладки

person Brian Rhee    schedule 02.08.2018