有关与适用于 LiveAnalytics 的 Amazon Timestream 类似的功能,可以考虑使用适用于 InfluxDB 的 Amazon Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间,以实现实时分析。点击此处了解更多信息。
Query
Query 是一种同步操作,可让您对 Amazon Timestream 数据运行查询。
如果已启用 QueryInsights,此 API 还会返回与所执行查询相关的见解和指标。QueryInsights 有助于调整查询的性能。有关 QueryInsights 的更多信息,请参阅使用查询见解优化 Amazon Timestream 中的查询。
注意
QueryInsights 启用后,允许发出的最大 Query API 请求数为每秒 1 次查询(QPS)。如果超过此查询速率,可能会导致节流。
Query 将在 60 秒后超时。必须更新 SDK 中的默认超时,以支持 60 秒的超时。请参阅代码示例,以了解详细信息。
在以下情况下,您的查询请求将失败:
-
如果在 5 分钟的幂等性时段之外使用相同的客户端令牌提交
Query请求。 -
如果在 5 分钟的幂等性时段内使用相同的客户端令牌提交
Query请求,但更改其他参数。 -
如果行的大小(包括查询元数据)超过 1MB,则查询将失败并显示以下错误消息:
Query aborted as max page response size has been exceeded by the output result row -
如果查询发起者与结果读取器的 IAM 主体不一致,且/或查询发起者与结果读取器在查询请求中使用的查询字符串不同,则查询将失败并显示
Invalid pagination token错误。
请求语法
{
"ClientToken": "string",
"MaxRows": number,
"NextToken": "string",
"QueryInsights": {
"Mode": "string"
},
"QueryString": "string"
}
请求参数
有关所有操作的通用参数的信息,请参阅常用参数。
请求接受采用 JSON 格式的以下数据。
- ClientToken
-
发送
Query请求时指定、最多包含 64 个 ASCII 字符的唯一且区分大小写的字符串。提供ClientToken使对Query的调用具有幂等性。这意味着重复运行相同的查询将产生相同的结果。换言之,发出多个相同的Query请求与发出单个请求具有相同的效果。在查询中使用ClientToken时,请注意以下事项:-
如果在没有
ClientToken的情况下实例化查询 API,则查询 SDK 将为您自动生成ClientToken。 -
如果
Query调用仅包含ClientToken但不包含NextToken,则对Query的调用视作新运行的查询。 -
如果调用包含
NextToken,则该特定调用视作对查询 API 先前调用的后续调用,并返回结果集。 -
4 小时后,具有相同
ClientToken的任何请求都将视为新请求。
类型:字符串
长度限制:长度下限为 32。最大长度为 128。
必需:否
-
- MaxRows
-
Query输出中要返回的行总数。使用指定的MaxRows值初始运行Query将返回查询结果集,具体分为两种情况:-
结果的大小小于
1MB。 -
结果集中的行数小于
maxRows的值。
否则,对
Query的初始调用仅返回NextToken,随后可用于后续调用以获取结果集。要恢复分页,请在后续命令中提供NextToken值。如果行大小较大(例如,行包含许多列),Timestream 可能会返回较少行数,以防响应大小超过 1MB 的限制。如果未提供
MaxRows,Timestream 将发送必要的行数,以满足 1MB 的限制。类型:整数
有效范围:最小值为 1。最大值为 1000。
必需:否
-
- NextToken
-
用于检索结果集的分页令牌。当使用
Query调用NextTokenAPI 时,该特定调用视作对Query先前调用的后续调用,并返回结果集。然而,如果Query调用仅包含ClientToken,则对Query的调用视作新运行的查询。在查询中使用 NextToken 时,请注意以下事项:
-
分页令牌最多可用于五次
Query调用,或持续使用长达 1 小时(以先到者为准)。 -
使用相同的
NextToken将返回相同的记录集。要继续对结果集进行分页,则必须使用最新的nextToken。 -
假设
Query调用返回两个NextToken值,TokenA和TokenB。如果在后续Query调用中使用TokenB,则TokenA会失效且无法重复使用。 -
在分页开始后,如需请求查询的先前结果集,则必须重新调用查询 API。
-
应使用最新的
NextToken进行分页,直至返回null,此时应使用新的NextToken。 -
如果查询发起者与结果读取器的 IAM 主体不一致,且/或查询发起者与结果读取器在查询请求中使用的查询字符串不同,则查询将失败并显示
Invalid pagination token错误。
类型:字符串
长度限制:最小长度为 0。最大长度为 2048。
必需:否
-
- QueryInsights
-
封装用于启用
QueryInsights的设置。启用
QueryInsights,除所执行查询的查询结果以外,还会返回见解和指标。可使用QueryInsights以调整查询性能。类型:QueryInsights 对象
必需:否
- QueryString
-
由 Timestream 运行的查询。
类型:字符串
长度限制:长度下限为 1。长度上限为 262144。
必需:是
响应语法
{
"ColumnInfo": [
{
"Name": "string",
"Type": {
"ArrayColumnInfo": "ColumnInfo",
"RowColumnInfo": [
"ColumnInfo"
],
"ScalarType": "string",
"TimeSeriesMeasureValueColumnInfo": "ColumnInfo"
}
}
],
"NextToken": "string",
"QueryId": "string",
"QueryInsightsResponse": {
"OutputBytes": number,
"OutputRows": number,
"QuerySpatialCoverage": {
"Max": {
"PartitionKey": [ "string" ],
"TableArn": "string",
"Value": number
}
},
"QueryTableCount": number,
"QueryTemporalRange": {
"Max": {
"TableArn": "string",
"Value": number
}
},
"UnloadPartitionCount": number,
"UnloadWrittenBytes": number,
"UnloadWrittenRows": number
},
"QueryStatus": {
"CumulativeBytesMetered": number,
"CumulativeBytesScanned": number,
"ProgressPercentage": number
},
"Rows": [
{
"Data": [
{
"ArrayValue": [
"Datum"
],
"NullValue": boolean,
"RowValue": "Row",
"ScalarValue": "string",
"TimeSeriesValue": [
{
"Time": "string",
"Value": "Datum"
}
]
}
]
}
]
}
响应元素
如果此操作成功,则该服务将会发送回 HTTP 200 响应。
服务以 JSON 格式返回以下数据。
- ColumnInfo
-
已返回结果集的列数据类型。
类型:ColumnInfo 对象数组
- NextToken
-
分页令牌,可在
Query调用中再次使用以获取下一组结果。类型:字符串
长度限制:最小长度为 0。最大长度为 2048。
- QueryId
-
给定查询的唯一 ID。
类型:字符串
长度限制:长度下限为 1。长度上限为 64。
模式:
[a-zA-Z0-9]+ - QueryInsightsResponse
-
封装包含与所执行查询相关见解和指标的
QueryInsights。类型:QueryInsightsResponse 对象
- QueryStatus
-
有关查询状态的信息,包括进度和已扫描的字节数。
类型:QueryStatus 对象
- Rows
-
查询返回的结果集行数。
类型:Row 对象数组
错误
有关所有操作的常见错误的信息,请参阅常见错误。
- AccessDeniedException
-
您没有访问账户设置所需的权限。
HTTP 状态代码:400
- ConflictException
-
无法获取已取消查询的轮询结果。
HTTP 状态代码:400
- InternalServerException
-
处理请求时发生的内部服务器错误。
HTTP 状态代码:400
- InvalidEndpointException
-
请求的端点无效。
HTTP 状态代码:400
- QueryExecutionException
-
Timestream 未能成功运行查询。
HTTP 状态代码:400
- ThrottlingException
-
该请求因请求过多而受到限制。
HTTP 状态代码:400
- ValidationException
-
请求无效或格式错误。
HTTP 状态代码:400
另请参阅
有关在特定语言的 AWS SDK 中使用此 API 的更多信息,请参阅以下内容: