📜  KDB+教程(1)

📅  最后修改于: 2023-12-03 15:02:29.872000             🧑  作者: Mango

KDB+教程

KDB+是一种高性能的数据库,它使用k语言作为查询语言。这个教程将介绍一些基本的KDB+概念和使用方法。

安装KDB+

在开始之前,必须先安装KDB+。KDB+的秘密是它的速度,因此我们需要32位的版本。你可以从这里下载KDB+。

KDB+基本语法

KDB+使用k语言作为查询语言,它有些类似于LISP。下面是一些基本的语法:

// 打印"Hello, world!"字符串
-1 "Hello, world!"

// 输出2*2的结果
2*2

// 用“`”拼接两个字符串
"Hello" + "`World!"

// 取出列表的第一个元素
a:1 2 3
a[0]

// 搜索列表中第一个等于3的元素的索引
a:1 2 3
a?3

// 返回列表中的前两个元素
a:1 2 3
a[0 1]

// 取出列表除了第一个元素之外的所有元素
a:1 2 3
a[1+]

// 返回两个列表的拼接结果
a:1 2 3
b:4 5 6
a,b

// 列表计数
count a

// 求列表中的和
sum a

// 求列表中的平均数
avg a
KDB+中的表

KDB+是一个列式数据库,它有一个非常简单但强大的数据结构,称为表。表是列式存储的,这使得查询非常快。下面是一个简单的表:

stocks:([]sym:`AAPL`GOOG; price:99.0 1100.0; time: 2019.01.02 2019.01.02T01:00:00)

上述表stocks有3列,分别是sym、price和time,每列由一个列表组成。sym列表类型为symbol,price列表类型为float,time列表类型为日期/时间。表格的第一行创建了一个名为stocks的表。我们可以按以下方式访问表的数据:

// 返回stocks的价格列
stocks.price

// 打印时间列(前两项)
-1 "Time:" , " ", "  ".join(string stocks.time[0 1])

你还可以将多个表连接在一起:

stocks1:([]sym:`AAPL`GOOG; price:99.0 1100.0; time: 2019.01.02 2019.01.02T01:00:00)
stocks2:([]sym:`AAPL`GOOG; price:100.0 1200.0; time: 2019.01.03 2019.01.03T01:00:00)
stocks:stocks1,stocks2

将这两个表格拼接在一起后,你就可以轻松地执行基本的查询操作:

// 返回所有价格>100的行
select from stocks where price > 100

// 分组并计算平均价格
select avg price by sym from stocks
KDB+中的函数

KDB+是一个函数式编程语言,有大量的内置函数。你也可以定义你自己的函数。下面是一个简单的函数,它将两个参数相加:

// 定义函数 add
add:{x+y}

// 调用函数 add
add[2;3]

也可以定义多参函数:

// 定义多参函数 add
add:{sum x}

// 调用函数 add
add[1 2 3]
结论

现在你有了一个快速入门KDB+的教程。KDB+是一个非常快的数据库,它使用k语言作为查询语言。在这个教程中,你已经学会了一些基本语法、表、函数等。希望这个教程能够帮助你开始在KDB+上编程,进而获得更多的乐趣!