标签: kdb

KDB +喜欢加入pandas中的时间序列数据?

kdb +有一个aj函数,通常用于沿时间列连接表.

这是一个我有交易和报价表的例子,我得到每笔交易的现行报价.

q)5# t
time         sym  price size 
-----------------------------
09:30:00.439 NVDA 13.42 60511
09:30:00.439 NVDA 13.42 60511
09:30:02.332 NVDA 13.42 100  
09:30:02.332 NVDA 13.42 100  
09:30:02.333 NVDA 13.41 100  

q)5# q
time         sym  bid   ask   bsize asize
-----------------------------------------
09:30:00.026 NVDA 13.34 13.44 3     16   
09:30:00.043 NVDA 13.34 13.44 3     17   
09:30:00.121 NVDA 13.36 13.65 1     10   
09:30:00.386 NVDA 13.36 13.52 21    1    
09:30:00.440 NVDA 13.4  13.44 15    17

q)5# aj[`time; t; q]
time         sym  price size  bid …
Run Code Online (Sandbox Code Playgroud)

python join time-series kdb pandas

14
推荐指数
3
解决办法
6579
查看次数

kdb是快速的,仅仅是因为内存中的处理

我听过很多人谈论KDB几乎没时间处理数百万行.为什么这么快?是因为数据都是在内存中组织的吗?

另一件事是,有替代品吗?任何大数据库厂商在内存数据库中提供?

kdb

14
推荐指数
1
解决办法
3668
查看次数

Q(kdb):嵌套在哪里查询

有什么方法可以在子句Q中使用嵌套查询的结果where

我正在寻找类似SQL陈述的东西.

select from food where type_id in (
    select type_id from types where type_name = "fruit"
)
Run Code Online (Sandbox Code Playgroud)

sql where inner-query kdb

11
推荐指数
2
解决办法
5015
查看次数

KDB/Q内存消耗

我有一个KDB/Q数据库,每天大约有2M的记录消耗大约2G的内存.在一天结束时,它会运行一些报表,在表之间进行连接并将结果输出到磁盘上的文件中.在计算过程中,内存使用量增长到~15G.我的问题是,一旦此操作完成,内存永远不会被释放,直到DB重新启动它消耗所有15G的内存.

我想告诉KDB从内存中卸载一些表(虽然不要删除它们)但是我不想重新启动数据库,因为其他一些应用程序仍在连接它.

有没有办法告诉KDB从内存中卸载一些东西?

编辑:

如果有人发现它有趣我建议看看.Q.gc[]KDB 2.5+,看起来很有希望.

kdb

9
推荐指数
2
解决办法
5450
查看次数

KDB/Q:如何循环没有循环?

我在kdb数据库上学习q.我担心q中没有循环这一事实.我需要编写一个算法,我会在像C这样的详细程序中用几个嵌套的for循环编写.但是在q中我被不能循环的事实所困扰.

只是给出一个具体的例子(其中一个),我有这个简单的向量(列表):

q)closures
price
-----
18.54
18.53
18.53
18.52
18.57
18.9 
18.9 
18.77
18.59
18.51
18.37
Run Code Online (Sandbox Code Playgroud)

我需要一个向3by3这些条目组合的向量,具有叠加,如(使用R语法):闭包[0:2],闭包[1:3],闭包[2:4],闭包[3:5] ......我能怎么做?

一般来说,我如何改变自己的心态,正确编程?

非常感谢您对Marco的建议

kdb

8
推荐指数
2
解决办法
1万
查看次数

KDB中Insert和Upsert的行为

我有以下表格:

           q) t:([s:`symbol$()] id:();id2:`int$())
Run Code Online (Sandbox Code Playgroud)

其中's'是主键,'id'col是常规类型.我在'id'列中插入列表(此例中的字符串)时试图理解以下行为:

a)Upsert有效但插入失败

          q) `t insert (`a;"gg";4)     // 'type 
          q) `t upsert (`a;"gg";4)     // works
Run Code Online (Sandbox Code Playgroud)

b)插入也需要登记主键:

    q)`t insert  (`a;enlist "gg";4)    // 'length

    q)`t insert  (enlist `a;enlist "gg";4)  // works
