meta
функция KDB/д возвращает следующую информацию о таблице:Расширенная Metadata
- с - имена (символ) столбцов
- т - тип данных (символ)
- е - (символ) домен внешних ключей
- a - (символ) атрибуты.
Я хотел бы расширить это, чтобы включить дополнительную информацию о таблице. Конкретный случай, который я пытаюсь решить, - это включить информацию о часовом поясе о столбцах данных времени в таблице.
Например: select from Price
+-------------------------+-------------------------+--------+-------+
| Time | SysTime | Ticker | Price |
+-------------------------+-------------------------+--------+-------+
| 2016.09.15D09:18:02.391 | 2016.09.15D08:18:02.391 | IBM | 63.46 |
| 2016.09.15D09:18:02.491 | 2016.09.15D08:16:22.391 | MSFT | 96.72 |
| 2016.09.15D09:18:02.591 | 2016.09.15D08:14:42.391 | AAPL | 23.06 |
+-------------------------+-------------------------+--------+-------+
meta Price
+---------+---+---+---+
| c | t | f | a |
+---------+---+---+---+
| Time | p | | |
| SysTime | p | | |
| Ticker | s | | |
| Price | f | | |
+---------+---+---+---+
Я хотел бы получить дополнительную информацию о столбцах временных данных (Time
и SysTime
) в мета.
Для примера, что-то вроде этого:
metaExtended Price
+---------+---+---+---+------------------+
| c | t | f | a | z |
+---------+---+---+---+------------------+
| Time | p | | | America/New_York |
| SysTime | p | | | America/Chicago |
| Ticker | s | | | |
| Price | f | | | |
+---------+---+---+---+------------------+
Пожалуйста, обратите внимание, что у меня есть функция, которая принимает в таблице и столбце, чтобы вернуть часовой пояс. TimeZone[Price;Time]
America/New_York
Мой вопрос касается только того, как включить эту информацию в метафункцию. Второй вопрос, который у меня есть, заключается в том, что если пользователь делает что-то подобное, newPriceTable:Price
(создавая новую таблицу, аналогичную предыдущей таблице), то функция metaExtended
должна возвращать одинаковое значение для обеих таблиц (сродни вызову функции на двух разных переменных, имеющих одну и ту же ссылку на объект)
Что-то подобное существует в sql?
Вы всегда можете повторно определить мета в дк - просто не рекомендуется :) Или использовать что-то вдоль линий .. '.q.ometa: мета,' ' .q.meta:. {Q.ometa [x], '([] z: TimeZone [t] каждый cols x)} ' –
Спасибо Igor и @Connor – user2419511