q kdb 填充缺失的 fxrates

q kdb fill missing fxrates

我在 kdb 中有一个包含 3 列的 table:日期、货币、汇率。一些 fx 丢失了,我想用前一天的值替换空 fx,显然是相同的货币。我不能按原样使用填充,因为它可能会混合货币。我尝试使用 group by 的变体进行填充,但它不起作用。你知道怎么做吗?这是我的不正确查询:

update fills fx from (`ccy`date xasc t)

这是原来的table(编造的数据):

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

您可以使用 update - by:

update fills fx by ccy from t

非常接近 - 您只需添加 "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