NOAA 全球历史气候网络
这个数据集包含了过去120年的气象测量数据。每一行代表一个时间点和一个气象站的测量值。
更准确地说,根据该数据的来源:
GHCN-Daily是一个包含全球陆地日常观察的数据集。它包含来自全球陆地气象站的基于站点的测量,其中约三分之二的数据仅用于降水测量(Menne等,2012)。GHCN-Daily是来自多个来源的气候记录的复合体,这些记录经过合并并接受了共同的质量保证审查(Durre等,2010)。该档案包括以下气象要素:
- 日最高气温
- 日最低气温
- 观察时的气温
- 降水量(即雨水、融化的雪)
- 降雪量
- 雪深
- 其他可用的要素
以下部分简要概述了将此数据集引入ClickHouse所涉及的步骤。如果您有兴趣详细了解每个步骤,我们建议您查看我们标题为"探索庞大的现实世界数据集:ClickHouse中的100多年的天气记录"的博客文章。
下载数据
预准备数据
更具体地说,已删除未通过Noaa的任何质量保证检查的行。数据也已从每行一个测量值重构为每个气象站ID和日期一行,即。
这种结构更容易查询,并确保结果表的稀疏性降低。最后,数据还通过添加经纬度进行了丰富。
该数据可在以下S3位置获取。您可以将数据下载到本地文件系统(并使用ClickHouse客户端插入)或直接插入到ClickHouse中(请参阅从S3插入)。
下载方式:
原始数据
以下详细说明了下载和转换原始数据以准备加载到ClickHouse中的步骤。
下载
要下载原始数据:
采样数据
总结格式文档:
总结格式文档及其列:
- 11个字符的站点识别代码。它本身编码了一些有用的信息。
- YEAR/MONTH/DAY = 8个字符的日期,格式为YYYYMMDD(例如19860529 = 1986年5月29日)。
- ELEMENT = 4个字符元素类型指示符。实际上是测量类型。虽然有许多测量可用,但我们选择以下:
- PRCP - 降水量(十分之一毫米)
- SNOW - 降雪量(毫米)
- SNWD - 雪深(毫米)
- TMAX - 最高气温(十分之一度C)
- TAVG - 平均气温(十分之一度C)
- TMIN - 最低气温(十分之一度C)
- 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插入
有关如何加速这一过程,请参见我们关于优化大数据加载的博客文章。
示例查询
史上最高气温
与Furnace Creek的记录一致,截止2023年。
最佳滑雪胜地
使用滑雪胜地列表及其各自的位置,我们将这些与过去5年中降雪量最多的前1000个气象站进行联接。通过geoDistance对该联接进行排序,并将结果限制在距离小于20公里的情况下,我们选择每个滑雪胜地的首个结果,并按降雪总量进行排序。请注意我们还限制滑雪胜地的海拔在1800米以上,作为良好滑雪条件的广泛指标。
感谢
我们要感谢全球历史气候网络在准备、清理和分发此数据方面所做的努力。我们对此表示感谢。
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. [指示小数点后的子集,例如版本3.25]。 NOAA国家环境信息中心。 http://doi.org/10.7289/V5D21VHZ [17/08/2020]