使用kdb中的给定条件替换列中的某些记录

时间:2016-06-20 20:10:52

标签: replace kdb

我有一张桌子:

tab:([]a:(`$"1-01";`2;`$"3-01";`4;`$"5-01";`6);source:`a`a`b`b`a`b)

a    source
-----------
1-01 a     
2    a     
3-01 b     
4    b     
5-01 a     
6    b  

我想将1-01和5-01更改回1而不是3-01,具体取决于来源。我写了下面的代码:

`$({ssr[string x;"-01";""]}each tab[`a])
通过这样做,我可以把它放回一个列,但这不是我想要的。我也做了以下事情:

`$({ssr[string x;"-01";""]}each tab[`a] where source=`a)

但在这之后我不知道如何把它放回桌面。然后我想到了使用执行控制:但不知道我应该如何编码它。我已经完成了一半,并没有真正起作用:

?[tab[`source] = `a;`$({ssr[string tab[`a];"-01";""]});tab[`a]]

1 个答案:

答案 0 :(得分:2)

"更新"似乎是你需要的:

q)update `$ssr[;"-01";""] each string a from tab where source=`a
a    source
-----------
1    a
2    a
3-01 b
4    b
5    a
6    b