Amazon Web Services ブログ

Amazon Athena と Amazon QuickSight を使用して、200 年以上にわたる世界の気候データを視覚化する

気候変動は、私たちの生活の質に深く影響を及ぼし続けています。その結果、持続可能性に関する調査が増えています。公共部門と民間部門の両方の研究者が、記録された気候履歴を研究し、気候予測モデルを使用することによって将来に備えています。

こうした概念を説明するのを助けるために、この投稿では Global Historical Climatology Network Daily (GHCN-D) を紹介します。 このレジストリは、地球規模の気候変動研究コミュニティによって使用されています。

また、この投稿では、アマゾン ウェブ サービス (AWS) のサービスが気候変動調査のためにこのデータへのアクセスをどのように改善するかについても段階的に示します。データサイエンティストやエンジニアはこれまで、このデータを照会するために高性能コンピュータ上の何百ものノードにアクセスしなければなりませんでした。現在は、AWS でいくつかの手順を使用するだけで、同じデータを入手できるようになりました。

背景

地球規模の気候分析は、研究者が地球の自然資本と生態系資源に対する気候変動の影響を評価するうえで不可欠です。この活動には質の高い気候データセットが必要ですが、規模と複雑さのためにそのデータセットを使用するのはとても困難です。研究成果に自信を持つために、研究者は扱っている気候データセットの起源について自信を持っていなければなりません。たとえば、研究者は次のような質問に答えようとしているかもしれません。「特定の食料生産地の気候が、食料安全保障に影響を与えるように変化しましたか?」 研究者は簡単に信頼できる選ばれたデータセットを照会することができなければなりません。

米国の国立環境情報センター (NCEI) は、世界中の気象観測所による観測に基づいた気候データのデータセットを管理しています。それが、Global Historical Climatology Network Daily (GHCN-D) であり、地上局からの毎日の天気概要をまとめた中央リポジトリです。毎日更新される何百万もの品質保証された観測結果で構成されています。

記録される最も一般的なパラメータは、毎日の気温、降雨量、降雪量です。これらは干ばつ、洪水、異常気象のリスクを評価するうえで有益なパラメータです。

課題

NCEI は、GHCN_D データを年ごとに整理した CSV 形式で、FTP サーバーを介して利用可能にしています。データを年ごとに整理すると、アーカイブの完全なコピーには 255 を超えるファイルが必要になります (アーカイブの最初の年は 1763 年です)。従来、研究者がこのデータセットで作業をしたい場合、まずダウンロードしてローカルに取り組まなければなりませんでした。確実に最新のデータを分析に使用したい場合、毎日このダウンロードを繰り返さなければなりません。

研究者にとって、このデータから洞察を引き出すことが困難である場合があります。技術的スキル、コンピューティングリソース、主題に関する専門知識が必要であるため、データに完全に取り組むことができなければならないのです。

新しい効率的なアプローチ

AWS と NOAA ビッグデータプロジェクトのコラボレーションによって、GHCN_D データセットの毎日のスナップショットが AWS で利用可能になりました。このデータは、Amazon S3 バケットを介して一般にアクセス可能です。詳細については、AWS の Registry of Open Data を参照してください。

この方法でデータを利用できるようにすると、いくつかの利点があります。

  • データは、世界中のユーザーに公開されます。ユーザーは、データをダウンロードする必要がなくなります。誰もが同じ、信頼できるコピーを使って作業することができます。
  • 洞察を得るまでの時間が短縮されます。AWS のサービスを利用することで、研究者はすぐに分析を開始できます。
  • 研究費が削減されます。分析が終了するとすぐに、研究者はリソースを解放することができます。

このブログ投稿では、Amazon S3Amazon AthenaAWS GlueAmazon QuickSight を使用して、このデータセットからどれだけ早く洞察を導き出すことができるかを示すワークフローについて説明します。

この投稿で紹介するワークフローは、次の一般的な手順に従います。

  • NOAA バケットからデータファイルを抽出し、そのデータをテーブルとして利用できるようにします。
  • SQLを使用して、テーブルに含まれているデータを照会します。
  • クエリからテーブルを作成し、それらのテーブルをプライベート Amazon S3 バケットに保存することで、分析を高速化する方法を示します。
  • データを視覚化して洞察を得ます。

GHCN_D データセットの概要

