メインコンテンツまでスキップ
メインコンテンツまでスキップ

NOAAグローバル歴史気候ネットワーク

このデータセットには、過去120年間の天候測定値が含まれています。各行は、特定の時点および観測所に対する測定値です。

より正確には、このデータの起源に従って:

GHCN-Dailyは、世界の陸地における日次観測を含むデータセットです。これは、世界中の陸上観測所からの測定に基づいており、その約3分の2は降水量の測定のみに関係しています(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文字の観測所識別コード。これ自体は有用な情報をエンコードしています。
  • YEAR/MONTH/DAY = YYYYMMDD形式の8文字の日付(例:19860529 = 1986年5月29日)
  • ELEMENT = 要素タイプの4文字指標。実質的に測定タイプです。多くの測定値がありますが、以下を選択します:
    • PRCP - 降水量(十分の1ミリメートル)
    • SNOW - 降雪量(ミリメートル)
    • SNWD - 雪の深さ(ミリメートル)
    • TMAX - 最大気温(十分の1度)
    • TAVG - 平均気温(十分の1度)
    • TMIN - 最小気温(十分の1度)
    • PSUN - 日次の可能な日差しの割合(パーセント)
    • AWND - 平均日次風速(十分の1メートル毎秒)
    • WSFG - 最大突風風速(十分の1メートル毎秒)
    • WT** = 天候タイプ、ここで**は天候タイプを定義します。天候タイプの完全なリストはこちらです。
  • DATA VALUE = ELEMENTの5文字データ値、すなわち測定値の値。
  • M-FLAG = 1文字の測定フラグ。これは10の可能な値があります。これらの値のいくつかは、データの正確性に疑問を呈します。"P"に設定されたデータを受け入れます - 雨量がゼロと見なされていることが確認されていますが、これはPRCP、SNOW、およびSNWDの測定にのみ関連しています。
  • Q-FLAGは測定の品質フラグで、14の可能な値があります。私たちは、空の値のデータのみを関心に持ちます。すなわち、これは品質保証チェックに失敗していません。
  • S-FLAGは観測のソースフラグです。私たちの分析には役立たず無視します。
  • OBS-TIME = 時刻観測の4文字(時:分)形式の時間(すなわち、0700 =午前7時)。これは、古いデータには通常存在しません。私たちの目的には無視します。

1行ごとの測定は、ClickHouseでスパースなテーブル構造を生成します。私たちは時間と駅ごとの行に変換し、測定値をカラムにしなければなりません。まず、qFlagが空の文字列に等しい行のみを制限します。

データのクリーニング

ClickHouse localを使用すると、関心のある測定を表す行をフィルタリングし、品質要件を満たすことができます:

26億行を超えるため、これはすべてのファイルを解析するため、迅速なクエリではありません。私たちの8コアマシンでは、約160秒かかります。

データのピボット

1行ごとの構造は、ClickHouseで使用できますが、今後のクエリを不必要に複雑にすることになります。理想的には、各観測所IDと日付ごとの行が必要で、それぞれの測定タイプと関連値がカラムとして存在する形です。すなわち、

ClickHouse localを使用し、シンプルな GROUP BY を用いることで、データをこの構造に再ピボットすることができます。メモリオーバーヘッドを制限するため、1ファイルずつ行います。

このクエリは単一の50GBファイル noaa.csv を生成します。

データの強化

データは観測所ID以外のロケーション情報を持っていませんが、観測所IDには国コードのプレフィックスが含まれています。理想的には、各観測所に関連する緯度と経度が必要です。これを実現するために、NOAAは各観測所の詳細を別のghcnd-stations.txtとして便利に提供しています。このファイルには、私たちの将来の分析に有用な5つのカラム(ID、緯度、経度、標高、名前)が含まれています。

このクエリは数分かかり、6.4 GBのファイル noaa_enriched.parquet を生成します。

テーブル作成

ClickHouse内でMergeTreeテーブルを作成します(ClickHouseクライアントから)。

ClickHouseへのデータの挿入

ローカルファイルからの挿入

データは次のようにローカルファイルから挿入できます(ClickHouseクライアントから):

ここで、<path>はディスクのローカルファイルへのフルパスを表します。

こちらを参照して、この読み込みを加速する方法を確認してください。

S3からの挿入

この読み込みを加速する方法は、大規模なデータ読み込みのチューニングについてのブログ記事を参照してください。

サンプルクエリ

これまでの最高気温

Furnace Creekにおける記録された最高気温と一致しているのは、安心です(2023年時点)。

最高のスキーリゾート

アメリカ合衆国のスキーリゾートのリストと、それぞれの場所を使用して、過去5年間において最も降雪があった上位1000の気象観測所と結合し、geoDistanceでソートし、距離が20km未満の結果に制限します。リゾートごとの上位結果を選択し、総降雪量でソートします。なお、スキー条件の良い指標として、1800m以上のリゾートに制限しています。

クレジット

私たちは、データの準備、クリーニング、配布におけるグローバル歴史気候ネットワークの努力を認識したいと思います。あなたの努力に感謝します。

Menne, M.J., I. Durre, B. Korzeniewski, S. McNeal, K. Thomas, X. Yin, S. Anthony, R. Ray, R.S. Vose, B.E.Gleason, and T.G. Houston, 2012: Global Historical Climatology Network - Daily (GHCN-Daily), Version 3. [小数点以下のサブセットを指定してください。例:バージョン3.25]。NOAA国立環境情報センター。http://doi.org/10.7289/V5D21VHZ [17/08/2020]