本教程使用纽约黄色出租车网络的历史数据,数据位于名为 rides
的超表中。它还包括单独的支付类型和费率表,分别位于名为 payment_types
和 rates
的常规 PostgreSQL 表中。
Timescale 中的服务是一个云实例,其中包含您的数据库。每个服务包含一个名为 tsdb
的数据库。您可以使用 psql
命令行实用程序从本地系统连接到服务。如果您以前使用过 PostgreSQL,您可能已经安装了 psql
。如果未安装,请查看 安装 psql 部分。
在 Timescale 门户 中,单击
Create service
。单击
Download the cheatsheet
下载包含新服务登录详细信息的 SQL 文件。您也可以直接从此页面复制详细信息。复制密码后,单击页面底部的I stored my password, go to service overview
。当您的服务准备就绪时,
Service Overview
中会显示绿色的Running
标签。您还会收到一封电子邮件,确认您的服务已准备就绪。在您的本地系统上,在命令提示符下,使用您下载的 SQL 文件中的
Service URL
连接到服务。当系统提示时,输入密码psql -x "<SERVICE_URL>"Password for user tsdbadmin:如果连接成功,您将看到类似这样的消息,后跟
psql
提示符psql (13.3, server 12.8 (Ubuntu 12.8-1.pgdg21.04+1))SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)Type "help" for help.tsdb=>
本教程使用纽约黄色出租车网络的历史数据,该数据由纽约市出租车和豪华轿车委员会 NYC TLC 提供。
超表是 Timescale 的核心。超表使 Timescale 能够高效地处理时序数据。由于 Timescale 是 PostgreSQL,因此所有标准的 PostgreSQL 表、索引、存储过程和其他对象都可以与您的 Timescale 超表一起创建。这使得创建和使用 Timescale 表类似于标准的 PostgreSQL。
使用
CREATE TABLE
创建一个标准的 PostgreSQL 表来存储出租车行程数据CREATE TABLE "rides"(vendor_id TEXT,pickup_datetime TIMESTAMP WITHOUT TIME ZONE NOT NULL,dropoff_datetime TIMESTAMP WITHOUT TIME ZONE NOT NULL,passenger_count NUMERIC,trip_distance NUMERIC,pickup_longitude NUMERIC,pickup_latitude NUMERIC,rate_code INTEGER,dropoff_longitude NUMERIC,dropoff_latitude NUMERIC,payment_type INTEGER,fare_amount NUMERIC,extra NUMERIC,mta_tax NUMERIC,tip_amount NUMERIC,tolls_amount NUMERIC,improvement_surcharge NUMERIC,total_amount NUMERIC);使用 Timescale 提供的
create_hypertable()
函数将标准表转换为在time
列上分区的超表。您必须提供表名以及表中用于时间戳数据进行分区的列SELECT create_hypertable('rides', by_range('pickup_datetime'), create_default_indexes=>FALSE);SELECT add_dimension('rides', by_hash('payment_type', 2));注意
by_range
和by_hash
维度构建器是 TimescaleDB 2.13 的新增功能。创建一个索引以支持按供应商、费率代码和乘客人数进行高效查询
CREATE INDEX ON rides (vendor_id, pickup_datetime DESC);CREATE INDEX ON rides (rate_code, pickup_datetime DESC);CREATE INDEX ON rides (passenger_count, pickup_datetime DESC);
当您有其他增强时序数据的关系数据时,您可以像往常一样创建标准的 PostgreSQL 表。对于此数据集,还有另外两个数据表,分别名为 payment_types
和 rates
。
添加一个表来存储支付类型数据
CREATE TABLE IF NOT EXISTS "payment_types"(payment_type INTEGER,description TEXT);INSERT INTO payment_types(payment_type, description) VALUES(1, 'credit card'),(2, 'cash'),(3, 'no charge'),(4, 'dispute'),(5, 'unknown'),(6, 'voided trip');添加一个表来存储费率数据
CREATE TABLE IF NOT EXISTS "rates"(rate_code INTEGER,description TEXT);INSERT INTO rates(rate_code, description) VALUES(1, 'standard rate'),(2, 'JFK'),(3, 'Newark'),(4, 'Nassau or Westchester'),(5, 'negotiated fare'),(6, 'group ride');
您可以通过在 psql
命令行中运行 \dt
命令来确认脚本是否成功。您应该看到这个
List of relationsSchema | Name | Type | Owner--------+---------------+-------+----------public | payment_types | table | tsdbadminpublic | rates | table | tsdbadminpublic | rides | table | tsdbadmin(3 rows)
设置好数据库后,您可以将出租车行程数据加载到 rides
超表中。
重要提示
这是一个大型数据集,因此可能需要很长时间,具体取决于您的网络连接。
下载数据集
使用文件管理器解压缩下载的数据集,并记下
nyc_data_rides.csv
文件的路径。在 psql 提示符下,将数据从
nyc_data_rides.csv
文件复制到您的超表中。如果该文件不在当前工作目录中,请确保指向正确的路径\COPY rides FROM nyc_data_rides.csv CSV;
您可以使用以下命令检查数据是否已成功复制
SELECT * FROM rides LIMIT 5;
您应该得到五个如下所示的记录
-[ RECORD 1 ]---------+--------------------vendor_id | 1pickup_datetime | 2016-01-01 00:00:01dropoff_datetime | 2016-01-01 00:11:55passenger_count | 1trip_distance | 1.20pickup_longitude | -73.979423522949219pickup_latitude | 40.744613647460938rate_code | 1dropoff_longitude | -73.992034912109375dropoff_latitude | 40.753944396972656payment_type | 2fare_amount | 9extra | 0.5mta_tax | 0.5tip_amount | 0tolls_amount | 0improvement_surcharge | 0.3total_amount | 10.3
本教程中的查询适用于在 Grafana 中可视化。如果您想可视化查询结果,请将您的 Grafana 帐户连接到 NYC 出租车数据集。
集成之前
创建一个目标 Timescale Cloud 服务
您需要 您的连接详细信息 才能按照此页面中的步骤操作。此过程也适用于 自托管 TimescaleDB。
- 安装 自管理 Grafana 或注册 Grafana Cloud。
要将服务中的数据连接到 Grafana
登录到 Grafana
在浏览器中,登录到以下任一地址
- 自托管 Grafana:在
http://localhost:3000/
。默认凭据为admin
,admin
。 - Grafana Cloud:使用您创建帐户时设置的 URL 和凭据。
- 自托管 Grafana:在
将您的服务添加为数据源
- 打开
Connections
>Data sources
,然后单击Add new data source
。 - 从列表中选择
PostgreSQL
。 - 配置连接
Host URL
、Username
、Password
和Database
:使用您的 连接详细信息 进行配置。Database name
:提供数据集的名称。TLS/SSL Mode
:选择require
。PostgreSQL options
:启用TimescaleDB
。- 保留所有其他字段的默认设置。
- 打开
单击
Save & test
Grafana 检查您的详细信息是否设置正确。
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页。