与SQL的SELECT语义类似,执行一个select操作
Table orders = tableEnv.scan("Orders");Table result = orders.select("a, c as d");
你也可以使用(*)作为通配符,来查询表中所有字段的值
Table result = orders.select("*");
2.1.3、 As
重命名字段
Table orders = tableEnv.scan("Orders");Table result = orders.as("x, y, z, t");
2.1.4 、Where / Filter
与SQL中的WHERE类似,过滤不通过过滤谓词的行
Table orders = tableEnv.scan("Orders");Table result = orders.where("b === 'red'");Table orders = tableEnv.scan("Orders");Table result = orders.filter("a % 2 === 0");
2.1.5 AddColumns
执行字段添加操作。 如果添加的字段已存在,它将抛出异常。
Table orders = tableEnv.scan("Orders");Table result = orders.addColumns("concat(c, 'sunny')");
2.1.6 DropColumns
执行字段放置操作。 字段表达式应该是字段引用表达式,并且只能删除现有字段.Table orders = tableEnv.scan("Orders");Table result = orders.dropColumns("b, c");
2.1.7 RenameColumns
执行字段重命名操作。 字段表达式应该是别名表达式,并且只能重命名现有字段。
Table orders = tableEnv.scan("Orders");Table result = orders.renameColumns("b as b2, c as c2");
AggregateFunction myAggFunc =newMyMinMax();
tableEnv.registerFunction("myAggFunc", myAggFunc);Table table = input
.window(Tumble.over(lit(5).minutes()).on($("rowtime")).as("w"))// define window.groupBy($("key"), $("w"))// group by key and window.aggregate(call("myAggFunc", $("a")).as("x","y")).select($("key"), $("x"), $("y"), $("w").start(), $("w").end());// access //window properties and aggregate results
2.2、聚合
2.2.1 、GroupBy 聚合
与SQL的GROUP BY类似,使用以下运行的聚合运算符对分组键上的行进行分组,从而以组方式聚合行。
Table orders = tableEnv.scan("Orders");Table result = orders.groupBy("a").select("a, b.sum as d");
2.2.2 、GroupBy Window 聚合
对分组窗口上的表,进行分组和聚合,可能会按一个或者多个key进行分组
Table orders = tableEnv.scan("Orders");Table orders = tableEnv.scan("Orders");Table result = orders .window(Tumble.over("5.minutes").on("rowtime").as("w"))// define window.groupBy("a, w")// group by key and window.select("a, w.start, w.end, b.sum as d");// access window properties and aggregate
2.2.3、Over Window 聚合
与SQL的OVER类似,根据前一行和后续行的窗口(范围)为每行计算窗口聚合,参看over window获取更多信息。
Table orders = tableEnv.scan("Orders");Table result = orders
.window(Over)
.partitionBy("a").orderBy("rowtime").preceding("UNBOUNDED_RANGE").following("CURRENT_RANGE").as("w").select("a, b.avg over w, b.max over w, b.min over w")// sliding aggregate
2.2.4、Distinct
与SQL的DISTINCT类似,返回不重合的记录。
Table orders = tableEnv.scan("Orders");Table result = orders.distinct();
三、Joins操作
3.1、Inner Join
与SQL的JOIN 类似,连接两张表,两张表必须具有不同的字段名称,并且必须至少具有一个相等的连接谓词,必须通过连接运算符或使用where或filter运算符来定义。
Table left = tableEnv.fromDataSet(ds1,"a, b, c");Table right = tableEnv.fromDataSet(ds2,"d, e, f");Table result = left.join(right).where("a = d").select("a, b, e");