KDB+ 如何连接特定日期的数据

KDB+ How to join data for particular dates

我有以下 table 包含一些关于一些国家的时间序列数据:

t1 : ([]dates:"d"+til 6) cross ([]country:`PT`AR`MR`LT; category1:1+til 4)

 dates      country category1
----------------------------
2000.01.05 PT      1        
2000.01.05 AR      2        
2000.01.05 MR      3        
2000.01.05 LT      4        
2000.01.06 PT      1        
2000.01.06 AR      2        
2000.01.06 MR      3        
2000.01.06 LT      4        
2000.01.07 PT      1        
2000.01.07 AR      2        
2000.01.07 MR      3        
2000.01.07 LT      4                 
..

我有另一个 table,其中包含 t1 的一些补充数据,但仅在特定时间点有效,如下所示:

t2 : (([]validFrom:"d"$(0;6)) cross ([]country:`PT`AR`MR`LT)),'([]category2:1000*(1+til 8)) 

validFrom  country category2
----------------------------
2000.01.01 PT      1000     
2000.01.01 AR      2000     
2000.01.01 MR      3000     
2000.01.01 LT      4000     
2000.01.07 PT      5000     
2000.01.07 AR      6000     
2000.01.07 MR      7000     
2000.01.07 LT      8000     

我的问题是:如何加入 t1t2 以获得 t1 中的 datescategory2 列 "compliant" 和 t2 中的 validFrom 日期,这样得到的 table 看起来像这样:

dates      country category1 category2
--------------------------------------
2000.01.05 PT      1         1000     
2000.01.05 AR      2         2000     
2000.01.05 MR      3         3000     
2000.01.05 LT      4         4000     
2000.01.06 PT      1         1000     
2000.01.06 AR      2         2000     
2000.01.06 MR      3         3000     
2000.01.06 LT      4         4000     
2000.01.07 PT      1         5000     
2000.01.07 AR      2         6000     
2000.01.07 MR      3         7000     
2000.01.07 LT      4         8000        
..

您可以使用 asof join 从 t2 获取最新的 category2 按日期

aj[`country`dates;t1;`dates xasc `dates xcol t2]

只是不要忘记在 table 2 中将 validFrom 列重命名为 dates 并按 dates

排序