

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

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

# 将基表上的查询与计划查询结果的查询进行比较
<a name="scheduledqueries-example4-clickstream"></a>

在此 Timestream 查询示例中，我们使用以下架构、示例查询和输出，对比基表查询与基于计划查询结果的衍生表查询。通过精心策划的计划查询，您可以获得行数更少且具备其他特征的派生表，从而实现比直接查询原始基表更快的查询速度。

有关描述此场景的视频，请参阅[在 Amazon Timestream 中使用计划查询提高查询性能并降低成本](https://youtu.be/x8AgLhAydzY)。 LiveAnalytics

对于本示例，您可以使用以下场景：
+ **区域**：us-east-1
+ **基表**：`"clickstream"."shopping"`
+ **派生表**：`"clickstream"."aggregate"`

## 基表
<a name="scheduledqueries-example4-clickstream-base-table"></a>

以下描述基表的架构。


| 列 | Type |  LiveAnalytics 属性类型的时间流 | 
| --- | --- | --- | 
|  渠道  |  varchar  |  MULTI  | 
|  描述  |  varchar  |  MULTI  | 
|  事件  |  varchar  |  维度  | 
|  ip\$1address  |  varchar  |  维度  | 
|  measure\$1name  |  varchar  |  MEASURE\$1NAME  | 
|  产品  |  varchar  |  MULTI  | 
|  product\$1id  |  varchar  |  MULTI  | 
|  quantity  |  double  |  MULTI  | 
|  query  |  varchar  |  MULTI  | 
|  session\$1id  |  varchar  |  维度  | 
|  user\$1group  |  varchar  |  维度  | 
|  user\$1id  |  varchar  |  维度  | 

以下描述基表的度量。*基表*是指在 Timestream 中运行计划查询的表。
+ **measure\$1name**：`metrics`
+ **数据**：多
+ **尺寸**：

  ```
  [ ( user_group, varchar ),( user_id, varchar ),( session_id, varchar ),( ip_address, varchar ),( event, varchar ) ]
  ```

## 对基表进行查询
<a name="scheduledqueries-example4-clickstream-base-table-query"></a>

以下是临时查询，用于在给定时间范围内按 5 分钟聚合时间收集计数。

```
SELECT BIN(time, 5m) as time, 
channel, 
product_id,
SUM(quantity) as product_quantity 
FROM "clickstream"."shopping" 
WHERE BIN(time, 5m) BETWEEN '2023-05-11 10:10:00.000000000' AND '2023-05-11 10:30:00.000000000'
AND channel = 'Social media'
and product_id = '431412'
GROUP BY BIN(time, 5m),channel,product_id
```

输出：

```
duration:1.745 sec
Bytes scanned: 29.89 MB
Query Id: AEBQEANMHG7MHHBHCKJ3BSOE3QUGIDBGWCCP5I6J6YUW5CVJZ2M3JCJ27QRMM7A
Row count:5
```

## 计划查询
<a name="scheduledqueries-example4-clickstream-scheduled-query"></a>

以下是每 5 分钟运行一次的计划查询。

```
SELECT BIN(time, 5m) as time, channel as measure_name, product_id, product, 
SUM(quantity) as product_quantity 
FROM "clickstream"."shopping" 
WHERE time BETWEEN BIN(@scheduled_runtime, 5m) - 10m AND BIN(@scheduled_runtime, 5m) - 5m 
AND channel = 'Social media' 
GROUP BY BIN(time, 5m), channel, product_id, product
```

## 对派生表进行查询
<a name="scheduledqueries-example4-clickstream-derived-table"></a>

以下是对派生表的临时查询。*派生表*是指包含计划查询结果的 Timestream 表。

```
SELECT time, measure_name, product_id,product_quantity 
FROM "clickstream"."aggregate"
WHERE time BETWEEN '2023-05-11 10:10:00.000000000' AND '2023-05-11 10:30:00.000000000'
AND measure_name = 'Social media'
and product_id = '431412'
```

输出：

```
duration: 0.2960 sec
Bytes scanned: 235.00 B
QueryID: AEBQEANMHHAAQU4FFTT6CFM6UYXTL4SMLZV22MFP4KV2Z7IRVOPLOMLDD6BR33Q
Row count: 5
```

## 比较
<a name="scheduledqueries-example4-clickstream-comparison"></a>

以下是对基表查询结果与派生表查询结果的比较。对通过计划查询完成聚合结果的派生表执行相同查询时，其完成速度更快且扫描字节数更少。

这些结果表明，使用计划查询聚合数据以加快查询速度具有重要价值。


|  | 对基表进行查询 | 对派生表进行查询 | 
| --- | --- | --- | 
|  Duration  |  1.745 秒  |  0.2960 秒  | 
|  扫描的字节数  |  29.89 MB  |  235 个字节  | 
|  行数  |  5  |  5  | 