管道函数

借鉴Linux Shell命令,可以将两个或者多个函数连接到一起,把一个函数的输出作为下一个函数的输入,以这种方式连接的两个或者多个函数就形成了管道。 管道使用竖线 | 连接多个函数,这被称为管道符。

管道语法

chain [viewName] | funcName1 | funcName2 | ...

注解

函数名称有参数才使用括号包裹参数列表,否则不需要

内置管道函数

函数名称 使用

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

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);