开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

DataWorks给个样例你吧,现在有a和b两个参数,a和b的值给的不一样时是正常的,怀疑是bug?

DataWorks给个样例你吧,现在有a和b两个参数,a和b的值给的不一样时是正常的,但是给的值一样就不正常了,比如都给1,然后b参数的值就会被加上中括号。怀疑是bug?select
val
from
(
select 10 as val
)
where
(1 in(${a}) or ${a} is null)
and 2 in(${b})
;用数据服务接口可以测一下,a和b传参的值相同和不同时生成的sql

展开
收起
真的很搞笑 2023-11-30 13:50:24 38 0
3 条回答
写回答
取消 提交回答
  • 同个参数不能同时放在in 和 非in的计算里 如果有这样的需要 需要拆分成两个参数 看上面的案例 a同时出现在了in和非in的运算里 需要拆分成 a1 和 a2两个参数试下,此回答整理自钉群“DataWorks交流群(答疑@机器人)”

    2023-11-30 19:39:29
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在阿里云DataWorks中,如果你遇到了一个参数的值在特定情况下会被加上中括号的问题,可能是由于数据类型、格式或逻辑错误导致的。以下是一个可能的样例来说明这个问题:

    假设你有以下SQL查询:

    -- 假设表`your_table`有一个名为`value`的字段
    
    SELECT * FROM your_table WHERE value = '${a}'
    

    然后你在DataWorks中配置了两个参数:ab

    • 如果你为参数ab都设置了一个相同的值(例如,都是1),那么在运行这个任务时,可能会出现意外的结果,比如value字段的值被加上了中括号。
    • 为了确定问题是否与参数值相同有关,你可以尝试使用不同的值,并观察结果是否一致。
    2023-11-30 18:18:32
    赞同 展开评论 打赏
  • 在您的 SQL 查询中,where 子句中的条件可能解释为错误的布尔表达式。

    ab 的值相同时,生成的 SQL 语句将包含一个无效的子查询,例如:

    select val from (select 10 as val) where (1 in(1) or 1 is null) and 2 in([1]);
    

    在这种情况下,SQL 引擎可能会报错或返回不正确的结果。

    为了解决这个问题,请确保使用有效的 SQL 语法,并正确地处理参数。如果您怀疑这是一个 DataWorks 中的 bug,请联系阿里云技术支持以获取更多帮助和信息。

    2023-11-30 14:27:41
    赞同 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关产品

  • 大数据开发治理平台 DataWorks
  • 相关电子书

    更多
    DataWorks数据集成实时同步最佳实践(含内测邀请)-2020飞天大数据平台实战应用第一季 立即下载
    DataWorks调度任务迁移最佳实践-2020飞天大数据平台实战应用第一季 立即下载
    DataWorks商业化资源组省钱秘籍-2020飞天大数据平台实战应用第一季 立即下载

    相关实验场景

    更多