Есть ли быстрый способ внутреннего объединения символов в одном запросе?

#kdb

Вопрос:

В настоящее время, скажем, у меня есть база данных со sym-date строками.

Если я хочу извлечь две серии и выровнять их по дате, в настоящее время мне нужно выполнить два запроса, а затем объединить их:

 pair: {[x;y]
  aa: select date, a: target1 from z where sym = x;
  bb: select date, b: target1 from z where sym = y;
  1!aa ij 1!bb
  }

corr[`AAPL;`MSFT]
 

Есть ли более элегантный способ сделать это в KDB?

Ответ №1:

Похоже, вы, по сути, хотите преобразовать данные? https://code.kx.com/q/kb/pivoting-tables /

 q)t:([]date:2021.01.01 2021.01.01 2021.01.01;sym:`AAPL`MSFT`TSLA;target1:1.1 2.2 3.3)
q)P:`AAPL`MSFT
q)exec P#(sym!target1) by date:date from t
date      | AAPL MSFT
----------| ---------
2021.01.01| 1.1  2.2
 

Комментарии:

1. Чрезвычайно элегантное решение