Почему я не могу поставить условие в обновлении? - PullRequest
0 голосов
/ 10 января 2019

У меня есть таблица:

t:([]val:10?100)

И я хочу добавить столбец с оператором cond: Если значение меньше 55, просто установите его на 55. Однако оператор обновления с этим не работает:

update newVal:$[val<55;55;val] from

Как мне изменить это?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Я думаю, что @terrylynch идеален. Но иногда, когда векторное условие слишком сложно использовать, вы можете также использовать лямбду внутри оператора q-sql. А по причине использования векторного условия просто потому, что столбец представляет собой список

q)t
val
---
12
10
1
90
73
90
43
90
84
63
q)update newVal:{$[x<55;55;x]}each val from t
val newVal
----------
12  55
10  55
1   55
90  90
73  73
90  90
43  55
90  90
84  84
63  63                          
q)update newVal:{x|55}each val from t
val newVal
----------
12  55
10  55
1   55
90  90
73  73
90  90
43  55
90  90
84  84
63  63
0 голосов
/ 10 января 2019

Поскольку val является вектором, вы должны использовать условный вектор

update newVal:?[val<55;55;val] from t

Кстати, альтернативный способ выставить его на 55 - это использовать max / или (|)

update val|55 from t
...