

要获得与亚马逊 Timestream 类似的功能 LiveAnalytics，可以考虑适用于 InfluxDB 的亚马逊 Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间，以实现实时分析。点击[此处](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)了解更多信息。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# WriteRecords
<a name="API_WriteRecords"></a>

让您能够将时间序列数据写入 Timestream。您可以指定要插入系统的单个数据点或批量数据点。Timestream 提供灵活的架构，能够根据您在调用数据库写入操作时指定的数据点维度名称和数据类型，自动检测 Timestream 表的列名和数据类型。

Timestream 支持最终一致性读取语义。这意味着，如果您将批量数据写入 Timestream 后立即查询数据，查询结果可能不会反映最近完成的写入操作结果。结果可能还包含某些陈旧数据。如果您在短时间后重复查询请求，结果将返回最新的数据。[适用服务配额](https://docs.aws.amazon.com/timestream/latest/developerguide/ts-limits.html)。

请参阅[代码示例](https://docs.aws.amazon.com/timestream/latest/developerguide/code-samples.write.html)，了解详细信息。

 **更新插入** 

您可以在 `WriteRecords` 请求中使用 `Version` 参数，以更新数据点。Timestream 会跟踪每条记录的版本号。当请求中没有为记录指定版本号时，`Version` 默认为 `1`。当 Timestream 接收到针对某条记录具有更高 `Version` 号的写入请求时，会更新该记录的度量值及其 `Version`。当 Timestream 收到更新请求时，如果该请求的度量值与现有记录相同，只要该值大于 `Version` 的现有值，Timestream 仍会更新 `Version`。只要 `Version` 的值不断增加，即可根据需要多次更新数据点。

 例如，假设您写入新记录，但没有在请求中注明 `Version`。Timestream 会存储此记录，并将 `Version` 设置为 `1`。现在，假设您尝试使用具有不同度量值的相同记录的 `WriteRecords` 请求更新此记录，但与之前一样，没有提供 `Version`。在此情况下，Timestream 将拒绝此更新，并显示 `RejectedRecordsException`，因为已更新记录的版本不大于“版本”的现有值。

然而，如果您重新发送更新请求时将 `Version` 设置为 `2`，Timestream 将成功更新该记录的值，并将 `Version` 设置为 `2`。接下来，假设您发送的 `WriteRecords` 请求具有相同的记录和相同的度量值，但将 `Version` 设置为 `3`。在此情况下，Timestream 仅会将 `Version` 更新为 `3`。任何进一步的更新都需要发送大于 `3` 的版本号，否则更新请求将收到 `RejectedRecordsException`。

## 请求语法
<a name="API_WriteRecords_RequestSyntax"></a>

```
{
   "CommonAttributes": { 
      "Dimensions": [ 
         { 
            "DimensionValueType": "string",
            "Name": "string",
            "Value": "string"
         }
      ],
      "MeasureName": "string",
      "MeasureValue": "string",
      "MeasureValues": [ 
         { 
            "Name": "string",
            "Type": "string",
            "Value": "string"
         }
      ],
      "MeasureValueType": "string",
      "Time": "string",
      "TimeUnit": "string",
      "Version": number
   },
   "DatabaseName": "string",
   "Records": [ 
      { 
         "Dimensions": [ 
            { 
               "DimensionValueType": "string",
               "Name": "string",
               "Value": "string"
            }
         ],
         "MeasureName": "string",
         "MeasureValue": "string",
         "MeasureValues": [ 
            { 
               "Name": "string",
               "Type": "string",
               "Value": "string"
            }
         ],
         "MeasureValueType": "string",
         "Time": "string",
         "TimeUnit": "string",
         "Version": number
      }
   ],
   "TableName": "string"
}
```

## 请求参数
<a name="API_WriteRecords_RequestParameters"></a>

有关所有操作的通用参数的信息，请参阅[常用参数](CommonParameters.md)。

请求接受采用 JSON 格式的以下数据。

 ** [CommonAttributes](#API_WriteRecords_RequestSyntax) **   <a name="timestream-WriteRecords-request-CommonAttributes"></a>
一条记录，包含请求中所有记录共享的常用度量、维度、时间和版本属性。当数据写入 Timestream 时，指定的度量和维度属性将与记录对象中的度量和维度属性进行合并。维度不得重叠，否则将抛出 `ValidationException`。换言之，记录必须包含具有唯一名称的维度。  
类型：[Record](API_Record.md) 对象  
必需：否

 ** [DatabaseName](#API_WriteRecords_RequestSyntax) **   <a name="timestream-WriteRecords-request-DatabaseName"></a>
Timestream 数据库的名称。  
类型：字符串  
长度限制：最小长度为 3。最大长度为 256。  
是否必需：是

 ** [Records](#API_WriteRecords_RequestSyntax) **   <a name="timestream-WriteRecords-request-Records"></a>
记录的数组，包含每个时间序列数据点的唯一度量、维度、时间和版本属性。  
类型：[Record](API_Record.md) 对象数组  
数组成员：最少 1 个项目。最多 100 个项目。  
是否必需：是

 ** [TableName](#API_WriteRecords_RequestSyntax) **   <a name="timestream-WriteRecords-request-TableName"></a>
Timestream 表的名称。  
类型：字符串  
长度限制：最小长度为 3。最大长度为 256。  
是否必需：是

## 响应语法
<a name="API_WriteRecords_ResponseSyntax"></a>

```
{
   "RecordsIngested": { 
      "MagneticStore": number,
      "MemoryStore": number,
      "Total": number
   }
}
```

## 响应元素
<a name="API_WriteRecords_ResponseElements"></a>

如果此操作成功，则该服务将会发送回 HTTP 200 响应。

服务以 JSON 格式返回以下数据。

 ** [RecordsIngested](#API_WriteRecords_ResponseSyntax) **   <a name="timestream-WriteRecords-response-RecordsIngested"></a>
有关此请求所摄取记录的信息。  
类型：[RecordsIngested](API_RecordsIngested.md) 对象

## 错误
<a name="API_WriteRecords_Errors"></a>

有关所有操作的常见错误的信息，请参阅[常见错误](CommonErrors.md)。

 ** AccessDeniedException **   
您无权执行此操作。  
HTTP 状态代码：400

 ** InternalServerException **   
 由于内部服务器错误，Timestream 无法完全处理此请求。  
HTTP 状态代码：500

 ** InvalidEndpointException **   
请求的端点无效。  
HTTP 状态代码：400

 ** RejectedRecordsException **   
 WriteRecords 在以下情况下会抛出这个异常：  
+ 包含重复数据的记录，即存在多个具有相同维度、时间戳和度量名称的记录，但：
  + 度量值不同
  + 请求中未包含版本信息，*或*新记录的版本值等于或小于现有值

   在此情况下，如果 Timestream 拒绝数据，则 `RejectedRecords` 响应中的 `ExistingVersion` 字段将指示当前记录的版本。如需强制执行更新，您可以重新发送请求，并将该记录的版本设置为大于 `ExistingVersion` 的值。
+  记录的时间戳超出内存存储的保留期限。
+  维度或度量超过 Timestream 所定义限制的记录。
 有关更多信息，请参阅《Amazon Timestream 开发人员指南》中的[限额](https://docs.aws.amazon.com/timestream/latest/developerguide/ts-limits.html)。    
 ** RejectedRecords **   
 
HTTP 状态代码：400

 ** ResourceNotFoundException **   
该操作试图访问不存在的资源。该资源可能未正确指定，或其状态可能不是“活动”状态。  
HTTP 状态代码：400

 ** ThrottlingException **   
 用户发出的请求过多，已超出服务配额。请求已被阻止。  
HTTP 状态代码：400

 ** ValidationException **   
 请求无效或格式错误。  
HTTP 状态代码：400

## 另请参阅
<a name="API_WriteRecords_SeeAlso"></a>

有关以特定语言之一使用此 API 的更多信息 AWS SDKs，请参阅以下内容：
+  [AWS 命令行界面 V2](https://docs.aws.amazon.com/goto/cli2/timestream-write-2018-11-01/WriteRecords) 
+  [AWS 适用于.NET 的 SDK V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/timestream-write-2018-11-01/WriteRecords) 
+  [AWS 适用于 C\$1\$1 的 SDK](https://docs.aws.amazon.com/goto/SdkForCpp/timestream-write-2018-11-01/WriteRecords) 
+  [AWS 适用于 Go v2 的 SDK](https://docs.aws.amazon.com/goto/SdkForGoV2/timestream-write-2018-11-01/WriteRecords) 
+  [AWS 适用于 Java 的 SDK V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/timestream-write-2018-11-01/WriteRecords) 
+  [AWS JavaScript V3 版软件开发工具包](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/timestream-write-2018-11-01/WriteRecords) 
+  [AWS 适用于 Kotlin 的 SDK](https://docs.aws.amazon.com/goto/SdkForKotlin/timestream-write-2018-11-01/WriteRecords) 
+  [AWS 适用于 PHP 的 SDK V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/timestream-write-2018-11-01/WriteRecords) 
+  [AWS Python 软件开发工具包](https://docs.aws.amazon.com/goto/boto3/timestream-write-2018-11-01/WriteRecords) 
+  [AWS 适用于 Ruby V3 的 SDK](https://docs.aws.amazon.com/goto/SdkForRubyV3/timestream-write-2018-11-01/WriteRecords) 