tencent cloud

文档反馈

SQL 标签语句

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

    脚本开头特殊标识

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

    for-each 语句

    整数形式

    --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_hive
    where
    #if($flag_1 == 1)
    id = 1;
    #elseif( $flag_2 == 1)
    id = 2;
    #else
    id >2;
    #end
    使用系统参数,系统参数必须使用 ${variable_name} 格式。
    这里变量 flag_1和 flag_2 在工作流任务调度中都设置为了0。
    --SQL/VMSCRIPT
    --此语句会执行age>2的分支
    select * from default.demo_hive
    where
    #if(${flag_1} == 1)
    age = 1;
    #elseif(${flag_2} == 1)
    age = 2;
    #else
    age >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};
    #else
    create_time between ${dt_pre_1d} and ${dt};
    #end

    使用范围说明

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

    条件判断语句

    实现使用了 velocity,相关的文档可参考 Apache Velocity Engine VTL Reference
    注意:
    SQL 标签语句对于新购买的调度资源组该功能会自动生效。对于老的调度资源组需要产研团队进行协助重启升级。建议购买新的调度资源组,然后绑定项目。
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持