SELECT 句 - AWS IoT Core

SELECT 句

AWS IoT の SELECT 句は、基本的に ANSI SQL の SELECT 句と同じですが、わずかな違いがあります。

SELECT 句は、データ型OperatorsFunctionsLiteralsCase ステートメント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 では、選択できる項目は 1 つのみです。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 拡張 を参照してください。

関数を使用して受信ペイロードを変換できます (Functions を参照)。グループ化するには括弧を使用します。以下に例を示します。

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"}