在整个表KDB中

时间:2019-09-20 22:25:35

标签: rethinkdb q kdb

//示例表

table:([[col1:20 40 30 0w; col2:4?4; col3:100200 0w 300)

我的解决方案

{。[table;(其中0w = table [x]; x);:; 0n]}'[来自元表的exec c,其中t =“ f”]

我不确定我有没有办法。这只是返回我不需要的每个更改的列表。我只希望返回的原始表替换为空

谢谢!

1 个答案:

答案 0 :(得分:2)

再充实您的问题会更好。您是否一直期望它是浮点列?该表将有很多列吗?是否会有混合的字符串/符号列使事情复杂化? 如果表中的列数很少,则可以进行更新

q)show t
col1 col2 col3
--------------
20   1    100
40   2    200
30   2    0w
0w   1    300

q)inftonull:{(x where x=0w):0n;x} 
q)update inftonull col1, inftonull col3 from t
col1 col2 col3
--------------
20   2    100
40   1    200
30   0
     3    300

如果您认为列名可能会更改或具有大量列,则可以尝试进行功能更新(您可以在其中将列名作为参数传递)

q){![t;();0b;x!inftonull,/:x,:()]}`col1`col3
col1 col2 col3
--------------
20   1    100
40   2    200
30   2
     1    300

如果您的表仅包含数字数据,例如

q)flip{(x where x=.Q.t[type x]$0w):x 0N;x}each flip t
col1 col2 col3
--------------
20   2    100
40   1    200
30   0
     3    300

可能会起作用,它试图解释数字数据具有不同类型的事实。 如果您的数据将包含字符串/符号列,则最后一个示例将无效