q kdb填写缺少fxrates

时间:2017-08-16 15:10:13

标签: kdb q-lang

我在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

2 个答案:

答案 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