本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
WriteRecords
使您能够将时间序列数据写入 Timestream。您可以指定要插入到系统的单个数据点或一批数据点。Timestream 为您提供了一个灵活的架构,它可以根据您在调用写入数据库时指定的数据点的维度名称和数据类型,自动检测 Timestream 表的列名和数据类型。
Timestream 支持最终一致性读取语义。这意味着,当您在将一批数据写入 Timestream 后立即查询数据时,查询结果可能无法反映最近完成的写入操作的结果。结果可能还包括一些陈旧的数据。如果您在短时间后重复查询请求,则结果应返回最新数据。适用服务配额。
请参阅代码示例,了解详细信息。
Upserts
您可以在WriteRecords
请求中使用Version
参数来更新数据点。Timestream 会跟踪每条记录的版本号。 Version
1
当请求中没有为记录指定时,默认为。Timestream 会更新现有记录的度量值以及该记录的度量值更高的写入请求Version
时该记录的度Version
量值。当 Timestream 收到的度量值与现有记录的度量值相同的更新请求时,如果 Timestream 的现有值大于的Version
现有值Version
,它仍会更新。只要的值Version
不断增加,就可以根据需要多次更新数据点。
例如,假设你写了一条新记录,但没有在请求Version
中注明。Timestream 存储此记录,并将其设置Version
为。1
现在,假设您尝试使用具有不同度量值的相同记录的WriteRecords
请求来更新此记录,但与以前一样,没有提供Version
。在这种情况下,Timestream 将拒绝此更新,RejectedRecordsException
因为更新的记录的版本不大于 “版本” 的现有值。
但是,如果您要在Version
设置为的情况下重新发送更新请求2
,Timestream 将成功更新记录的值,Version
并将设置为。2
接下来,假设您发送的WriteRecords
请求具有相同的记录和相同的度量值,但Version
设置为3
。在这种情况下,Timestream 只会更新Version
为。3
任何进一步的更新都需要发送大于的版本号3
,否则更新请求将收到RejectedRecordsException
。
请求语法
{
"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
"
}
请求参数
有关所有操作的通用参数的信息,请参阅通用参数。
该请求接受以下JSON格式的数据。
- CommonAttributes
-
包含请求中所有记录共享的常用度量、维度、时间和版本属性的记录。当数据写入 Timestream 时,指定的度量和维度属性将与记录对象中的度量和维度属性合并。尺寸不得重叠,否则
ValidationException
会被抛出。换句话说,记录必须包含具有唯一名称的维度。类型:Record 对象
必需:否
- DatabaseName
-
Timestream 数据库的名称。
类型:字符串
长度约束:最小长度为 3。最大长度为 256。
必需:是
- Records
-
包含每个时间序列数据点的唯一度量、维度、时间和版本属性的记录数组。
类型:Record 对象数组
数组成员:最少 1 个项目。最多 100 个项目。
必需:是
- TableName
-
Timestream 表的名称。
类型:字符串
长度约束:最小长度为 3。最大长度为 256。
必需:是
响应语法
{
"RecordsIngested": {
"MagneticStore": number,
"MemoryStore": number,
"Total": number
}
}
响应元素
如果操作成功,服务将发回 HTTP 200 响应。
以下数据由服务以JSON格式返回。
- RecordsIngested
-
有关此请求获取的记录的信息。
类型:RecordsIngested 对象
错误
有关所有操作的常见错误的信息,请参阅常见错误。
- AccessDeniedException
-
您无权执行此操作。
HTTP状态码:400
- InternalServerException
-
由于内部服务器错误,Timestream 无法完全处理此请求。
HTTP状态码:500
- InvalidEndpointException
-
请求的端点无效。
HTTP状态码:400
- RejectedRecordsException
-
WriteRecords 在以下情况下会抛出这个异常:
-
具有重复数据的记录,其中有多个具有相同维度、时间戳和度量名称的记录,但是:
-
测量值不同
-
请求中不存在版本,或者新记录中版本的值等于或小于现有值
在这种情况下,如果 Timestream 拒绝数据,则
RejectedRecords
响应中的ExistingVersion
字段将指示当前记录的版本。要强制更新,您可以重新发送请求,并将该记录的版本设置为大于。ExistingVersion
-
-
时间戳超出内存存储保留期限的记录。
-
维度或度量超过时间流定义限制的记录。
有关更多信息,请参阅《亚马逊 Timestream 开发者指南》中的配额。
HTTP状态码:400
-
- ResourceNotFoundException
-
该操作试图访问一个不存在的资源。可能未正确指定资源,或者其状态可能不正确ACTIVE。
HTTP状态码:400
- ThrottlingException
-
用户发出的请求太多,超过了服务配额。请求已被阻止。
HTTP状态码:400
- ValidationException
-
无效或格式错误的请求。
HTTP状态码:400
另请参阅
有关API在一种特定语言中使用此功能的更多信息 AWS SDKs,请参阅以下内容: