分析函数
SmartEDB for HPC 软件包提供了一个用于序列操作的分析函数库。请使用“按类别划分的 SQL 分析函数”页面上的链接查看这些函数的详细说明。在“SQL 分析示例”页面中也有许多示例,展示了这些函数的用法。
示例脚本
samples/xsql/scripts/financial 目录包含多个命令和脚本文件,用于方便运行选择命令以演示各类统计函数。以下表格包含按类别划分的这些示例组的链接。类别 1 - 5 中的示例可以使用命令文件 f.bat(在 Linux 系统中为 f.sh)运行,类别 6 - 11 中的示例可以使用 g.bat(在 Linux 系统中为 g.sh)运行。只需键入 f 或 g 后跟一个空格和类别编号即可运行 SQL 脚本。
例如,要试验“二进制”函数,请输入
f 3
要试验“网格聚合”功能,请输入
g 7
命令文件会调用 xSQL 并传入相应的 SQL 脚本文件。各个脚本文件会定义并初始化适合所演示功能的特定示例表,然后执行相关页面中描述的各个选择语句。
请注意,xSQL 的输出格式将与描述各个函数的页面中所打印的格式不同,因为我们已对页面中的文本进行了重新格式化,并突出显示了特定元素以帮助描述正在执行的操作。
一些示例脚本文件会加载并操作如下定义的 SimpleSequence 表:
create table SimpleSequence(
testNumber unsigned(4) primary key,
bVal1 sequence(unsigned(1)),
bVal2 sequence(unsigned(1)),
bVal3 sequence(unsigned(1)),
iVal1 sequence(int(4)),
iVal2 sequence(int(4)),
iVal3 sequence(int(4)),
fVal1 sequence(float),
fVal2 sequence(float),
fVal3 sequence(float),
dVal1 sequence(double),
dVal2 sequence(double),
dVal3 sequence(double),
ts1 sequence(unsigned(4)),
ts2 sequence(unsigned(4)),
ui8 sequence(unsigned(8))
);
其他脚本使用如下定义的 Quote 表:
create table Quote(
symbol char(21) primary key,
day sequence(unsigned(4) asc),
low sequence(float),
high sequence(float),
open sequence(float),
close sequence(float),
volume sequence(unsigned(4))
);
按类别划分的分析型 SQL 函数
SmartESQL 提供了一个可在序列上运行的分析 SQL 函数库。SQL 分析示例页面中的示例演示了其中的若干函数。这些示例使用示例数据部分中描述的数据来展示不同类别的函数。函数按类别表中的链接会使用下面描述的两个测试表之一来解释和演示这些函数。
示例数据
以下是一些示例,它们在一个具有不同类型的序列字段的简单数据库上执行查询。这些示例的表定义如下:
create table SimpleSequence(
testNumber unsigned(4) primary key,
bVal1 sequence(unsigned(1)),
bVal2 sequence(unsigned(1)),
bVal3 sequence(unsigned(1)),
iVal1 sequence(int(4)),
iVal2 sequence(int(4)),
iVal3 sequence(int(4)),
fVal1 sequence(float),
fVal2 sequence(float),
fVal3 sequence(float),
dVal1 sequence(double),
dVal2 sequence(double),
dVal3 sequence(double),
ts1 sequence(unsigned(4)),
ts2 sequence(unsigned(4)),
ui8 sequence(unsigned(8))
);
其他示例使用的是从 2013 年 IBM 历史股票报价值中获取的数据。这些示例的表定义如下:
create table Quote(
symbol char(21) primary key,
day sequence(unsigned(4) asc),
low sequence(float),
high sequence(float),
open sequence(float),
close sequence(float),
volume sequence(unsigned(4))
);
创建此表并加载股票报价数据的脚本位于 samples/xsql/scripts/financial 目录下的 IBM-q1-2013.sql 文件中。
分类函数
请使用以下链接查看按类别分类的这些方法的描述和示例:
函数 | 说明 |
---|---|
比较运算符 | 对输入序列执行比较运算符(==、!=、>、>=、<、<=)并生成布尔值结果序列的函数 |
逻辑运算符 | 对输入序列执行逻辑运算符(not、and、or、xor)并生成布尔值结果序列的函数 |
转换运算符 | 将输入序列元素转换为所需类型的函数 |
一元运算符 | 应用指定操作以生成相同类型结果序列的函数:abs、neg |
二元函数 | 对输入序列执行操作并生成相同类型结果序列的函数:add、sub、mul、div、mod、max、min |
折叠函数 | 将两个序列折叠为标量值的函数,例如:加权和、加权平均值、协方差、相关性 |
操作函数 | 执行各种序列操作的函数:重复、反转、连接、子序列、差异、唯一值、标准化、趋势、向上取整、向下取整、拉伸、拉伸0、即期连接、交叉、极值、映射 |
迭代器函数 | 从序列迭代器中提取元素的函数,例如:搜索 |
顶级函数 | 返回输入序列中前 n 个元素(或其位置)的函数:最大值、最小值、最大值位置、最小值位置 |
全局聚合 | 在结果序列中生成标量聚合值的函数:计数、最大值、最小值、求和、乘积、平均值、近似去重、近似去重哈希 |
分组聚合 | 根据 group_by 参数的值将序列拆分为组的函数:计数、最大值、最小值、第一个、最后一个、求和、平均值、方差、样本方差、偏差、样本偏差、近似去重 |
窗口聚合 | 与上述“网格”函数类似,但间隔参数表示从输入序列中的下一个 N 个元素:最大值、最小值、总和、平均值、方差(样本方差)、标准差(样本标准差)、指数移动平均值 |
哈希聚合 | 对未排序的分组序列进行分组:计数、最大值、最小值、总和、平均值、近似去重计数 |
累积聚合 | 在结果序列中累积所有先前元素的平均值、总和、乘积等:最大值、最小值、总和、乘积、平均值、方差(样本方差)、标准差(样本标准差) |
杂项 | 提供 排序、按顺序排序 和 直方图 功能 |