

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 中查詢資產屬性通知 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 epoch 時間，以秒為單位，具有奈秒偏移。
+ `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 開發人員指南*》中的[巢狀物件查詢](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-nested-queries.html)，或參閱 [將屬性值更新發佈至 Amazon DynamoDB](publish-to-amazon-dynamodb.md)教學課程以取得剖析資產屬性通知訊息的特定範例。

**Example 擷取值陣列的查詢範例**  
下列陳述式示範如何在有該屬性的所有資產上針對特定雙類型屬性查詢更新屬性值的陣列。  

```
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 擷取單一值的查詢範例**  
下列陳述式示範如何在有該屬性的所有資產上針對特定雙類型屬性，從屬性值的陣列查詢第一個值。  

```
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 動作的規則，將陣列中的每個值重新發佈至另一個主題，並設定另一個規則來查詢該主題，並將每個值發佈至所需的規則動作。