

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

# SQL バージョン
<a name="iot-rule-sql-version"></a>

 AWS IoT ルールエンジンは、SQL のような構文を使用して MQTT メッセージからデータを選択します。SQL ステートメントは、ルールが記述されている JSON ドキュメント内の `awsIotSqlVersion` プロパティで指定された SQL バージョンに基づいて解釈されます。JSON ルールドキュメントの構造については、「[ルールの作成](iot-create-rule.md)」を参照してください。`awsIotSqlVersion` プロパティを使用すると、使用する AWS IoT SQL ルールエンジンのバージョンを指定できます。新しいバージョンをデプロイした場合は、引き続き古いバージョンを使用することも、新しいバージョンを使用できるようにルールを変更することもできます。現在のルールでは、ルールの作成時のバージョンが引き続き使用されます。

以下の JSON 例は、`awsIotSqlVersion` プロパティを使用して SQL バージョンを指定する方法を示しています。

```
{
    "sql": "expression",
    "ruleDisabled": false,
    "awsIotSqlVersion": "2016-03-23",
    "actions": [{
        "republish": {
            "topic": "my-mqtt-topic",
            "roleArn": "arn:aws:iam::123456789012:role/my-iot-role"
        }
    }]
}
```

AWS IoT は現在、次の SQL バージョンをサポートしています。
+ `2016-03-23` – 2016 年 3 月 23 日にビルドされた SQL バージョン (推奨)。
+ `2015-10-08` – 2015 年 10 月 8 日にビルドされた元の SQL バージョン。
+ `beta` – 最新のベータ SQL バージョン。このバージョンでは、ルールへの変更が必要になる場合があります。

## SQL ルールエンジン 2016-03-23 バージョンの最新情報
<a name="sql-2016-03-23-beta"></a>
+ 入れ子になっている JSON オブジェクトの選択が修正されました。
+ 配列クエリに関する修正が行われました。
+ オブジェクト間でのクエリがサポートされるようになりました。詳細については、「[ネストされたオブジェクトのクエリ](iot-sql-nested-queries.md)」を参照してください。
+ 最上位レベルのオブジェクトとして配列を出力できるようになりました。
+ JSON および非 JSON 形式のデータに適用できる `encode(value, encodingScheme)` 関数の追加。詳細については、「[encode 関数](iot-sql-functions.md#iot-sql-encode-payload)」を参照してください。

### 最上位レベルのオブジェクトとして `Array` を出力する
<a name="return-array-rule"></a>

この機能を使用すると、ルールから、最上位レベルのオブジェクトとして配列を返すことができます。たとえば、次の MQTT メッセージの場合:

```
{
    "a": {"b":"c"},
    "arr":[1,2,3,4]
}
```

次のルールを使用します。

```
SELECT VALUE arr FROM 'topic'
```

この場合、ルールにより、次の出力が生成されます。

```
[1,2,3,4]
```