Run Code Online (Sandbox Code Playgroud)

幕后发生了什么?

database insert primary-key kdb

8
推荐指数
1
解决办法
1873
查看次数

Python和kdb集成

什么是可用的工具/库进行整合Pythonkdb

python kdb

7
推荐指数
2
解决办法
8685
查看次数

存在q/kdb中的函数

我需要在q/kdb中编写一个函数,它接受一个变量v,如果v被定义则返回1b,如果不是则返回0b:

$ a:2
$ doesExist`a
1b
$ doesExist`b
0b
Run Code Online (Sandbox Code Playgroud)

任何想法都赞赏.

kdb

7
推荐指数
3
解决办法
3841
查看次数

如何在kdb + / q中从带有列表的表中选择列的子集?

给出下表:

time     | col1  col2  col3  ...
--------------------------------
10:53:02 | 89    89    76    ...
...
Run Code Online (Sandbox Code Playgroud)

如何从该表中选择由列名​​称列表引用的列的子集(包括索引),即cols:('col1';'col3'); 预期结果将是:

time     | col1  col3
----------------------
10:53:02 | 89    89   
...
Run Code Online (Sandbox Code Playgroud)

谢谢

kdb

7
推荐指数
2
解决办法
127
查看次数

KDB + / q:如何为功能实现汇总表?

我正在尝试实现一个汇总表,该表将来自多个不同表的数据整理到一个表中,以进行特征工程,预处理和规范化。我面临许多问题,第一个问题是我必须以某种方式构造此聚合表的架构而无需对其进行硬编码,这使我在添加其他数据源方面具有足够的灵活性。

trades
  - exch1
    - sym1
    - sym2
  - exch2
    - sym1
    - sym2
book
  - exch1
    - sym1
    - sym2
  - exch2
    - sym1
    - sym2
sentiment
   - sym1
   - sym2
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

正如我在前面的问题中已经指出的那样,当我想在kdb-tick体系结构中的聚合表中(在聚合之后)插入可能具有或没有其他模式的新聚合时,就会出现问题。

我已经注意到该uj操作似乎是一种适当的操作,好像输出速率将仅约为0.5-1赫兹,但是我被告知,由于它可能会引起反事实,因此可以将其视为反模式。持久性问题,不是有效的操作等。

我已经考虑过在执行插入/向上插入操作之前检查架构(如果架构不同,请更新架构,然后插入)。但是,这也可能效率不高。

我已经注意到了对先前问题的回答,但是似乎所有的消极观点都可能超过其积极方面。

聚合的性质意味着,我仅需要RTE订户/工作人员上大约1000行的表即可有效运行聚合,从而将较旧的记录清除到磁盘上。但是,列数可能会间歇性变化(添加了新的提要等),不一定在一天之内。

数据的性质还意味着聚合需要连续运行,即将数据分割成几天是无效的。

我还考虑过为每个新功能维护一个单独的表,但是表的数量也会导致效率低下。

当人们选择尝试将旧的/清除的聚合行发送给工作人员,然后定期保留这些聚合时,还会出现问题。如何修改kdb-tick发布者-订阅者体系结构以支持.u.upd[]聚合数据的列何时可能更改?问题不在于kdb-tick架构本身,而是如何在保持向后架构兼容性/效率的同时对其中的数据进行聚合?

我什至曾考虑在Rust中创建自己的特定于域的数据库,将数据划分为分片的平面文件。但是由于我能够进行/创建的高级查询操作,选择坚持使用kdb / q。

我认为,在线/实时运行这样的聚合对于将kdb +与ml结合使用而言是一项重要功能,但是我还找不到任何文档。

因此,我的问题可以总结如下:规范的实现是什么?如上kdb所述,如何有效地聚合来自多个源的数据?非常感谢您的建议。

kdb

7
推荐指数
1
解决办法
105
查看次数

标签 统计

kdb ×10

python ×2

database ×1

inner-query ×1

insert ×1

join ×1

pandas ×1

primary-key ×1

sql ×1

time-series ×1

where ×1