- KDB+ 教程
- KDB+ - 首页
- Q 编程语言
- Q 编程语言
- Q 语言 - 类型转换
- Q 语言 - 时间数据
- Q 语言 - 列表
- Q 语言 - 索引
- Q 语言 - 字典
- Q 语言 - 表格
- Q 语言 - 动词 & 副词
- Q 语言 - 连接
- Q 语言 - 函数
- Q 语言 - 内置函数
- Q 语言 - 查询
- Q - 进程间通信
- Q - 消息处理器(.Z 库)
- KDB+ 有用资源
- KDB+ - 快速指南
- KDB+ - 有用资源
- KDB+ - 讨论
Q 语言 - 磁盘上的表格
硬盘上的数据(也称为历史数据库)可以保存为三种不同的格式 - 平面文件、扩展表和分区表。这里我们将学习如何使用这三种格式保存数据。
平面文件
平面文件完全加载到内存中,因此其大小(内存占用)应该很小。表格完全保存在磁盘上的一个文件中(因此大小很重要)。
用于操作这些表格的函数是set/get -
`:path_to_file/filename set tablename
让我们举个例子来演示它是如何工作的 -
q)tables `. `s#`t`tab`tab1 q)`:c:/q/w32/tab1_test set tab1 `:c:/q/w32/tab1_test
在 Windows 环境中,平面文件保存在以下位置 - C:\q\w32
从磁盘(历史数据库)获取平面文件,并使用get命令,如下所示 -
q)tab2: get `:c:/q/w32/tab1_test q)tab2 sym | time price size --------- | ------------------------------- APPLE | 11:16:39.779 8.388858 12 MSFT | 11:16:39.779 19.59907 10 IBM | 11:16:39.779 37.5638 1 SAMSUNG | 11:16:39.779 61.37452 90 APPLE | 11:16:39.779 52.94808 73
一个新表tab2被创建,其内容存储在tab1_test文件中。
扩展表
如果一个表中有太多列,那么我们将这些表存储为扩展格式,即我们将其保存在磁盘上的一个目录中。在目录中,每列都以与列名相同的名称保存在一个单独的文件中。每列都作为对应类型的列表保存在 kdb+ 二进制文件中。
当我们需要频繁访问其众多列中的一些列时,将表保存为扩展格式非常有用。扩展表目录包含.d二进制文件,其中包含列的顺序。
与平面文件非常类似,可以使用set命令将表保存为扩展格式。要将表保存为扩展格式,文件路径应以反斜杠结尾 -
`:path_to_filename/filename/ set tablename
要读取扩展表,我们可以使用get函数 -
tablename: get `:path_to_file/filename
注意 - 要将表保存为扩展格式,它必须是未加键且已枚举的。
在 Windows 环境中,您的文件结构将如下所示 -
分区表
分区表提供了一种有效的方法来管理包含大量数据的巨大表格。分区表是分布在多个分区(目录)中的扩展表。
在每个分区内,一个表将有自己的目录,其结构与扩展表相同。可以根据天/月/年对表格进行拆分,以便优化对其内容的访问。
要获取分区表的内容,请使用以下代码块 -
q)get `:c:/q/data/2000.01.13 // “get” command used, sample folder quote| +`sym`time`bid`ask`bsize`asize`ex!(`p#`sym!0 0 0 0 0 0 0 0 0 0 0 0 0 0…. trade| +`sym`time`price`size`ex!(`p#`sym!0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ….
让我们尝试获取交易表的內容 -
q)get `:c:/q/data/2000.01.13/trade sym time price size ex -------------------------------------------------- 0 09:30:00.496 0.4092016 7 T 0 09:30:00.501 1.428629 4 N 0 09:30:00.707 0.5647834 6 T 0 09:30:00.781 1.590509 5 T 0 09:30:00.848 2.242627 3 A 0 09:30:00.860 2.277041 8 T 0 09:30:00.931 0.8044885 8 A 0 09:30:01.197 1.344031 2 A 0 09:30:01.337 1.875 3 A 0 09:30:01.399 2.187723 7 A
注意 - 分区模式适用于每天有数百万条记录的表格(即时间序列数据)
Sym 文件
Sym 文件是一个 kdb+ 二进制文件,包含所有扩展表和分区表中的符号列表。可以使用以下方法读取它,
get `:sym
par.txt 文件(可选)
这是一个配置文件,当分区分布在多个目录/磁盘驱动器上时使用,并包含磁盘分区的路径。