KDB +应用条件,然后更新表中的多列

时间:2018-07-06 16:31:10

标签: functional-programming kdb

我有一个具有以下列名称的表:portfoliotradeTypecurrencysecuritytradeQuantitytradeMV,{ {1}},totalTradeMVtransferMV

我想将adjustedMVtradeQuantitytradeMVtotalTradeMV列减少transferMV

这是一个示例查询:

adjustedMV

但是,仅当odTradesAdjusted:update tradeQuantity:tradeQuantity-0f^adjustedMV,tradeMV:tradeMV-0f^adjustedMV,totalTradeMV:totalTradeMV-0f^adjustedMV,transferMV:transferMV-0f^adjustedMV from odTradesAdjusted 小于其他列时,我才想这样做。我可以对每个列使用adjustedMV进行条件向量处理,但是有没有比4次写出条件向量处理更为优雅的方法了?

1 个答案:

答案 0 :(得分:3)

您可以将apply(@)与一些减法逻辑结合使用:

@[t;`tradeQuantity`tradeMV`totalTradeMV`transferMV;{x-y*0<x-y}[;t`adjustedMV]]

编辑-可以简化为

@[t;`tradeQuantity`tradeMV`totalTradeMV`transferMV;{x-y*y<x}[;t`adjustedMV]]