Kdb 为什么可以';我不能在update语句中添加条件吗?

Kdb 为什么可以';我不能在update语句中添加条件吗?,kdb,Kdb,我有一张桌子: t:([]val:10?100) 我想添加一个带有cond语句的列:如果值小于55,只需将其设置为55。但是,update语句不适用于以下情况: updatenewval:$[val因为val是一个向量,所以必须使用条件向量 update newVal:?[val<55;55;val] from t 因为val是一个向量,所以必须使用条件向量 update newVal:?[val<55;55;val] from t 我认为@terrylynch是完美的。但有时

我有一张桌子:

t:([]val:10?100)

我想添加一个带有cond语句的列:如果值小于55,只需将其设置为55。但是,update语句不适用于以下情况:


updatenewval:$[val因为val是一个向量,所以必须使用条件向量

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

因为val是一个向量,所以必须使用条件向量

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

我认为@terrylynch是完美的。但有时当向量条件太难使用时,也可以在q-sql语句中使用lambda。使用向量条件的原因很简单,因为列是一个列表

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
q)t
瓦尔
---
12
10
1.
90
73
90
43
90
84
63

q) update newVal:{$[x我认为@terrylynch是完美的。但有时当向量条件太难使用时,您也可以在q-sql语句中使用lambda。使用向量条件的原因很简单,因为列是一个列表

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
q)t
瓦尔
---
12
10
1.
90
73
90
43
90
84
63

q) update newVal:{$[x值得一提的是'lambda each'引入了性能影响,特别是对于较大的表。值得一提的是'lambda each'引入了性能影响,特别是对于较大的表。