GHCN-D は、世界各地の気象観測所からの毎日の天気概要が含まれている品質保証されたデータセットです。次のような性質があります。

  • データは、さまざまな国内および国際的なネットワークを通じて、気象観測を提供する約 30 の情報源から統合されています。
  • 米国の包括的なデータセットと世界の多くの地域を網羅しています。
  • このデータセットには多くの種類の毎日の気象観測データがありますが、大部分は最高気温、最低気温、降水量、降雪量、積雪量です。こうした観測結果には、以下があります。
    • 35,000 以上の気温観測所。
    • 100,000 以上の降水量観測所。
    • 50,000 以上の降雪または積雪観測所。
  • 各データの情報元、単一レコードに使用される用語はデータセットに含まれています。各データには、品質管理フラグが関連付けられています。
  • データセットは、毎日更新されます。歴史的な資料は、毎週再処理されます。

下の図を見ると、ここ数十年でデータ量がどのように増えているかがわかります。

図 1: 1763 年~ 2018 年。1763 年には、観測所は 1,000 未満でした。2017 年には、3,400 万を超える観測所があります。

Amazon S3 のデータの整理

前述のように、GHCN-D データセットは Amazon S3 バケットを介してアクセスできます。データセットの詳細は、AWS の Registry of Open Data (RODA) にあります。RODA にあるデータセットのランディングページに、データセットの包括的な readme ファイルへのリンクがあります。この readme には、すべてのルックアップテーブルと変数定義が含まれています。

このセクションでは、このデータセットを使い始めるのに必要な情報を示します。

データはテキスト、またはカンマ区切り値 (CSV) 形式であり、noaa-ghcn-pds という Amazon S3 バケットに含まれています。

noaa-ghcn-pds バケットには仮想フォルダがあり、次のように構成されています。

  • noaa-ghcn-pds。これは、2 つのサブディレクトリといくつかの便利なファイルを含むバケットのルートです。この演習では、ghcnd-station.txt ファイルだけを使用します。このファイルには、GHCN_D データセットのデータを作成した観測所に関する情報が含まれています。ghcnd-stations.txt ファイルをダウンロードする必要があります。
  • noaa-ghcn-pds/csv/。この仮想フォルダには、1763 年から現在までのすべての観測結果が .csv ファイル (毎年 1 ファイル) にまとめられています。この演習では、このデータを単一のテーブルにまとめます。

またこの演習の目的のために、ghcnd-stations.txt からのデータと noaa-ghcn-pds/csv/ に含まれるデータが抽出され、2 つの別々のテーブルに追加されます。これらのテーブルが、分析の基礎となります。

テーブルには、以下のラベルが付けられます。

  • tblallyears。このテーブルには、1763 年から現在までの毎年の .csv ファイルに保存されているすべてのレコードが含まれています。
  • tblghcnd_stations。このテーブルには、106,430 を超える気象観測所の情報が含まれています。

興味深い点: 1763 年の .csv ファイルには、1 つの気象観測所のデータが含まれています。その気象観測所は、イタリアのミラノの中心にありました。

ツール

この演習で一般的なワークフローを実装するために、次のツールを使用しています。

  • Amazon Simple Storage Service (Amazon S3) は、分析のためにデータをステージングします。GHCN_D データセットは、Amazon S3 にあるバケットに保存されています。また、クエリから作成された新しいテーブルを保存するためにプライベートバケットを使用します。
  • Amazon Athena は、標準 SQL を使用して Amazon S3 に保存されているデータを照会します。
  • AWS Glue は、データが保存されている Amazon S3 バケットからデータを抽出して、Athena にロードします。AWS Glue は、完全マネージド型の抽出、変換、ロード (ETL) サービスです。
  • AWS Glue データカタログは、Athena で照会するデータをカタログ化します。
  • Amazon QuickSight は、視覚化を行い、アドホック分析を実行して、データセットから洞察を得ます。Athena のクエリとテーブルは、Amazon QuickSight から直接読み取ることができます。また、Amazon QuickSight は Athena のテーブルに対してクエリを実行することもできます。

この投稿で概説したプロセスを実装するには、AWS アカウントが必要です。AWS アカウントの作成に関する詳細については、AWS の使用開始を参照してください。また、バージニア北部 AWS リージョンにプライベート Amazon S3 バケットを作成することも必要です。詳細については、バケットの作成を参照してください。

バケットを作成するときは、以下の空のディレクトリを含める必要があります。

  1. [your_bucket_name]/stations_raw/
  2. [your_bucket_name]/ghcnblog/
  3. [your_bucket_name]/ghcnblog/stations/
  4. [your_bucket_name]/ghcnblog/allyears/
  5. [your_bucket_name]/ghcnblog/1836usa/

