How to apply max function for each row in KDB?

[亡魂溺海] 提交于 2019-12-07 05:04:27

问题


I want to ensure all values in column x are no smaller than 0.5, so I do:

update x:max (x 0.5) from myTable

But this gives an error (in Studio For KDB+):

An error occurred during execution of the query.
The server sent the response:
type
Studio Hint: Possibly this error refers to wrong type, e.g `a+1

What's wrong?


回答1:


You can try using |

q)update x|0.5 from myTable



回答2:


It should work. It worked for me. This is the query I used for testing:

update x:max(x;0.5) from myTable

-- Check semicolon in max function




回答3:


Try the kdb vector conditional its similar to case-when in SQL:

q)t:([] a:6?.9)

q)t
a
---------
0.4237094
0.5712045
0.8705158
0.2075746
0.8549775
0.3951729

q)update ?[a<0.5;0.5;a] from t
a
---------
0.5
0.5712045
0.8705158
0.5
0.8549775
0.5
q)


来源:https://stackoverflow.com/questions/23056490/how-to-apply-max-function-for-each-row-in-kdb

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!