Обновление табличных значений на основе положительного или отрицательного - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь классифицировать сделки в запросе, основываясь на том, являются ли они длинными (+ ve значения) или короткими (-ve значением)

q)R:select sum size by sym from update size:neg size from trades where trades[`side]=`sell
q)R
sym | size
----| ------
AAPL| 22321
CSCO| -20790
DELL| -53614
GOOG| 62652
IBM | 77839
MSFT| -40878
NOK | 14767
ORCL| -53922

Мне удалось попасть сюда, ноЯ не могу обновить положительные значения размера с длинными и отрицательные с короткими без получения сообщений об ошибках.Неудачные попытки преобразования значений + ve выглядят примерно так:

update size:`long from R where size>0
update size:`long from R where R[`size]>0

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Чуть быстрее версия:

q) update new_size:`short`long size>0 from R
0 голосов
/ 19 октября 2018

Стоит отметить, что ноль 0n обрабатывается меньше, чем любое число, если R содержит нули, то по умолчанию оно будет равно short, что в некоторых случаях дает непреднамеренные результаты.

следующая нулевая проверка позаботится об этом крайнем случае.

q)update size:?[null size;`;?[size>0;`long;`short]] from R

Однако в некоторых случаях может быть вполне приемлемо использовать по умолчанию длинный или короткий.

0 голосов
/ 15 октября 2018

Обновление не выполнено, потому что вы пытаетесь обновить столбец длинного типа на тип символа, в результате получается смешанный список:

q)update size:?[size>0;`long;`short] from R
...