Как создать базу данных с 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[], чтобы увидеть, будет ли она делать то, что вам нужно.

http://code.kx.com/q/ref/dotq/

Другие вопросы по тегам