数据开发治理平台 WeData SQL 标签语句

WeData 的开发和编排空间支持 SQL 标签语句功能,用户可以在 SQL 中使用 if-else、for 循环等逻辑判断,从而用更简单的代码实现更加复杂的业务逻辑。

相关产品
数据开发治理平台 WeData 产品页,含版本规格、价格与购买入口。

一、脚本开头特殊标识

–SQL/VMSCRIPT#set( $cnt = 10 )select $cnt;

二、赋值语句和操作符

–SQL/VMSCRIPT#set( $cnt = 10 )#set( $cnt = $cnt + 1 )select $cnt;

三、操作符

操作符 运算符 示例
Object Equivalence == #if( $foo == $bar )
Not Equals != #if( $foo != $bar )
Less Than or Equal To <= #if( $foo <= 42 )
Less Than < #if( $foo < 42 )
Greater Than or Equal To >= #if( $foo >= 42 )
Greater Than > #if( $foo > 42 )
Equals String == #if( $foo == "bar" )
Equals Number == #if( $foo == 42 )
Boolean NOT ! #if( !$foo )

四、整数形式

–SQL/VMSCRIPT#set( $cnt = 10 )#set( $cnt = $cnt + 1 )#foreach($i in $_range.of(1, $cnt, 1))select $cnt,$i;#end

五、列表模式

–SQL/VMSCRIPT#foreach($table in ["test_user_info_table", "test_issue_info_table"]) select '$table' table_name, count(1) cnt from $table where substring(create_time, 1, 7) = '2022-11' #if($foreach.last != true) union all #end#end

六、使用赋值变量

–SQL/VMSCRIPT–此语句会执行age>2的分支#set( $flag_1 = 0 )#set( $flag_2 = 0 )select * from default.demo_hivewhere #if($flag_1 == 1)id = 1;#elseif( $flag_2 == 1)id = 2;#elseid >2;#end

使用系统参数,系统参数必须使用 ${variable_name} 格式。

这里变量 flag_1和 flag_2 在工作流任务调度中都设置为了0。

–SQL/VMSCRIPT–此语句会执行age>2的分支select * from default.demo_hivewhere #if(${flag_1} == 1)age = 1;#elseif(${flag_2} == 1)age = 2;#elseage >2;#end

使用系统变量 + 时间变量,其中 dt、dt_pre_7d、dt_pre_1d 为创建的时间参数变量。

–SQL/VMSCRIPT–此语句会执行else的分支select * from default.user_info where #if(${is_reload} == "1")create_time <= ${dt};#elseif(${is_deltareload} == "1")create_time between ${dt_pre_7d} and ${dt};#elsecreate_time between ${dt_pre_1d} and ${dt};#end

七、使用范围说明

可以在 WeData 的开发空间和编排空间中使用 SQL 标签。

八、模板语言

实现使用了 velocity,相关的文档可参见 Apache Velocity Engine VTL Reference。

注意:SQL 标签语句对于新购买的调度资源组该功能会自动生效。对于老的调度资源组需要产研团队进行协助重启升级。建议购买新的调度资源组,然后绑定项目。

赞 (0)
上一篇 4天前
下一篇 4天前