本教程使用一个数据集,其中包含交易量排名前 100 的股票的逐秒交易数据,存储在一个名为 stocks_real_time
的超表中。它还包括一个单独的公司代码和公司名称表,存储在一个名为 company
的常规 PostgreSQL 表中。
Timescale 中的服务是一个云实例,其中包含您的数据库。每个服务包含一个名为 tsdb
的数据库。您可以使用 psql
命令行实用程序从本地系统连接到服务。如果您以前使用过 PostgreSQL,您可能已经安装了 psql
。 如果没有,请查看安装 psql 部分。
在 Timescale 门户中,单击
创建服务
。单击
下载速查表
下载一个 SQL 文件,其中包含您的新服务的登录详细信息。您也可以直接从此页面复制详细信息。复制密码后,单击页面底部的我已存储密码,转到服务概览
。当您的服务准备就绪时,它会在
服务概览
中显示绿色的运行中
标签。您还会收到一封电子邮件,确认您的服务已准备就绪。在您的本地系统上,在命令提示符下,使用您下载的 SQL 文件中的
服务 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=>
该数据集每晚更新,包含过去四周的数据,通常约为 800 万行数据。股票交易在周一至周五实时记录,通常在纽约证券交易所的正常交易时段(美国东部时间上午 9:30 - 下午 4:00)。
超表是 Timescale 的核心。超表使 Timescale 能够高效地处理时序数据。由于 Timescale 是 PostgreSQL,因此所有标准的 PostgreSQL 表、索引、存储过程和其他对象都可以与您的 Timescale 超表一起创建。这使得创建和使用 Timescale 表类似于标准 PostgreSQL。
使用
CREATE TABLE
创建一个标准的 PostgreSQL 表来存储实时股票交易数据CREATE TABLE stocks_real_time (time TIMESTAMPTZ NOT NULL,symbol TEXT NOT NULL,price DOUBLE PRECISION NULL,day_volume INT NULL);使用 Timescale 提供的
create_hypertable()
函数将标准表转换为按time
列分区的超表。您必须提供表名以及表中包含时间戳数据的列,用于分区SELECT create_hypertable('stocks_real_time', by_range('time'));创建一个索引,以支持对
symbol
和time
列的高效查询CREATE INDEX ix_symbol_time ON stocks_real_time (symbol, time DESC);
注意
当您创建超表时,它会自动在您作为 create_hypertable()
的第二个参数提供的时间列上进行分区。此外,Timescale 会自动在时间列上创建索引。但是,您通常也会根据其他列过滤您的时序数据。适当使用索引有助于您的查询获得更好的性能。
由于您经常按公司代码查询股票交易数据,因此您应该为其添加索引。包含时间列,因为时序数据通常查找特定时间段内的数据。
当您有其他关系数据来增强您的时序数据时,您可以像平常一样创建标准 PostgreSQL 表。对于此数据集,还有另一个名为 company
的数据表。
添加一个表来存储股票交易数据的公司名称和代码
CREATE TABLE company (symbol TEXT NOT NULL,name TEXT NOT NULL);您现在在您的 Timescale 数据库中拥有两个表。一个名为
stocks_real_time
的超表,和一个名为company
的普通 PostgreSQL 表。
本教程使用来自 Twelve Data 的实时股票交易数据,也称为交易报价数据。下面提供了直接下载链接。
要将数据导入到您创建的表中,您需要下载数据集并将数据复制到您的数据库。
下载
real_time_stock_data.zip
文件。该文件包含两个.csv
文件;一个包含公司信息,另一个包含过去一个月的实时股票交易数据。 下载在一个新的终端窗口中,运行此命令来解压缩
.csv
文件unzip real_time_stock_data.zip在
psql
提示符下,使用COPY
命令将数据传输到您的 Timescale 实例。如果.csv
文件不在您的当前目录中,请在这些命令中指定文件路径\COPY stocks_real_time from './tutorial_sample_tick.csv' DELIMITER ',' CSV HEADER;\COPY company from './tutorial_sample_company.csv' DELIMITER ',' CSV HEADER;由于有数百万行数据,因此
COPY
过程可能需要几分钟,具体取决于您的互联网连接和本地客户端资源。
本教程中的查询适用于在 Grafana 中可视化。如果您想可视化查询结果,请将您的 Grafana 帐户连接到能源消耗数据集。
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页。