首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SnapLogic中的条件表达式

SnapLogic中的条件表达式
EN

Stack Overflow用户
提问于 2019-12-07 15:20:17
回答 1查看 2.4K关注 0票数 0

我需要检查REST调用的数据输出中是否存在条目。JSON输出如下所示:

代码语言:javascript
复制
{
  "entity":  {
    "entries":[
      {
        "ID": "1",
        "Pipeline": "Pipeline_1",
        "State":"Completed"
      }
    ],
  "duration":1074,
  "create_time":"2010-10-10"
  }
}

例如,我想检查是否缺少Pipeline_1,然后我希望管道打印出'Pipeline_1缺失‘,如果不是- null。我尝试使用三元(?)表达式:

代码语言:javascript
复制
!$Pipeline.contains ("Pipeline_1") ? "Pipeline_1 is missing" : null && !$Pipeline.contains ("Pipeline_2") ? "Pipeline_2 is missing" : null

我在语法上遇到了问题,使用这个方法无法正确处理,因为它只处理第一个查询。

我也尝试过使用match方法,但也没有成功:

代码语言:javascript
复制
match $Pipeline {
    $Pipeline!=("Pipeline_1") => 'Pipeline_1 is missing',
    $Pipeline!=("Pipeline_2") => 'Pipeline_2 is missing',
    _ => 'All of the pipelines have been executed successfully'
}

我得检查一下是否有多种情况。关于如何嵌套条件表达式,有什么建议吗?提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2019-12-08 06:19:45

假设您没有拆分数组$entity.entries[*]并按原样处理传入的文档,下面是一个可能的解决方案。

测试管道:

输入:

代码语言:javascript
复制
{
    "entity": {
        "entries": [
            {
                "ID": "1",
                "Pipeline": "Pipeline_1",
                "State": "Completed"
            }
        ],
        "duration": 1074,
        "create_time": "2010-10-10"
    }
}

表达式:

代码语言:javascript
复制
{
    "Pipeline_1": $entity.entries.reduce((a, c) => c.Pipeline == "Pipeline_1" || a, false),
    "Pipeline_2": $entity.entries.reduce((a, c) => c.Pipeline == "Pipeline_2" || a, false)
}.values().reduce((a, c) => c && a, true) ? "All pipelines executed successfully" : "Pipeline(s) missing"

输出:

如果不希望在单个表达式中执行该操作,则可以使用条件快照,如下所示。

下面是条件快照的输出。

然后你可以随意处理。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59227444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档