本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
查询资产属性通知消息
要查询资产属性通知,请创建由SQL报表组成的 AWS IoT Core 规则。
AWS IoT SiteWise 以下列格式将资产属性数据更新发布到 AWS IoT Core。
{ "type": "PropertyValueUpdate", "payload": { "assetId": "
String
", "propertyId": "String
", "values": [ { "timestamp": { "timeInSeconds":Number
, "offsetInNanos":Number
}, "quality": "String
", "value": { "booleanValue":Boolean
, "doubleValue":Number
, "integerValue":Number
, "stringValue": "String
" } } ] } }
values
列表中的每个结构都是一个 timestamp-quality-value (TQV) 结构。
-
timestamp
包含当前的 Unix 纪元时间(以秒为单位),偏移量为纳秒。 -
quality
包含以下字符串之一,用于指示数据点的质量:-
GOOD
– 数据不受任何问题的影响。 -
BAD
– 数据受传感器故障等问题的影响。 -
UNCERTAIN
– 数据受传感器不准确等问题的影响。
-
-
value
包含下列字段之一,具体取决于属性的类型:-
booleanValue
-
doubleValue
-
integerValue
-
stringValue
-
要解析values
数组中的值,你需要在规则语句中使用复杂的嵌套对象查询。SQL有关更多信息,请参阅 AWS IoT 开发人员指南中的嵌套对象查询,或参阅 向亚马逊 DynamoDB 发布房产价值更新 教程,了解解析资产属性通知消息的具体示例。
例 提取值数组的示例查询
以下语句演示如何针对具有特定 double 类型属性的所有资产查询该属性的已更新属性值的数组。
SELECT (SELECT VALUE (value.doubleValue) FROM payload.values) AS windspeed FROM '$aws/sitewise/asset-models/
a1b2c3d4-5678-90ab-cdef-11111EXAMPLE
/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE
' WHERE type = 'PropertyValueUpdate'
上一个规则查询语句采用以下格式输出数据。
{ "windspeed": [ 26.32020195042838, 26.282584572975477, 26.352566977372508, 26.283084346171442, 26.571883739599322, 26.60684140743005, 26.628738636715045, 26.273486932802125, 26.436379105473964, 26.600590095377303 ] }
例 提取单个值的示例查询
以下语句演示如何针对具有特定 double 类型属性的所有资产查询该属性的属性值数组中的第一个值。
SELECT get((SELECT VALUE (value.doubleValue) FROM payload.values), 0) AS windspeed FROM '$aws/sitewise/asset-models/
a1b2c3d4-5678-90ab-cdef-11111EXAMPLE
/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE
' WHERE type = 'PropertyValueUpdate'
上一个规则查询语句采用以下格式输出数据。
{ "windspeed": 26.32020195042838 }
重要
该规则查询语句忽略每个批次中的第一个值更新以外的更新。每个批次最多可以包含 10 个值。如果需要包含其余值,您必须设置更复杂的解决方案,以将资产属性值输出到其他服务。例如,您可以设置一条规则,其 AWS Lambda 操作是将数组中的每个值重新发布到另一个主题,然后设置另一个规则来查询该主题并将每个值发布到所需的规则操作。