以下は、さまざまな AWS のサービスがこのワークフローでどのようにやり取りするかの概要です。

注意

AWS のサービスは、同じ AWS リージョンにあります。Amazon S3 バケットの 1 つは、GHCN_D データを保存する既存のバケットです。もう 1 つの Amazon S3 バケットは、テーブルを保存するために使用するバケットです。

図 2: AWS のサービスが連携してこのワークフローを構成する仕組み。

ワークフロー

これでツールとデータが揃ったので、以下を行う準備が整いました。

  1. 毎年の .csv ファイルを抽出し、Amazon Athena のテーブルに追加する。
  2. 観測所のテキストファイルを抽出して、Amazon Athena の別のテーブルに追加する。

毎年の .csv ファイルを抽出し、Amazon Athena のテーブルに追加する

毎日の気象観測の完全なセットは、.csv 形式のファイルで Amazon S3 バケットの 1 つのフォルダに年ごとにまとめられています。データへのパスは、s3://noaa-ghcn-pds/csv/ です。

それぞれのファイルには、「1763.csv」で始まり現在まで 1 年ずつ進行する年によって名前が付けられています。

AWS コンソールで、AWS Athena をクリックします。これで、Athena のメインダッシュボードに移動します。ここから、AWS Glue データカタログをクリックします。これで、AWS Glue に移動します。

AWS Glue で、左側にある [Tables] セクションを選択します。次に、[Add table] ドロップダウンメニューで、[Add table manually] を選択します。以下の情報を追加するための一連のフォームが表示されます。

  • テーブルのプロパティの設定:
    • 新しいテーブルに、たとえば「tblallyears」などの名前を付けます。
    • データベースを作成し、「ghcnblog」と名前を付けます。

データベースが、Athena ダッシュボードに表示されます。

  • データストアの追加:
    • [Specified path in another account] オプションを選択して、次のパスをテキストボックスに入力します: s3://noaa-ghcn-pds/csv/
  • データ形式の選択:
    • [CSV] を選択し、区切り文字としてカンマを選択します。
  • スキーマの定義:
    • 以下の列を文字列変数として追加します。
      • id
      • year_date
      • element
      • data_value
      • m_flag
      • q_flag
      • s_flag
      • obs_time

変数とデータ構造の詳細については、readme ファイルを参照してください。

  • [OK]、そして [Finish] と選択します。

これで Athena ダッシュボードに戻り、作成したデータベースを選択します。テーブルが、左側のテーブルリストに表示されます。ここで、テーブルの右側にある [Preview table] オプションを選択するとデータをプレビューできます。

CTAS を使用してクエリを高速化する

最後の手順として、CREATE TABLE AS SELECT (CTAS) という SQL ステートメントを使用してテーブルを作成します。テーブルはプライベート Amazon S3 バケットに保存します。

この手順で、クエリを劇的に高速化できます。その理由は、このプロセスではデータを一度抽出し、抽出したデータをプライベート Amazon S3 バケットのカラムナ形式 (Parquet) で保存するからです。

速度の向上を説明するために、2 つの例を示します。

  • 個別の ID、つまり固有の気象観測所をすべてカウントするクエリが、約 55 秒かけて約 88 GB のデータをスキャンします。
  • 変換されたデータでの同じクエリは約 13 秒で、約 5 GB のデータをスキャンします。

この最終手順用のテーブルを作成する:

  1. Athena コンソールを開きます。
  2. ダッシュボードで、[New query] を選択してから、以下の例に示すようにクエリを入力します。バケット名など、必ず実際の状況に適した情報を入力してください。
    図 3: データを Parquet に変換して、S3 バケットに保存するテーブルデータを作成するクエリ。
  3. データ形式が、Parquet であることを確認します。
  4. テーブルに tblallyears_qa と名前を付けます。
  5. このパスをプライベート Amazon S3 バケットの次のフォルダに追加します: [your_bucket_name]/ghcnblog/allyearsqa/。your_bucket_name の部分は、実際のバケット名に置き換えます。

新しいテーブルがデータベースに表示され、Athena ダッシュボードの左側に一覧表示されます。これが、この後作業を行うテーブルです。

観測所のテキストファイルを抽出して、Amazon Athena の別のテーブルに追加する

観測所のテキストファイルには、場所、国、IDなど、気象観測所に関する情報が含まれています。このデータは、毎年の観測結果とは別のファイルに保存されています。このデータをインポートして、気象観測の地理的な広がりを調べる必要があります。このファイルの取り扱いは少し複雑ですが、このデータを Athena にインポートする手順は、すでに行った手順と似ています。

