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日]