我有两条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'
}
检测某个字段是否存在的方法是什么?
答案 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个字段之一,则规则不会触发。