このデータを Athena にインポートする方法:

  1. ghcnd-stations テキストファイルをダウンロードします。
  2. スプレッドシートプログラムでファイルを開き、固定幅区切りデータインポート機能を使用します。列の固定幅については、readme ファイルghcnd-station.txt ファイルの形式というセクションに説明があります。
  3. データを正常にインポートできたら、スプレッドシートを .csv テキストファイルとして保存します。
  4. 新しい .csv ファイルを [your_bucket_name]/stations_raw/ にコピーします。your_bucket_name の部分は、実際のバケット名に置き換えます。
  5. この新しい .csv ファイルを使用して、この投稿で前述したように、AWS Glue のテーブルの追加プロセスの手順に従います。
    • 以下のフィールド名を使用します。
      • id
      • latitude
      • longitude
      • elevation
      • state
      • name
      • gsn_flag
      • hcn_flag
      • wmo_id
    • テーブルに、tblghcnd_stations と名前を付けます。
  6. テーブルを作成した後、この投稿で前述したように、このテーブルに対して CREATE TABLE AS SELECT (CTAS) の手順を実行します。
    • 新しいテーブルに、tblghcnd_stations_qa と名前を付けます。
    • 新しいテーブルを、[your_bucket_name]/ghcnblog/stations/ に保存します。your_bucket_name の部分は、実際のバケット名に置き換えます。

これで、GHCN_D の 2 つの最も重要なデータセットは Athena にあります。

次のセクションでは、これらのテーブルに対してクエリを実行し、Amazon QuickSight を使用して結果を視覚化します。

探索的データ分析と視覚化

2 つのテーブルが作成されたので、洞察を得るためにクエリを実行して視覚化する準備が整いました。

探索的データ分析

Athena クエリウィンドウで、次のクエリを実行してデータセットのサイズを把握します。

クエリ #1: 1763 年以降の観測値の総数:

図 4: 観測値の総数を求めるクエリ。これは、2018 年の秋に行った結果です。データセットは時間の経過とともに増え続けています。

クエリ #2: 1763 年以降の観測所の数:

図 5: 1763 年以降に観測を行った観測所の総数を求めるクエリ。活動を停止した観測所が含まれています。

地球の平均気象パラメータ

次の図は、1763 年以降の地球の平均最高気温 (摂氏)、平均最低気温 (摂氏)、平均降水量 (mm) を計算するクエリを示しています。

このクエリでは、data_value を文字列型変数から実数型変数に変換する必要があります。気温と降水量の測定値はそれぞれの単位の 10 分の 1 なので、10 で割る必要もあります。これらの詳細とエレメントコード (TMIB、TMAX、PRCP) については、readme ファイルを参照してください。

図 6.地球の鼓動を取得するために世界平均を照会する。

このデータセットに対してこのような単純なクエリを実行し、結果が正しいことを承認できれば便利です。

前のクエリでは、1763 年以降、世界中の気象観測所が時間的にも地理的にも均等に広がっていると仮定しています。実際には、気象観測所の数と広がりは時間とともに変化しています。

経時的な気象観測所の数の増加を視覚化する

次のクエリは、Amazon QuickSight を使用して、1763 年以降の各年の気象観測所の数を視覚化したものです。

注意: これらの手順を完了するには、Amazon QuickSight にサインアップする必要があります。サインアップのプロセス中に、Amazon QuickSight データソースへのアクセス許可を管理するよう求められます。この時点で、以下の手順の手順 3 を使用して、Amazon S3 バケットと Athena へのアクセスを許可します。

手順は次の通りです。

  1. Amazon QuickSight コンソールを開きます。
  2. ダッシュボードの右側で、[Manage QuickSight] を選択します。
  3. [Account Setting]、そして [Manage QuickSight permissions] と選択します。Athena にアクセスし、新しいテーブルを含む Amazon S3 バケットを読み取るためのアクセス許可を Amazon QuickSight に付与します。
  4. 画面の左上にあるロゴを選択して Amazon QuickSight に戻ります。
  5. Amazon QuickSight ダッシュボードで、[New analysis]、そして [New data set] と選択します。
  6. [Create a Data Set] タイルで、[Athena] を選択します。データソースに ghcnblog などの名前を付け、[Create data source] を選択します。
  7. 次の例に示すように、カスタム SQL を追加するオプションを選択してから SQL を追加します。

