跳到主要内容
跳到主要内容

NOAA全球历史气候网络

此数据集包含过去120年的天气测量。每一行都是某一时刻和某个站点的测量。

更准确地说,根据这些数据的来源:

GHCN-Daily是一个包含全球陆地区域每日观测数据的数据集。它包含来自全球地面站点的基于站点的测量,其中约三分之二的数据仅用于降水测量(Menne et al., 2012)。GHCN-Daily是来自众多来源的气候记录的综合体,这些记录经过合并并接受了一套常见的质量保证审查(Durre et al., 2010)。档案包括以下气象要素:

  • 每日最高温度
  • 每日最低温度
  • 观测时的温度
  • 降水量(即雨水、融化雪)
  • 降雪量
  • 雪深
  • 其他可用要素

下面的部分简要概述了将此数据集导入ClickHouse所涉及的步骤。如果您有兴趣详细阅读每个步骤,建议查看我们博客的文章 "探索大规模的现实世界数据集:ClickHouse中的100年气象记录"

下载数据

  • 适用于ClickHouse的预准备版本,该数据经过清洗、重构和丰富。该数据覆盖1900年至2022年。
  • 下载原始数据并转换为ClickHouse所需的格式。希望添加自己列的用户可以探索此方法。

预准备数据

更具体地说,已删除未通过Noaa的任何质量保证检查的行。数据的结构也从每行一个测量重构为每个站点ID和日期一行,即:

这样查询更简单,并确保结果表的稀疏程度降低。最后,数据还经过了纬度和经度的丰富。

此数据可在以下S3位置获取。您可以将数据下载到本地文件系统(并使用ClickHouse客户端插入)或直接插入到ClickHouse中(请参见从S3插入)。

要下载:

原始数据

以下详细说明下载和转换原始数据的步骤,以准备加载到ClickHouse中。

下载

要下载原始数据:

数据采样

总结格式文档:

总结格式文档和列的顺序:

  • 11个字符的站点识别码。它本身编码了一些有用的信息
  • 年/月/日 = 8个字符的日期,格式为YYYYMMDD(例如19860529 = 1986年5月29日)
  • ELEMENT = 4个字符表示要素类型的指示符。实际上是测量类型。虽然可用的测量项很多,但我们选择以下内容:
    • PRCP - 降水(十分之一毫米)
    • SNOW - 降雪(毫米)
    • SNWD - 雪深(毫米)
    • TMAX - 最高温度(十分之一摄氏度)
    • TAVG - 平均温度(十分之一摄氏度)
    • TMIN - 最低温度(十分之一摄氏度)
    • PSUN - 每日可能阳光的百分比(百分比)
    • AWND - 平均每日风速(十分米每秒)
    • WSFG - 峰值阵风风速(十分米每秒)
    • WT** = 天气类型,其中**定义天气类型。这里是天气类型的完整列表。
  • DATA VALUE = 5个字符的数据值,表示ELEMENT的值即测量值。
  • M-FLAG = 1个字符的测量标志。这有10个可能的值。这些值中的一些表明数据准确性存疑。我们接受将此设置为"P"的数据-标识为缺失且假设为零,因为这只与PRCP、SNOW和SNWD的测量相关。
  • Q-FLAG是测量质量标志,有14个可能值。我们只对空值感兴趣,即没有未通过任何质量保证检查。
  • S-FLAG是观测的来源标志。对我们的分析没有用处,因此被忽略。
  • OBS-TIME = 4个字符的观测时间,以小时-分钟格式(即0700 = 上午7:00)。在较老的数据中通常不存在。我们在此目的上忽略它。

每一行测量将导致ClickHouse中稀疏的表结构。我们应该转换为每个时间和站点一行,测量作为列。首先,我们限制数据集到那些没有问题的行,即qFlag等于空字符串的行。

清洗数据

使用ClickHouse local我们可以过滤代表感兴趣测量并符合我们的质量要求的行:

拥有超过26亿行,由于涉及解析所有文件,这不是一个快速的查询。在我们的8核机器上,大约需要160秒。

透视数据

虽然每行测量结构可以与ClickHouse一起使用,但这会不必要地使未来查询复杂。理想情况下,我们需要每个站点ID和日期一行,其中每个测量类型和相关值是列,即:

使用ClickHouse local和一个简单的GROUP BY,我们可以将数据重构为这种结构。为了限制内存开销,我们一次处理一个文件。

此查询生成一个单一的50GB文件noaa.csv

丰富数据

数据除了站点ID外没有地点的指示,站点ID包括前缀国家代码。理想情况下,每个站点都应与其关联的纬度和经度。为此,NOAA提供了每个站点的详细信息作为单独的ghcnd-stations.txt文件。该文件具有多个列,其中五个对我们未来的分析有用:id、纬度、经度、高程和名称。

此查询运行几分钟并生成一个6.4 GB的文件noaa_enriched.parquet

创建表

在ClickHouse中创建一个MergeTree表(从ClickHouse客户端)。

插入到ClickHouse

从本地文件插入

可以通过以下方式从本地文件插入数据(来自ClickHouse客户端):

其中<path>代表磁盘上本地文件的完整路径。

请参见此处以加速此加载。

从S3插入

有关如何加速此操作,请参见我们博客文章调优大数据加载

示例查询

有史以来最高温度

感谢

我们要感谢全球历史气候网络为准备、清洗和分发这些数据所做的努力。我们对此表示感谢。

Menne, M.J., I. Durre, B. Korzeniewski, S. McNeal, K. Thomas, X. Yin, S. Anthony, R. Ray, R.S. Vose, B.E.Gleason, 和 T.G. Houston, 2012: 全球历史气候网络 - 每日 (GHCN-Daily),版本3。[指示使用的子集, 例如.Version 3.25]。NOAA国家环境信息中心。 http://doi.org/10.7289/V5D21VHZ [2020年8月17日]