Можем ли мы сделать так же присоединиться в Excel, как мы делаем в KDB - PullRequest
1 голос
/ 11 апреля 2019

У меня нет знаний о Excel, и мне интересно, есть ли способ преобразовать это утверждение asof в q-кодировании в оператор, использующий формулу Excel

:update string issueSeries from aj[`sym`issueSeries`stockExchange`time;update `$issueSeries from table;update `g#sym from `time xasc select time+maxinterval,sym,`$issueSeries,stockExchange,refprice,refpricetime,prevpricetime,prevprice from reftable];

Table 1
 Time        Exc    sym  price
2:40:29 PM  25001   AMX 14.47
2:40:48 PM  25001   AMX 14.48
2:40:53 PM  25001   AMX 14.45
2:41:21 PM  25001   AMX 14.44
2:41:29 PM  25001   AMX 14.49   

   Table 2
    Exc     Sym  Refprice  ref-time
    25001   AMX   14.47   2:39:54 PM
    25001   AMX   14.46   2:40:36 PM
    25001   AMX   14.46   2:41:19 PM
    25001   AMX   14.46   2:41:20 PM
    25001   AMX   14.46   2:41:31 PM

Table 3 (result)
Time        ref-time     sym   exc    price   refprice

2:40:29 PM  2:39:54 PM   AMX   25001  14.47   14.47
2:40:48 PM  2:40:36 PM   AMX   25001  14.48   14.46
2:40:53 PM  2:40:36 PM   AMX   25001  14.45   14.46
2:41:21 PM  2:41:20 PM   AMX   25001  14.44   14.46
2:41:29 PM  2:41:20 PM   AMX   25001  14.49   14.46

Simplified example where exchange and sym are held constant.    

Столбец ref-time в table3 отличается от столбца ref-time в table2 из-за asof join, который в коде (aj).

1 Ответ

2 голосов
/ 11 апреля 2019

Похоже, что вы только что сделали копию таблицы 1, а затем посмотрели соответствующие ref-time и refprice из таблицы 2 на основе Exc и sym.Если это так, и предполагается, что набор данных подобен этому (обратите внимание, что таблицы 1 и 2 отсортированы по Exc, а затем по sym, а затем по Time):

enter image description here

IПервоначально скопировал таблицу 1 и вставил как есть в K2.Затем я вставил новые столбцы для ref-time и refprice.

  • Формула в ячейке L2 и скопировал, чтобы получить время возврата: =MAX(INDEX($I$3:$I$7*($F$3:$F$7=M3)*($G$3:$G$7=N3)*($I$3:$I$7<=K3),))
  • Формула в ячейке P2 и скопировал внизЧтобы получить цену: =INDEX($H$3:$H$7,MATCH(1,INDEX(($F$3:$F$7=M3)*($G$3:$G$7=N3)*($I$3:$I$7=L3),),0))

Настройте диапазоны в соответствии с фактическим набором данных.

...