2017-08-16 217 views
2

我有一個kdb表中有3列:日期,貨幣,fx率。一些FX缺失,我想用前一天的值替換空FX,對於同一貨幣顯然。我不能使用填充,因爲它可能會混合使用貨幣。我嘗試用group的變體填充,但它不起作用。你知道如何做到這一點?這是我不正確查詢:q kdb填寫缺少fxrates

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 

回答

3

您可以使用update - by

update fills fx by ccy from t 
1

非常接近 - 所有你需要做的是添加「by」:

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