管道函数 ============= 借鉴Linux Shell命令,可以将两个或者多个函数连接到一起,把一个函数的输出作为下一个函数的输入,以这种方式连接的两个或者多个函数就形成了管道。 管道使用竖线 ``|`` 连接多个函数,这被称为管道符。 管道语法 -------------- .. code-block:: sql chain [viewName] | funcName1 | funcName2 | ... .. note:: 函数名称有参数才使用括号包裹参数列表,否则不需要 内置管道函数 --------------- ====================================== ====================================================== 函数名称 使用 ====================================== ====================================================== first(N) 取前N行数据,如:first(50),如果不带参数默认取前10行 last(N) 取前N行数据,如:last(50),如果不带参数默认取前10行 row(idx1, idx2, ...) 用索引抽取所需要的数据行,索引从数字1开始,如:row(1, 7, 15),如果不带参数默认取第一行数据 col(idx1, idx2, ...) 用索引抽取所需要的列,索引从数字1开始,如:col(1, 3),如果不带参数默认取第一列 range('row', from, to) 抽取一定范围内的数据行,包括两端,from与to均为索引,from 从数字 1 开始,直到最后要截取的行 range('col', from, to) 抽取一定范围内的列,包括两端,from与to均为索引,from 从数字 1 开始,直到最后要截取的列 range(rowFrom, rowTo, colFrom, colTo) 对视图进行数据切割,可以理解为切割出一个小区域,即抽取一定范围的行与一定范围内的列交叉部分的数据集 random(N, seed) 随机抽取N行数据,如:random(50),如果不带参数默认取前10行;第二个参数可以控制每次都是不同的随机数据行,默认随机数种子为 0 ====================================== ====================================================== .. code-block:: sql with a as load jdbc 'select * from 订单'; -- 管道 pipe chain a | random(10) | range('col', 1, 6) | first(3); chain | range(3,6,4,5); chain | row(3,6);