本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS IoTSQL 参考
在中AWS IoT,规则是使用类似 SQL 的语法定义的。SQL 语句由三类子句组成:
- SET
-
(可选)定义可在整个 SQL 语句和替换模板中重复使用的变量。使用表达式为变量赋值。在 SELECT 和 WHERE 子句以及操作替换模板中引用这些变量。
- SELECT
-
(必填)从传入消息有效载荷提取信息并执行信息转换。要使用的消息由主题筛选条件在 FROM 子句中指定。
SELECT 子句支持数据类型运算符函数、文本、、Case 语句、JSON 扩展、替换模板、、、嵌套对象查询、变量和二进制有效载荷。
- FROM
-
MQTT 消息主题筛选条件,用于标识要从中提取数据的消息。对于发送到符合此处指定的主题筛选条件的 MQTT 主题的每条消息,将激活该规则。对于通过消息代理传递的消息所激活的规则是必需的。对于仅使用基本摄取特征激活的规则是可选的。
- WHERE
-
(可选)添加用于确定是否执行规则指定的操作的条件逻辑。
SQL 语句的示例如下所示:
SELECT color AS rgb FROM 'topic/subtopic' WHERE temperature > 50
MQTT 消息(也称为传入有效载荷)的示例如下所示:
{ "color":"red", "temperature":100 }
如果此消息在 'topic/subtopic' 主题上发布,则触发规则并评估 SQL 语句。如果 color 属性大于 50,SQL 语句将提取 "temperature" 属性的值。WHERE 子句指定条件 temperature > 50。AS 关键字将 "color" 属性重命名为 "rgb"。结果(也称为传出有效载荷)如下所示:
{ "rgb":"red" }
此数据随后将转发至规则的操作,在其中发送数据供后续处理。有关规则操作的更多信息,请参阅 AWS IoT规则操作。
注意
AWS IoTSQL 语法目前不支持注释。
包含空格的属性名称不能用作 SQL 语句中的字段名称。虽然传入有效载荷可以在属性名称中包含空格,但这些名称不能在 SQL 语句中使用。但是,如果您使用通配符 (*) 字段名称规范,它们将传递到传出有效载荷。