図 7: カスタム SQL クエリを追加する場所。

  1. [Confirm query] を選択します。
  2. [Directly query your data] を選択します。
  3. [Visualize] を選択します。
  4. グラフを作成するために、折れ線グラフを選択します。X 軸に year を、[Value] フィールドに number_of_stations を追加します。オプションは、視覚化ダッシュボードの左側に表示されます。

図 8.時間の経過に伴う、GHCN_D が使用している世界の気象観測所の数。

結果のグラフは、世界中の気象観測所の数と広がりが時間の経過とともに変化していることを示しています。

米国における観測の発展

1836 年が、データセットで最初に米国の観測所が登場した年です。米国での観測の発展についての洞察を得るために、メインのデータソース (tblallyears_qa) から米国のデータのサブセットを抽出しました。このデータセットは、1836 年から 2016 年までの 30 年ごとの年間データを特徴としています。

このクエリは、大きなデータセットを生成します。パフォーマンスを向上させるには、前述の手順を使用して、クエリを Amazon S3 バケットに保存されたテーブルとして保存します。

次の図に、これを 1 つの手順で実行するクエリを示します。

図 9: クエリからテーブルを作成し、それを Parquet 形式でユーザー指定の Amazon S3 バケットに保存する SQL。

このテーブルは Amazon Athena ダッシュボードに tbl1836every30thyear として表示され、それが分析の基礎となります。

Amazon QuickSight コンソールで、次の SQL を使用して新しいデータセットを生成します。

図 10: Amazon QuickSight で米国のデータを表示するためのデータセットを作成する SQL。

  1. [Confirm query] を選択します。
  2. [Directly query your data] を選択します。
  3. [Visualize] を選択します。

これで、視覚化ダッシュボードに戻ります。このダッシュボードで、[Points on a map] の視覚化を選択し、次のようにフィールドを設定します。

  • Geospatial: 州
  • Size: 観測所の数、カウントで集計。
  • Color: 年

結果は、1836 年から 2016 年にかけて 30 年ごとに、GHCN_D が使用する気象観測所の増加を示す、次のような米国の地図になるはずです。1836 年には、1 つの気象観測所だけがありました。2016 年までに、数千になりました。

図 11: 米国における観測所の数の増加。

興味深いことに、一部の州では、1956 年に 1986 年よりも多くの観測所がありました。これは次の図にも示されています。図のデータは、前のデータセットから得られたものです。

図 12: このヒートマップは、経時的な州ごとの観測所の数を示しています。これは、30 年ごとのスナップショットです。

もっとデータを見る

現在、GHN_D データのデータレイクがあります。私たちが組み立てたツールを使うことによって、自由にこのデータを試すことができます。洞察を得るために、この巨大なデータセットに対してクエリと視覚化を構築することが可能になりました。

次の図は、作成したヒートマップを示しています。時間の経過に伴う、米国の州の平均最低気温を示しています。前と同様に、30 年間のスナップショットを見ています。つまり、30 年ごとに年平均を取っています。

図 13: このヒートマップは、それぞれの州の最低気温を経時的に示しています。1836 年から始まる、30 年ごとの年間平均です。

まとめ

さまざまな見出しは気候変動と持続可能性の話で一杯であり、研究と分析はこれまで以上に重要になっています。

GHCN_D データセットを使いこなすために必要な技術的スキルのレベルを AWS のサービスがどのように低下させたかを研究者、アナリスト、サイエンティストに示しました。

この GHCN-D は AWS で利用可能です。詳細は、AWS の Registry of Open Data をご覧ください。このデータは、気候変動や天候の影響を研究している研究者が利用できます。

このブログ投稿では、Amazon Athena、AWS Glue、Amazon S3 を使用して研究者がこの重要なデータを取得および分析するために利用できる一般的なワークフローと、Amazon QuickSight を使用して洞察を視覚化する方法を示しました。

このデータを利用可能にすることで、アマゾンは GHCN_D での作業で従来必要とされていた大きな負担を取り除き、新しい研究や発見の機会を広げました。

 


著者について

Joe Flasher は、アマゾン ウェブ サービスのオープン地理空間データの責任者であり、組織がクラウドでの分析でデータを最も効果的に利用できるように支援しています。Joe は過去 10 年間、寄稿者および管理者の両方として、地理空間データおよびオープンソースのプロジェクトに取り組んできました。彼はランドサットアドバイザリーグループのメンバーであり、GIS ソフトウェアの構築からスペースシャトルの飛行まで、さまざまなプロジェクトに取り組んできました。Joe のバックグラウンドは天体物理学ですが、どうぞ星座についての質問はしないでください。

 

 

Conor Delaney 博士は、環境データ科学者です。