#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. Чрезвычайно элегантное решение