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

Replace certain records in a column with given condition in kdb

我下面有一个table:

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)

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

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

一个"update"似乎是你需要的:

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