

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS IoT SQL リファレンス
<a name="iot-sql-reference"></a>

では AWS IoT、ルールは SQL のような構文を使用して定義されます。SQL ステートメントは、次の 3 種類の句で構成されます。

**SET**  
(オプション) SQL ステートメントと置換テンプレート全体で再利用できる変数を定義します。式を使用して変数に値を割り当てます。これらの変数は、SELECT 句と WHERE 句、およびアクション置換テンプレートで参照します。  
SET 句は、[データ型](iot-sql-data-types.md)、[オペレータ](iot-sql-operators.md)、、[関数](iot-sql-functions.md)[リテラル](iot-sql-literals.md)、[Case ステートメント](iot-sql-case.md)、、[JSON 拡張](iot-sql-json.md)[変数](iot-sql-set.md#iot-sql-set-usage)、および をサポートします[ネストされたオブジェクトのクエリ](iot-sql-nested-queries.md)。

**SELECT**  
(必須) 受信メッセージのペイロードから情報を抽出し、その情報に対して変換を実行します。使用するメッセージは、FROM 句で指定された[トピックフィルター](topics.md#topicfilters)によって識別されます。  
SELECT 句は、[データ型](iot-sql-data-types.md)、、[オペレータ](iot-sql-operators.md)、[関数](iot-sql-functions.md)、[リテラル](iot-sql-literals.md)[Case ステートメント](iot-sql-case.md)、[JSON 拡張](iot-sql-json.md)、[置換テンプレート](iot-substitution-templates.md)、[変数](iot-sql-set.md#iot-sql-set-usage)、[ネストされたオブジェクトのクエリ](iot-sql-nested-queries.md)、および をサポートします[バイナリペイロード](binary-payloads.md)。

**FROM**  
データを抽出するメッセージを識別する MQTT メッセージ[トピックフィルター](topics.md#topicfilters)。ここで指定されたトピックフィルタに一致する MQTT トピックに送信されるメッセージごとに、ルールがアクティブ化されます。メッセージブローカーを通過するメッセージによってアクティブ化されるルールに必要です。[基本的な取り込み](iot-basic-ingest.md)機能を使用してのみアクティブ化されるルールの場合はオプションです。

**WHERE**  
(オプション) ルールで指定されたアクションが実行されるかどうかを決定する条件付きロジックを追加します。  
WHERE 句は、[データ型](iot-sql-data-types.md)、、[オペレータ](iot-sql-operators.md)、[関数](iot-sql-functions.md)[リテラル](iot-sql-literals.md)、[Case ステートメント](iot-sql-case.md)、[JSON 拡張](iot-sql-json.md)、[変数](iot-sql-set.md#iot-sql-set-usage)、および をサポートします[ネストされたオブジェクトのクエリ](iot-sql-nested-queries.md)。

SQL ステートメントの例は、次のようになります。

```
SELECT color AS rgb FROM 'topic/subtopic' WHERE temperature > 50
```

MQTT メッセージ (入力ペイロードとも呼ばれる) の例は、次のようになります。

```
{
    "color":"red",
    "temperature":100
}
```

このメッセージが `'topic/subtopic'` トピックに発行された場合、ルールはトリガーされ、SQL ステートメントは評価されます。SQL ステートメントでは、`color` プロパティが 50 より大きい場合は、`"temperature"` プロパティの値を抽出します。WHERE 句は、条件 `temperature > 50` を指定します。`AS` キーワードは `"color"` プロパティの名前を `"rgb"` に変更します。結果は、(*出力ペイロード*とも呼ばれる) 次のようになります。

```
{
    "rgb":"red"
}
```

このデータは、さらなる処理のためにデータを送信するルールアクションに転送されます。ルールアクションの詳細については、「[AWS IoT ルールアクション](iot-rule-actions.md)」を参照してください。

**注記**  
コメントは、現在 AWS IoT SQL 構文ではサポートされていません。  
空白を含む属性名は、SQL ステートメントのフィールド名として使用できません。受信ペイロードにはスペースを含む属性名を使用できますが、SQL ステートメントではそのような名前を使用できません。ただし、ワイルドカード (\*) フィールド名指定を使用すると、送信ペイロードに渡されます。