其他分析函数
概述
以下函数接受多种输入序列参数,并生成如表中所述的结果序列或标量类型:
函数 | 说明 |
---|---|
seq_histogram( ... ) | 为输入序列构建直方图。应指定输入序列的最小(含)值和最大(不含)值以及区间(直方图列)的数量。(区间数量不应大于瓦片大小) |
seq_sort( ... ) | 对先前使用 get() 提取的序列元素进行排序,并构建一个排列数组(位置),该数组可用于访问其他序列(也提取到数组中的)的元素 |
seq_order_by( ... ) | 使用 sort() 生成的排列对序列元素进行排序。如果数据参数为 "None",此函数将提取所有序列元素到一个数组,然后根据给定的排列创建对该数组的迭代器。创建的数组应通过 reset() 方法删除。如果数据参数不为 NULL,则忽略输入迭代器,并从该数组中获取数据。 |
sort函数
seq_sort()
函数会根据第二个参数(其值为字符串“asc”或“desc”)对序列进行排序。在此示例中,desc_volume
(按降序排序)随后用于将相应元素的收盘价(通过使用“@”运算符隐式调用 seq_order_by()
)投影到结果序列 close_by_volume
上。 以下是一个演示 seq_sort()
函数的示例脚本:
SELECT symbol, seq_search(day, 20130101, 20130331) as Q1_13,
seq_sort(volume@Q1_13, 'desc') as desc_volumes,
close@desc_volumes as "close_by_desc_volume"
FROM Quote WHERE symbol='SYM0';
symbol
Q1_13{}
desc_volumes{}
close_by_desc_volume{}
------------------------------------------------------------------------------
SYM0
{20130101, 20130104, 20130106, 20130110, 20130123, 20130125, 20130129,
20130213, 20130214, 20130216, 20130311, 20130326}
{808, 805, 732, 450, 420, 402, 385,
367, 335, 77, 69, 48, 45}
{45.790001, 80.320000, 67.870003, 29.940001, 37.279999, 53.459999, 25.920000,
80.919998, 62.830002, 43.849998, 57.730000, 50.369999, 74.730003}
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
g 11
order by函数
seq_order_by()
函数会生成一个根据第二个参数中指定的序列排序的序列。在此示例中,seq_order_by()
显式调用以按成交量升序生成收盘价序列。 以下是一个演示 seq_order_by()
函数的示例脚本:
SELECT symbol, seq_search(day, 20130101, 20130331) as Q1_13,
seq_sort(volume@Q1_13, 'asc') as by_volume,
seq_order_by(close, by_volume) as "close order_by_vloume"
FROM Quote WHERE symbol='SYM0';
symbol
Q1_13{}
by_volume{}
close order_by_vloume{}
------------------------------------------------------------------------------
SYM0
{20130101, 20130104, 20130106, 20130110, 20130123, 20130125, 20130129,
20130213, 20130214, 20130216, 20130311, 20130326}
{45, 48, 69, 335, 367, 385, 402,
420, 450, 732, 805, 808}
{74.730003, 50.369999, 57.730000, 62.830002, 80.919998, 25.920000, 53.459999,
37.279999, 29.940001, 67.870003, 80.320000, 45.790001}
要使用 xSQL 演示此选择语句,可从 samples/xsql/scripts/financial 目录中运行以下命令来执行示例脚本:
g 11
示例
正如“分析函数库示例”页面中所解释的那样,以下示例中的数据取自 2013 年 IBM 的历史值。通过在 samples/xsql/scripts/financial 目录中运行各种脚本将数据加载到 xSQL 中。要重现以下示例,请运行 g.bat(在 Linux 系统上为 g.sh),并指定示例编号 11。例如,以 scripts/financial 作为当前工作目录,只需键入:
g 11
以下是一个示例代码片段,展示了 2013 年第一季度的其中一些功能。
-- sort, order_by
SELECT symbol, seq_search(day, 20130101, 20130331) as Q1_13,
seq_sort(volume@Q1_13, 'asc') as by_volume,
seq_order_by(close, by_volume) as "close order_by_vloume"
FROM Quote WHERE symbol='SYM0';
symbol
Q1_13{}
by_volume {}
close order_by_vloume{}
--------------------------------------------------------------------
SYM0
{20130101, 20130104, 20130106, 20130110, 20130123, ...<2 element(s)>...,
20130213, 20130214, 20130216, 20130311, 20130326}
{45, 48, 69, 335, 367, ...<2 element(s)>..., 420, 450, 732, 805, 808}
{74.7300033569336, 50.3699989318848, 57.7299995422363, 62.8300018310547, 80.9199981689453, ...<2 element(s)>...,
37.2799987792969, 29.9400005340576, 67.870002746582, 80.3199996948242, 45.7900009155273}