Hi,
我希望通过FlinkSQL的方式在一个Job中完成两步的操作,但似乎办不到,情况大致如下:


eg.有一个ETL过程,需要从Source获取数据--将每条数据拆分为一条多列数据--对拆分完的数据开窗聚合--输出到sink。
//从Source获取数据
CREATE TABLE sourceTable (
  request_uri STRING
) WITH (
   ..........
);


//这个时候我希望能够创建一张临时中间表  tempTable用来存放 对Source表中数据拆分为多列后的结果,类似于下面这样(Flink 并不支持这么做)
CREATE TABLE tempTable (
  row1 STRING,
  row2 STRING,
) 
Insert into tempTable   select * from sourceTable , LATERAL 
TABLE(ParseUriRow(request_uri)) as T( )....


//最后从 tempTable 表中获取数据并进行开窗做聚合操作
CREATE TABLE sinkTable (
  row1 STRING,
) 
INSERT INTO sinkTable SELECT .., SUM(unit) AS unitSum from tempTable GROUP BY 
TUMBLE(rowtime,INTERVAL '30' SECOND), ...


以上是大致情况描述,我希望能在一个Job中一次性完成以上数据处理,而不分成两个Job,不知是否有好的解决方案?
Thank!

回复