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

NOAA Global Historical Climatology Network

このデータセットには、過去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/10 mm)
    • SNOW - 降雪量(mm)
    • SNWD - 雪の深さ(mm)
    • TMAX - 最高気温(1/10 ℃)
    • TAVG - 平均気温(1/10 ℃)
    • TMIN - 最低気温(1/10 ℃)
    • PSUN - 日次可能日照率(パーセント)
    • AWND - 日次平均風速(1/10秒メートル)
    • WSFG - ピーク突風風速(1/10秒メートル)
    • WT** = 天候タイプ **は天候タイプを示します。天候タイプの完全なリストはこちら。
  • DATA VALUE = ELEMENT用の5文字データ値すなわち測定値の値。
  • M-FLAG = 測定フラグ(1文字)。これは10の可能な値があります。これらの値の一部は、データの精度に疑問があることを示します。この値が「P」に設定されているデータを受け入れます。これは、PRCP、SNOW、SNWD測定にのみ関連します。
  • Q-FLAGは測定品質フラグで、14の可能な値があります。我々は、空の値データすなわち、品質保証チェックで失敗しなかったもののデータにだけ興味があります。
  • S-FLAGは観測のソースフラグです。我々の分析には役立たないため無視します。
  • OBS-TIME = 観測時間を表す4文字(時分)形式のデータ(例:0700 =午前7時)。通常、古いデータには存在しません。我々の目的には無視します。

行ごとの測定では、ClickHouseでスパースなテーブル構造が生じることになります。時刻と観測所ごとの行に変換し、測定をカラムとして持つようにする必要があります。まず、データセットを問題のない行に制限します。つまり、qFlagが空の文字列である行に制限します。

データのクリーニング

ClickHouse localを使用して、興味のある測定を表す行をフィルタリングし、品質要件を通過させることができます:

26億以上の行があるため、すべてのファイルを解析する必要があるため、このクエリは遅いものです。我々の8コアのマシンでは、約160秒かかります。

データのピボット

行ごとの測定構造をClickHouseに使用することはできますが、将来のクエリを不必要に複雑にします。理想的には、各測定タイプと関連する値をカラムにする、ステーションIDと日付ごとの行が必要です。つまり、

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

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

データの強化

データには、観測所ID以外には位置を示すものがありません。このIDには、国コードのプレフィックスが含まれています。理想的には、各観測所には緯度と経度が関連付けられている必要があります。この目的のために、NOAAは各観測所の詳細を、別のghcnd-stations.txtとして便利に提供しています。このファイルには、我々の将来の分析に役立つ5つのカラムがあります:id、緯度、経度、高度、名前。

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

テーブルの作成

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

ClickHouseへの挿入

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

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

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

このロードを高速化する方法は、こちらを参照してください。

S3からの挿入

これを高速化する方法については、大規模データのロードの調整に関するブログ投稿を参照してください。

サンプルクエリ

過去最高気温

2023年時点でのFurnace Creekによる記録された記録と一貫性があります。

最高のスキーリゾート

スキーリゾートのリストとそれぞれの場所を利用して、過去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. [十進法の後に使用されたサブセットを示します,例如: Version 3.25] NOAA National Centers for Environmental Information. http://doi.org/10.7289/V5D21VHZ [2020年8月17日]