📅  最后修改于: 2023-12-03 15:02:29.872000             🧑  作者: Mango
KDB+是一种高性能的数据库,它使用k语言作为查询语言。这个教程将介绍一些基本的KDB+概念和使用方法。
在开始之前,必须先安装KDB+。KDB+的秘密是它的速度,因此我们需要32位的版本。你可以从这里下载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+是一个列式数据库,它有一个非常简单但强大的数据结构,称为表。表是列式存储的,这使得查询非常快。下面是一个简单的表:
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+是一个函数式编程语言,有大量的内置函数。你也可以定义你自己的函数。下面是一个简单的函数,它将两个参数相加:
// 定义函数 add
add:{x+y}
// 调用函数 add
add[2;3]
也可以定义多参函数:
// 定义多参函数 add
add:{sum x}
// 调用函数 add
add[1 2 3]
现在你有了一个快速入门KDB+的教程。KDB+是一个非常快的数据库,它使用k语言作为查询语言。在这个教程中,你已经学会了一些基本语法、表、函数等。希望这个教程能够帮助你开始在KDB+上编程,进而获得更多的乐趣!