支持的SQL解析能力

对于不同类型的作业,血缘管理支持的SQL解析能力不同。

DI任务的SQL解析能力

解析DI任务中的SQL语句时,使用的是开源的Calcite组件,如果SQL语句中含有Calcite的保留关键字(完整的SQL保留关键字请查阅Calcite官网):

如果DI任务包含表抽取组件,那么可以解析的SQL语句如下:

query:

SELECT { * | projectItem [, projectItem ]* } FROM tableExpression

      [ WHERE booleanExpression ]

      [ GROUP BY { groupItem [, groupItem ]* } ]

      [ HAVING booleanExpression ] 

      [ ORDER BY orderItem [, orderItem ]* ]

      [ LIMIT  count ]

 

tableExpression:

       tableExpression [, tableExpression]*

    |  '(' query ')'

    |  tableName

    |  tableExpression JOIN tableExpression [ON booleanExpression]

 

参数说明见下表。

表-1 DI任务SQL语句参数说明

参数

说明

projectItem

列名

tableName

表名

booleanExpression

条件表达式,例如a>1b = 'c'

orderItem

列名

groupItem

列名

count

查询的数量上限

 

SQL语句示例如下:

select * from table1 where id = 1

select id, name from table1 where id = 1 and name = '小明';

select a.id, b.name from "pg". "table1" as a join "default". "table2" as b on a.id = b.id;

 

业务流程-HiveSQL节点任务的SQL解析能力

对于业务流程中Hive节点任务,血缘管理支持的SQL解析能力与当前Hive版本所支持的SQL能力相同。

业务流程-SparkSQL节点任务的SQL解析能力

对于业务流程中SparkSQL节点任务,血缘管理支持的SQL解析能力与当前SparkSQL版本所支持的SQL能力相同。

业务流程-RDSSQL节点任务的SQL解析能力

不支持SQL血缘解析的情况说明:

insert into "public"."b_vertica_2"("id1","name1","addr1") select "id","name","addr" from "public"."b_vertica_1"

create table "public"."b_vertica_2" as select * from "public"."b_vertica_1"

INSERT INTO  "llx"."order_tb_xuhaohanshujieguo"

select * FROM (

    SELECT row_number() over (PARTITION by user_no order by amount DESC) as row_num_func,

           rank() over ( PARTITION by user_no order by amount DESC) as rank_func,

           dense_rank() over (PARTITION by user_no order by  amount DESC ) as dese_rank_func,

           order_id,user_no,amount,create_date

    FROM llx.order_tb

              ) as t

上述SQL中的row_number()函数和rank()函数,目前不支持在Vertica类型数据源的血缘解析中体现。

除此上述几种情况之外,对于业务流程中RDSSQL节点任务,血缘管理支持的SQL解析能力与当前RDSSQL版本所支持的SQL能力相同。