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

你好,咨询一个DataWorks问题,我现在有个 赋值节点-> shell节点 ,然后赋?

你好,咨询一个DataWorks问题,我现在有个 赋值节点-> shell节点 ,然后赋值节点是一个sql,这个sql 有时候会输出为空,导致下游shell报错【处理输入参数替换错误】,我怎么可以判断如果输出为空呢?我的shell是发送一个消息,如果上游sql有输出,shell就会推送sql内容,如果sql没有数据,我想shell推送一个无异常

展开
收起
真的很搞笑 2023-07-01 16:07:01 71 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    以在shell节点中添加一个判断逻辑,判断赋值节点的输出是否为空,如果为空则推送一个无数据的消息。您可以按照以下步骤进行操作:

    在shell节点中,使用shell脚本编写判断逻辑。可以使用if语句判断赋值节点的输出是否为空,例如:
    bash
    Copy
    sql_output=$1 # $1 为赋值节点输出的结果,保存到变量 sql_output 中
    if [ -z "$sql_output" ]; then
    echo "无数据"
    else
    echo "${sql_output}"
    fi
    在shell节点中配置输入参数,将赋值节点的输出作为输入参数传递给shell脚本。可以在输入参数中添加一个参数,例如 $1,将赋值节点的输出作为该参数的值进行传递。

    在shell节点中配置输出参数,将shell脚本的输出作为输出参数传递给下游节点。可以在输出参数中添加一个参数,例如 $2,将shell脚本的输出作为该参数的值进行传递。

    在下游节点中,根据输出参

    2023-07-31 20:27:59
    赞同 展开评论 打赏
  • 你好!要判断赋值节点输出是否为空,可以在shell节点中添加一些逻辑来检查。以下是一个例子:

    # 获取赋值节点输出结果
    result=$(cat $1)
    
    # 判断输出是否为空
    if [[ -z "$result" ]]; then
      # 输出为空,发送无异常消息
      echo "无异常"
    else
      # 输出不为空,发送sql内容
      echo "$result"
    fi
    

    在这个示例中,我们首先将赋值节点的输出结果存储在$result变量中(假设输出结果被保存在一个文件中,文件路径作为shell节点的输入参数$1)。然后,我们使用-z条件判断来检查$result是否为空。如果为空,我们打印出"无异常"消息;否则,我们打印出$result的内容。

    请根据您的具体情况调整代码,确保正确引用赋值节点的输出,并适配您的消息发送方式。

    2023-07-01 18:21:16
    赞同 展开评论 打赏
  • 这个之前好像有讨论过 在赋值节点里先做下判断 为空就返回一个字符串null之类的 ,此回答整理自钉群“DataWorks交流群(答疑@机器人)”

    2023-07-01 16:08:44
    赞同 展开评论 打赏

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

相关产品

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

    更多
    数加DataWorks在国网浙江电力的最佳实践 立即下载
    阿里云AnalyticDB+Data Works 企业数仓构 立即下载
    AnalyticDB+DataWorks企业数仓构建方案 立即下载