【问题标题】:How to check whether a certain field is present in AWS IoT message or not?如何检查 AWS IoT 消息中是否存在某个字段?
【发布时间】:2017-05-31 07:30:08
【问题描述】:

我有两个 IoT 规则,其中一个规则将有效数据存储到 DynamoDB 中的一个表中,另一个规则将无效数据存储到 DynamoDB 中的另一个表中。

只要所有字段都存在,它就可以正常工作。但是,如果任何字段不存在,IoT 会抛出:评估 where 子句时出错:未定义结果

例如这里是预期的消息:

{
    field_1: 'value1',
    field_2: 'value2',
    field_3: 'value3'
}

有效数据的 SQL 规则:

select field_1 as x, field_2 as y, field_3 as z WHERE cast(field_1 as Int) > 10

无效数据的 SQL 规则:

select field_1 as x, field_2 as y, field_3 as z WHERE NOT ( cast(field_1 as Int) > 10 )

如果缺少如下所示的任何字段,上述规则将不起作用。

{
    field_1: 'value1',
    field_2: 'value2'
}

检测某个字段是否存在的方法是什么?

【问题讨论】:

    标签: amazon-web-services iot aws-iot


    【解决方案1】:

    您可以使用 IsUndefined() 函数来执行此操作。 例如,您可以在 WHERE 语句中执行类似的操作:

    SELECT field_1 as x, field_2 as y, field_3 as z FROM 'topic' WHERE IsUndefined(field_1) = False AND IsUndefined(field_2) = False AND IsUndefined(field_3) = False
    

    使用此语句,如果缺少 3 个字段之一,则不会触发规则。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-18
      • 2022-09-30
      • 2021-06-20
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多