作者雷米·特波
最后更新于 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 行。

SelectfromS3.sql
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 进行进一步分析。

创建和插入.sql
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;

结果应如下所示。

结果.sql
200000 rows affected.

Vantage 从 S3 中提取数据并将其插入到我们创建的行程表中。

基本时间序列运算

现在您有了数据集,您可以使用 Vantage 的功能快速分析数据集。首先,找出 11 月每小时有多少乘客被接走。

SelectCountby1hour.sql
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 分钟的平均旅行时间。

SelectCount 和 Average.sql
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 分钟的平均旅行时间,无需任何复杂繁琐的逻辑。
让我们看看基于此创建移动平均线是多么容易。首先创建一个像这样的视图:

替换视图.sql
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 分钟的周期。

SelectMovingAverage.sql
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

联系 Teradata Vantage


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308627936.html

相关文章:

  • 2021-08-20
  • 2021-11-28
  • 2021-11-28
  • 2021-09-01
猜你喜欢
  • 2021-12-09
  • 2021-08-19
  • 2021-04-19
  • 2022-01-24
  • 2021-04-19
  • 2021-05-16
  • 2021-11-21
相关资源
相似解决方案