我在kdb中有一个包含3列的表:date,currency,fx rate。一些fx丢失,我想用前一天的值替换null fx,显然对于相同的货币。我不能使用填充因为它可能混合货币。我尝试用group by的变体填充,但它不起作用。你知道怎么做吗?这是我不正确的查询:
update fills fx from (`ccy`date xasc t)
这是原始表格(组成数据):
date ccy fx
2017.08.01 AUS 0.57
2017.08.01 CAN 0.61
2017.08.01 EUR 0.91
2017.08.01 USD 0n
2017.08.02 AUS 0n
2017.08.02 CAN 0.62
2017.08.02 EUR 0n
2017.08.02 USD 0n
2017.08.03 AUS 0n
2017.08.03 CAN 0n
2017.08.03 EUR 0n
2017.08.03 USD 0n
2017.08.04 AUS 0.57
2017.08.04 CAN 0.62
2017.08.04 EUR 0.91
2017.08.04 USD 0.78
2017.08.05 AUS 0.59
2017.08.05 CAN 0.61
2017.08.05 EUR 0.92
2017.08.05 USD 0.79
2017.08.06 AUS 0.58
2017.08.06 CAN 0.62
2017.08.06 EUR 0.91
2017.08.06 USD 0.77
答案 0 :(得分:3)
您可以使用update - by:
update fills fx by ccy from t
答案 1 :(得分:1)
非常接近 - 您需要做的就是通过":
添加"t:([]date:raze 3#enlist .z.d+til 100;ccy:300#`EUR`CAN`AUS;fx:300?(1.0 0.2 0.4 0n))
10#t
date ccy fx
------------------
2017.08.16 EUR 1
2017.08.17 CAN 0.4
2017.08.18 AUS
2017.08.19 EUR 0.4
2017.08.20 CAN 0.2
2017.08.21 AUS 1
2017.08.22 EUR 1
2017.08.23 CAN
2017.08.24 AUS 1
2017.08.25 EUR 1
10# update fills fx by ccy from t
date ccy fx
------------------
2017.08.16 EUR 1
2017.08.17 CAN 0.4
2017.08.18 AUS
2017.08.19 EUR 0.4
2017.08.20 CAN 0.2
2017.08.21 AUS 1
2017.08.22 EUR 1
2017.08.23 CAN 0.2
2017.08.24 AUS 1
2017.08.25 EUR 1