

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

# でアセットプロパティ通知をクエリする AWS IoT SiteWise
<a name="query-notification-messages"></a>

アセットプロパティ通知をクエリするには、SQL ステートメントで構成される AWS IoT Core ルールを作成します。

AWS IoT SiteWise は、アセットプロパティデータの更新を次の形式で AWS IoT Core に発行します。

```
{
  "type": "PropertyValueUpdate",
  "payload": {
    "assetId": "String",
    "propertyId": "String",
    "values": [
      {
        "timestamp": {
          "timeInSeconds": Number,
          "offsetInNanos": Number
        },
        "quality": "String",
        "value": {
          "booleanValue": Boolean,
          "doubleValue": Number,
          "integerValue": Number,
          "stringValue": "String",
          "nullValue": {
            "valueType": "String
            }           
        }
      }
    ]
  }
}
```

`values` リスト内の各構造は、タイムスタンプ品質値 (TQV) 構造です。
+ `timestamp` には、ナノ秒のオフセットがある現在の UNIX エポック時刻 (秒単位) が含まれます。
+ `quality` には、データポイントの品質を示す、以下のいずれかの文字列が含まれます。
  + `GOOD` - データはいずれの問題の影響も受けません。
  + `BAD` - データはセンサーの障害などの問題による影響を受けます。
  + `UNCERTAIN` - データはセンサーの不正確さなどの問題による影響を受けます。
+ `value` には、プロパティのタイプに応じて、以下のいずれかのフィールドが含まれます。
  + `booleanValue`
  + `doubleValue`
  + `integerValue`
  + `stringValue`
  + `nullValue`

`nullValue` – 値が Null で品質が `BAD`または のプロパティ値のタイプを示す次のフィールドを持つ構造`UNCERTAIN`。
+ `valueType` – \$1"B"、"D"、"S"、"I"\$1 の列挙型

`values` 配列から値を解析するには、ルールの SQL ステートメントで複雑にネストされたオブジェクトクエリを使用する必要があります。詳細については、*[AWS IoT Developer Guide]* (デベロッパーガイド) の[[Nested object queries]](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-nested-queries.html) (オブジェクトクエリのネスト) を参照するか、アセットプロパティ通知メッセージの解析の具体例については、[プロパティ値の更新を Amazon DynamoDB に発行する](publish-to-amazon-dynamodb.md) チュートリアルを参照してください。

**Example 値の配列を抽出するクエリの例**  
次のステートメントは、そのプロパティを持つすべてのアセットの特定の Double 型プロパティについて、更新されたプロパティ値の配列をクエリする方法を示しています。  

```
SELECT
  (SELECT VALUE (value.doubleValue) FROM payload.values) AS windspeed
FROM
  '$aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE' 
WHERE
  type = 'PropertyValueUpdate'
```
前のルールクエリステートメントは、次の形式でデータを出力します。  

```
{
  "windspeed": [
    26.32020195042838,
    26.282584572975477,
    26.352566977372508,
    26.283084346171442,
    26.571883739599322,
    26.60684140743005,
    26.628738636715045,
    26.273486932802125,
    26.436379105473964,
    26.600590095377303
  ]
}
```

**Example 単一の値を抽出するクエリの例**  
次のステートメントは、そのプロパティを持つすべてのアセットの特定の Double 型プロパティについて、プロパティ値の配列から最初の値をクエリする方法を示しています。  

```
SELECT
  get((SELECT VALUE (value.doubleValue) FROM payload.values), 0) AS windspeed
FROM
  '$aws/sitewise/asset-models/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE' 
WHERE
  type = 'PropertyValueUpdate'
```

前のルールクエリステートメントは、次の形式でデータを出力します。

```
{
  "windspeed": 26.32020195042838
}
```

**重要**  
このルールクエリステートメントは、各バッチの最初の値以外の値の更新を無視します。各バッチには最大 10 個の値を含めることができます。残りの値を含める必要がある場合は、アセットプロパティ値を他のサービスに出力するより複雑なソリューションを設定する必要があります。例えば、配列内の各値を別のトピックに再発行する AWS Lambda アクションでルールを設定し、そのトピックをクエリして各値を目的のルールアクションに発行する別のルールを設定できます。