Как создать базу данных с 2 таблицами разной длины или столбцами из нескольких символов?
У меня есть две таблицы:
- Таблица 1, охватывающая 2017.01.01-> 2018.01.01
- Таблица 2, охватывающая 2017.12.01 -> 2023.01.15 (содержит в основном ложные смоделированные данные).
Я хочу создать историческую базу данных, разделенную по дате, и дать пользователю возможность добавлять к ней другие данные (меня не волнуют дубликаты для последующих добавлений)
В таблице 2 также есть два столбца символов (GBP и UK -> одинаковые для всех записей -> могут измениться, когда я получу реальные данные).
Я хочу создать секционированную таблицу, чтобы выглядеть так:
HDB_DATE1_TAB1
| |_TAB2
|_DATE2_TAB1
| |_TAB2
|_DATE3_TAB1
|_DATE4_TAB1
| |_TAB2
|_DATE5_TAB1
|_DATE6_TAB1
| |_TAB2
.
.
.
Как видите, в одной из таблиц больше записей, чем в другой (значительно больше). Как я могу достичь этой структуры в KDB?
На данный момент я удалил два столбца символов из таблицы 2. Я сохранил первый с помощью.Q.dpft, а второй - как обычную таблицу. Когда я загружаю базу данных, появляется только одна таблица (table2), и я никак не могу запросить ее. Можете ли вы указать мне правильное направление?
2 ответа
Проблема может быть связана с вашей структурой hdb, описанной выше, требуется, чтобы таблицы были определены в каждом разделе. Структура может быть исправлена с помощью .Q.chk
, Я создал HDB, следуя вашим шагам выше, trades
был сохранен через .Q.dpft
а также quotes
с помощью set
создать сплай.
tree -d db
db
├── 2007.07.25
│ ├── quotes
│ └── trades
└── 2007.07.26
└── trades
Загрузка БД в сессию a q возвращает только trade
Таблица.
q)\l db
q)\a
,`trades
С помощью .Q.chk
заполнит недостающие таблицы в каждом разделе.
q).Q.chk[`:.]
,`:./2007.07.26
()
q)\l .
q)\a
`quotes`trades
q)
Который затем можно проверить с помощью дерева:
tree -d db
db
├── 2007.07.25
│ ├── quotes
│ └── trades
└── 2007.07.26
├── quotes
└── trades
Это не то, как структура будет выглядеть на диске, но посмотрите на.Q.bv[], чтобы увидеть, будет ли она делать то, что вам нужно.