本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SE AWS IoT LECT 子句与 ANSI SQL SELECT 子句基本相同,但有一些细微的区别。
SELECT 子句支持 数据类型、运算符、函数、文本、Case 语句、JSON 扩展、替换模板、嵌套对象查询 和 二进制负载。
您可以使用 SELECT 子句从传入 MQTT 消息中提取信息。也可以使用 SELECT *
检索整个传入消息负载。例如:
Incoming payload published on topic
'topic/subtopic'
:{"color":"red", "temperature":50}
SQL statement:SELECT * FROM 'topic/subtopic'
Outgoing payload:{"color":"red", "temperature":50}
如果负载是 JSON 对象,您可以参考对象中的键。您的传出负载将包含键值对。例如:
Incoming payload published on topic
'topic/subtopic'
:{"color":"red", "temperature":50}
SQL statement:SELECT color FROM 'topic/subtopic'
Outgoing payload:{"color":"red"}
您可以使用 AS 关键字重命名键。例如:
Incoming payload published on topic
'topic/subtopic'
:{"color":"red", "temperature":50}
SQL:SELECT color AS my_color FROM 'topic/subtopic'
Outgoing payload:{"my_color":"red"}
您可以通过用逗号分隔来选择多个项目。例如:
Incoming payload published on topic
'topic/subtopic'
:{"color":"red", "temperature":50}
SQL:SELECT color as my_color, temperature as fahrenheit FROM 'topic/subtopic'
Outgoing payload:{"my_color":"red","fahrenheit":50}
您可以通过在向传入负载添加项目时包括“*”来选择多个项目。例如:
Incoming payload published on topic
'topic/subtopic'
: {"color":"red", "temperature":50} SQL: SELECT *, 15 as speed FROM 'topic/subtopic' Outgoing payload: {"color":"red", "temperature":50, "speed":15}
您可以使用 "VALUE"
关键字来生成不属于 JSON 对象的传出负载。使用 SQL 版本 2015-10-08
时,您只能选择一个项目。使用 SQL 版本 2016-03-23
或更高版本时,您还可以选择作为顶级对象输出的数组。
Incoming payload published on topic
'topic/subtopic'
:{"color":"red", "temperature":50}
SQL:SELECT VALUE color FROM 'topic/subtopic'
Outgoing payload:"red"
您可以使用 '.'
语法深入剖析传入负载中的嵌套 JSON 对象。例如:
Incoming payload published on topic
'topic/subtopic'
:{"color":{"red":255,"green":0,"blue":0}, "temperature":50}
SQL:SELECT color.red as red_value FROM 'topic/subtopic'
Outgoing payload:{"red_value":255}
有关如何使用包含预留字符(如数字或连字符(减号)的 JSON 对象和属性名称的信息,请参阅 JSON 扩展
您可以使用函数 (参阅 函数) 来转换传入负载。您可以使用括号进行分组。例如:
Incoming payload published on topic
'topic/subtopic'
:{"color":"red", "temperature":50}
SQL:SELECT (temperature - 32) * 5 / 9 AS celsius, upper(color) as my_color FROM 'topic/subtopic'
Outgoing payload:{"celsius":10,"my_color":"RED"}