作者雷米·特波
最后更新于 2022 年 4 月 15 日
警告
本文来自 Teradata 公司网站入门这是在 中发布的内容的删节版。我们不保证所发布内容的准确性、完整性、可靠性或最新性。具体内容请参考原文。
另外,如果您有任何要求或更正,请随时发表评论。
概述
时间序列是按时间顺序索引的一系列数据点。物联网和各种其他应用程序和设备不断生成和收集的数据。 Vantage 提供了多种功能来简化时间序列数据的分析。
先决条件
您需要访问您的 Vantage 实例。从 Vantage Express 到 Developer 到 DYI 到 Vantage as a Service 的所有 Vantage 版本都从 17.10 版本开始启用时间序列功能和 NOS。
如果您需要 Vantage 的新实例,您可以在 Google Cloud、Azure 和 AWS 云上免费部署 Vantage Express。
您还可以使用 VMware、VirtualBox 或 UTM 在本地计算机上运行 Vantage Express。
使用 NOS 从 AWS S3 导入数据集
示例数据集位于 S3 存储桶中,可以使用 NOS 从 Vantage 直接访问。由于数据是CSV格式的,我们先把它导入到antage中,做一个时间序列分析。
我们先来看看数据。下面的查询从 S3 存储桶中检索 10 行。
SELECT TOP 10 * FROM (
LOCATION='/s3/nos-demo-apj.s3.amazonaws.com/taxi/2014/11/data_2014-11-25.csv'
) AS d;
返回的结果将是:
| 地点 | 供应商 ID | 皮卡日期时间 | dropoff_datetime | 乘客数 | 旅行距离 | 皮卡经度 | 皮卡纬度 | rate_code | store_and_fwd_flag | dropoff_longitude | dropoff_latitude | 付款方式 | 票价金额 | 附加费 | mta_tax | 小费金额 | tolls_amount | 总金额 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| /S3/s3.amazonaws.com/nyc-tlc/csv_backup/yellow_tripdata_2013-11.csv | CMT | 25/11/2013 15:18 | 25/11/2013 15:33 | 1 | 1 | -73.992423 | 40.749517 | 1 | 唔 | -73.98816 | 40.746557 | CRD | 10 | 0 | 0.5 | 2.22 | 0 | 12.72 |
| /S3/s3.amazonaws.com/nyc-tlc/csv_backup/yellow_tripdata_2013-11.csv | CMT | 25/11/2013 5:34 | 25/11/2013 5:48 | 1 | 3.6 | -73.971555 | 40.794548 | 1 | 唔 | -73.975399 | 40.755404 | CRD | 14.5 | 0.5 | 0.5 | 1 | 0 | 16.5 |
| /S3/s3.amazonaws.com/nyc-tlc/csv_backup/yellow_tripdata_2013-11.csv | CMT | 25/11/2013 8:31 | 25/11/2013 8:55 | 1 | 5.9 | -73.94764 | 40.830465 | 1 | 唔 | -73.972323 | 40.76332 | CRD | 21 | 0 | 0.5 | 3 | 0 | 24.5 |
| /S3/s3.amazonaws.com/nyc-tlc/csv_backup/yellow_tripdata_2013-11.csv | CMT | 25/11/2013 7:00 | 25/11/2013 7:04 | 1 | 1.2 | -73.983357 | 40.767193 | 1 | 唔 | -73.978394 | 40.75558 | CRD | 5.5 | 0 | 0.5 | 1 | 0 | 7 |
| /S3/s3.amazonaws.com/nyc-tlc/csv_backup/yellow_tripdata_2013-11.csv | CMT | 25/11/2013 15:24 | 25/11/2013 15:30 | 1 | 0.5 | -73.982313 | 40.764827 | 1 | 唔 | -73.982129 | 40.758889 | CRD | 5.5 | 0 | 0.5 | 3 | 0 | 9 |
| /S3/s3.amazonaws.com/nyc-tlc/csv_backup/yellow_tripdata_2013-11.csv | CMT | 25/11/2013 15:53 | 25/11/2013 16:00 | 1 | 0.6 | -73.978104 | 40.752966 | 1 | 唔 | -73.985756 | 40.762685 | CRD | 6 | 1 | 0.5 | 1 | 0 | 8.5 |
| /S3/s3.amazonaws.com/nyc-tlc/csv_backup/yellow_tripdata_2013-11.csv | CMT | 25/11/2013 6:49 | 25/11/2013 7:04 | 1 | 3.8 | -73.976005 | 40.744481 | 1 | 唔 | -74.016063 | 40.717298 | CRD | 14 | 0 | 0.5 | 2.9 | 0 | 17.4 |
| /S3/s3.amazonaws.com/nyc-tlc/csv_backup/yellow_tripdata_2013-11.csv | CMT | 25/11/2013 21:20 | 25/11/2013 21:26 | 1 | 1.1 | -73.946371 | 40.775369 | 1 | 唔 | -73.95309 | 40.785103 | CRD | 6.5 | 0.5 | 0.5 | 1.5 | 0 | 9 |
| /S3/s3.amazonaws.com/nyc-tlc/csv_backup/yellow_tripdata_2013-11.csv | CMT | 25/11/2013 10:02 | 25/11/2013 10:17 | 1 | 2.2 | -73.952625 | 40.780962 | 1 | 唔 | -73.98163 | 40.777978 | CRD | 12 | 0 | 0.5 | 2 | 0 | 14.5 |
| /S3/s3.amazonaws.com/nyc-tlc/csv_backup/yellow_tripdata_2013-11.csv | CMT | 25/11/2013 9:43 | 25/11/2013 10:02 | 1 | 3.3 | -73.982013 | 40.762507 | 1 | 唔 | -74.006854 | 40.719582 | CRD | 15 | 0 | 0.5 | 2 | 0 | 17.5 |
提取完整数据并将其带入 Vantage 进行进一步分析。
CREATE TABLE trip
(
vendor_id varchar(10) character set latin NOT casespecific,
rate_code integer,
pickup_datetime timestamp(6),
dropoff_datetime timestamp(6),
passenger_count smallint,
trip_distance float,
pickup_longitude float,
pickup_latitude float,
dropoff_longitude float,
dropoff_latitude float
)
NO PRIMARY INDEX ;
INSERT INTO trip
SELECT TOP 200000 vendor_id ,
rate_code,
pickup_datetime,
dropoff_datetime ,
passenger_count,
trip_distance ,
pickup_longitude,
pickup_latitude ,
dropoff_longitude ,
dropoff_latitude FROM (
LOCATION='/s3/nos-demo-apj.s3.amazonaws.com/taxi/2014/11/data_2014-11-25.csv'
) AS d;
结果应如下所示。
200000 rows affected.
Vantage 从 S3 中提取数据并将其插入到我们创建的行程表中。
基本时间序列运算
现在您有了数据集,您可以使用 Vantage 的功能快速分析数据集。首先,找出 11 月每小时有多少乘客被接走。
SELECT TOP 10
$TD_TIMECODE_RANGE
,begin($TD_TIMECODE_RANGE) time_bucket_start
,sum(passenger_count) passenger_count
FROM trip
WHERE extract(month from pickup_datetime)=11
GROUP BY TIME(HOURS(1))
USING TIMECODE(pickup_datetime)
ORDER BY 1;
按时间分组请参阅此处了解详细说明。
它返回类似于以下的结果:
| TIMECODE_RANGE | time_bucket_start | 乘客数 |
|---|---|---|
| (2013-11-04 11:00:00.000000, 2013-11-04 12:00:00.000000) | 2013-11-04 11:00:00.000000-05:00 | 4 |
| (2013-11-04 12:00:00.000000, 2013-11-04 13:00:00.000000) | 2013-11-04 12:00:00.000000-05:00 | 2 |
| (2013-11-04 14:00:00.000000, 2013-11-04 15:00:00.000000) | 2013-11-04 14:00:00.000000-05:00 | 5 |
| (2013-11-04 15:00:00.000000, 2013-11-04 16:00:00.000000) | 2013-11-04 15:00:00.000000-05:00 | 2 |
| (2013-11-04 16:00:00.000000, 2013-11-04 17:00:00.000000) | 2013-11-04 16:00:00.000000-05:00 | 9 |
| (2013-11-04 17:00:00.000000, 2013-11-04 18:00:00.000000) | 2013-11-04 17:00:00.000000-05:00 | 11 |
| (2013-11-04 18:00:00.000000, 2013-11-04 19:00:00.000000) | 2013-11-04 18:00:00.000000-05:00 | 41 |
| (2013-11-04 19:00:00.000000, 2013-11-04 20:00:00.000000) | 2013-11-04 19:00:00.000000-05:00 | 2791 |
| (2013-11-04 20:00:00.000000, 2013-11-04 21:00:00.000000) | 2013-11-04 20:00:00.000000-05:00 | 15185 |
| (2013-11-04 21:00:00.000000, 2013-11-04 22:00:00.000000) | 2013-11-04 21:00:00.000000-05:00 | 27500 |
这是从时间数据中提取和聚合时间段的结果。尽管需要额外的代码和工作,但在没有时间序列特定功能的情况下也可以获得相同的结果。
但让我们更进一步,确定 11 月份有多少乘客被接走,以及供应商每 15 分钟的平均旅行时间。
SELECT TOP 10
$TD_TIMECODE_RANGE,
vendor_id,
SUM(passenger_count),
AVG((dropoff_datetime - pickup_datetime ) MINUTE (4)) AS avg_trip_time_in_mins
FROM trip
GROUP BY TIME (MINUTES(15) AND vendor_id)
USING TIMECODE(pickup_datetime)
WHERE EXTRACT(MONTH FROM pickup_datetime)=11
ORDER BY 1,2;
这个查询的结果是:
| TIMECODE_RANGE | 供应商 ID | 乘客数 | avg_trip_time_in_mins |
|---|---|---|---|
| (2013-11-04 11:00:00.000000, 2013-11-04 11:15:00.000000) | VTS | 1 | 16 |
| (2013-11-04 11:15:00.000000, 2013-11-04 11:30:00.000000) | VTS | 1 | 10 |
| (2013-11-04 11:45:00.000000, 2013-11-04 12:00:00.000000) | VTS | 2 | 6 |
| (2013-11-04 12:00:00.000000, 2013-11-04 12:15:00.000000) | VTS | 1 | 11 |
| (2013-11-04 12:15:00.000000, 2013-11-04 12:30:00.000000) | VTS | 1 | 57 |
| (2013-11-04 14:15:00.000000, 2013-11-04 14:30:00.000000) | VTS | 1 | 3 |
| (2013-11-04 14:30:00.000000, 2013-11-04 14:45:00.000000) | VTS | 2 | 19 |
| (2013-11-04 14:45:00.000000, 2013-11-04 15:00:00.000000) | VTS | 2 | 9 |
| (2013-11-04 15:15:00.000000, 2013-11-04 15:30:00.000000) | VTS | 1 | 11 |
| (2013-11-04 15:30:00.000000, 2013-11-04 15:45:00.000000) | VTS | 1 | 31 |
这就是 Vantage 时间序列功能的强大之处。只需更改 group by time 子句,您就可以找到供应商每 15 分钟的平均旅行时间,无需任何复杂繁琐的逻辑。
让我们看看基于此创建移动平均线是多么容易。首先创建一个像这样的视图:
REPLACE VIEW NYC_taxi_trip_ts as
SELECT
$TD_TIMECODE_RANGE time_bucket_per
,vendor_id
,sum(passenger_count) passenger_cnt
,avg(CAST((dropoff_datetime - pickup_datetime MINUTE(4) ) AS INTEGER)) avg_trip_time_in_mins
FROM trip
GROUP BY TIME (MINUTES(15) and vendor_id)
USING TIMECODE(pickup_datetime)
WHERE extract(month from pickup_datetime)=11
让我们计算一个 15 分钟时间序列的 2 小时移动平均线。您可以看到 2 小时是 8 乘以 15 分钟的周期。
SELECT * FROM MovingAverage (
ON NYC_taxi_trip_ts PARTITION BY vendor_id ORDER BY time_bucket_per
USING
MAvgType ('S')
WindowSize (8)
TargetColumns ('passenger_cnt')
) AS dt
WHERE begin(time_bucket_per)(date) = '2014-11-25'
ORDER BY vendor_id, time_bucket_per;
此查询的结果将如下所示:
| time_bucket_per | 供应商 ID | 乘客_cnt | avg_trip_time_in_mins | 乘客cnt_smavg |
|---|---|---|---|---|
| (2013-11-04 14:45:00.000000, 2013-11-04 15:00:00.000000) | VTS | 2 | 9 | 1.375 |
| (2013-11-04 15:15:00.000000, 2013-11-04 15:30:00.000000) | VTS | 1 | 11 | 1.375 |
| (2013-11-04 15:30:00.000000, 2013-11-04 15:45:00.000000) | VTS | 1 | 31 | 1.375 |
| (2013-11-04 16:15:00.000000, 2013-11-04 16:30:00.000000) | VTS | 2 | 16 | 1.375 |
| (2013-11-04 16:30:00.000000, 2013-11-04 16:45:00.000000) | VTS | 1 | 3 | 1.375 |
| (2013-11-04 16:45:00.000000, 2013-11-04 17:00:00.000000) | VTS | 6 | 38 | 2 |
| (2013-11-04 17:15:00.000000, 2013-11-04 17:30:00.000000) | VTS | 2 | 29.5 | 2.125 |
| (2013-11-04 17:45:00.000000, 2013-11-04 18:00:00.000000) | VTS | 9 | 20.33333333 | 3 |
| (2013-11-04 18:00:00.000000, 2013-11-04 18:15:00.000000) | VTS | 6 | 23.4 | 3.5 |
| (2013-11-04 18:15:00.000000, 2013-11-04 18:30:00.000000) | VTS | 4 | 15.66666667 | 3.875 |
| (2013-11-04 18:30:00.000000, 2013-11-04 18:45:00.000000) | VTS | 8 | 24.5 | 4.75 |
| (2013-11-04 18:45:00.000000, 2013-11-04 19:00:00.000000) | VTS | 23 | 38.33333333 | 7.375 |
| (2013-11-04 19:00:00.000000, 2013-11-04 19:15:00.000000) | VTS | 195 | 26.61538462 | 31.625 |
| (2013-11-04 19:15:00.000000, 2013-11-04 19:30:00.000000) | VTS | 774 | 13.70083102 | 127.625 |
| (2013-11-04 19:30:00.000000, 2013-11-04 19:45:00.000000) | VTS | 586 | 12.38095238 | 200.625 |
| (2013-11-04 19:45:00.000000, 2013-11-04 20:00:00.000000) | VTS | 1236 | 15.54742097 | 354 |
| (2013-11-04 20:00:00.000000, 2013-11-04 20:15:00.000000) | VTS | 3339 | 11.78947368 | 770.625 |
| (2013-11-04 20:15:00.000000, 2013-11-04 20:30:00.000000) | VTS | 3474 | 10.5603396 | 1204.375 |
| (2013-11-04 20:30:00.000000, 2013-11-04 20:45:00.000000) | VTS | 3260 | 12.26484323 | 1610.875 |
| (2013-11-04 20:45:00.000000, 2013-11-04 21:00:00.000000) | VTS | 5112 | 12.05590062 | 2247 |
(日文翻译注)
在没有时间序列功能的情况下实施此过程将是一个真正的麻烦。请考虑一下。
除了上面介绍的时间序列操作,Vantage 还提供了一个特殊的时间序列表,它带有一个主时间索引(PTI)。这是一个常规的 Vantage 表,其中定义了 PT 而不是主索引 (PI)。时间序列函数/操作不需要具有 PTI 的表,但 PTI 优化了时间序列数据的物理存储方式,因此与常规表相比可显着提高性能。
概括
在本快速入门中,您了解了如何使用 Vantage 的时间序列功能轻松分析时间序列数据集。
学到更多
・Teradata Vantage™ - 时间序列表和操作
・查询存储在对象存储中的数据
・Teradata Vantage™ - 原生对象存储入门指南
联系 Teradata Vantage
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308627936.html