как зафиксировать dataframe в kdb как новую таблицу - PullRequest
0 голосов
/ 28 января 2020

Мне известно, что на этот вопрос уже был дан ответ здесь , однако, как новый qb ie Я все еще не совсем понимаю, как создать и вставить новую таблицу, используя q.

Моя проблема: у меня есть датафрейм, и я использую Q Python для подключения к kdb. Я хочу записать этот фрейм данных в kdb как новую таблицу.

Мой вопрос: кажется, что я мог бы сделать что-то вроде этого:

df = pd.DataFrame({'sym':['abc','def','ghi'],'price':[10.1,10.2,10.3]})
with qconnection.QConnection(host = 'localhost', port = 5001, pandas = True) as q:
    q.sync('{t::x}',df)

Но что это такое? {T :: х} 'здесь? не будет моим именем таблицы? и что будет х?

Как указать типы столбцов и ограничения по размеру, или они не нужны? Спасибо!

1 Ответ

4 голосов
/ 29 января 2020

Важно отметить, что если вы используете q Python 2. *, это должно быть q.sendSyn c вместо q.syn c.

q.sendSyn c (kdbquery, параметры)

q.sendSync("{t::x}", df)
{} function syntax
: assignment like = in python
:: global assignment so that the table is defined outside of the function
t is the variable name / table name 
x is the parameter as q/kdb can use implied notation for x,y,z. You could use explicit notation like so "{[x]t::x}"

Не нужно беспокоиться о типах столбцов, так как kdb автоматически интерпретирует их и может быть изменен с помощью оператора обновления aq SQL. Вот удобная справочная карта kx для типов данных.

Ограничение размера столбца как таковое отсутствует, но существует ограничение в 2 ГБ данных по IP C.

...