如何检查AWS IoT消息中是否存在某个字段?

时间:2017-05-31 07:30:08

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

我有两条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'
}

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

1 个答案:

答案 0 :(得分:0)

您可以使用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个字段之一,则规则不会触发。