GribStreamブログ

MySQLで気象データを取得:GribStream公開ベータ

GribStream | 公開 |
gfs

一般的なMySQLクライアントやドライバからGribStreamへ接続し、APIトークンをパスワードとして使って、気象データをMySQLの行形式で取得できます。

GribStreamの1つのMySQLクエリで取得した、シアトル、デンバー、シカゴ、ニューヨーク、マイアミの36時間GFS気温予報の折れ線グラフ
1つのMySQLクエリで、2026年8月7日12 UTCのモデル実行から、5都市のGFS地上2 m気温を180行取得しました。グラフにはクエリ結果の元データを使用しています。

GribStreamは、MySQL互換接続の公開ベータを開始しました。MySQLに接続できる言語、ノートブック、コマンドラインツール、アプリケーションなら、使い慣れた同じインターフェースからGribStreamの気象データを問い合わせできます。

mysql.gribstream.comのポート3307へ接続します。GribStreamのAPIトークンをパスワードとして使い、gfsなどのデータセットをデータベースとして選ぶと、MySQLの行形式で結果を受け取れます。

これは公開ベータです。現時点では本番ワークロードへの利用を推奨しておらず、実際の利用から学ぶ中で対応するSQLが変わる可能性があります。問題の報告やご意見はメールでお寄せいただくか、Discordにご参加ください。

短いMySQLセッション

MySQLサーバーのインストールも、気象データのインポートも必要ありません。MySQLコマンドラインクライアントでは、次のコマンドで接続できます。

mysql --host=mysql.gribstream.com \
  --port=3307 \
  --user=gribstream \
  --password

クライアントからAPIトークンの入力を求められます。接続すると、データセットがデータベースとして表示されます。この先の出力は一部を省略しています。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| aifsoper           |
| era5               |
| gfs                |
| hrrr               |
| ifsoper            |
| ...                |
+--------------------+

mysql> USE gfs;
Database changed

各データセットには、各有効時刻に利用できる最良の予報を返すtimeseriesテーブルと、特定のモデル実行を問い合わせるrunsテーブルがあります。利用できる気象パラメータは列として表示されます。通常のスキーマ確認で、時刻や位置のフィールドと、そのデータセット固有の値をまとめて確認できます。

mysql> SHOW COLUMNS FROM gfs.timeseries;
+-----------------------+-------------+------+-----+---------+-------+
| Field                 | Type        | Null | Key | Default | Extra |
+-----------------------+-------------+------+-----+---------+-------+
| forecasted_at         | datetime(6) | YES  |     | NULL    |       |
| forecasted_time       | datetime(6) | YES  |     | NULL    |       |
| lat                   | double      | YES  |     | NULL    |       |
| lon                   | double      | YES  |     | NULL    |       |
| lead_time             | double      | YES  |     | NULL    |       |
| ...                   | ...         | ...  | ... | ...     | ...   |
| tmp_2_m_above_ground  | double      | YES  |     | NULL    |       |
| ...                   | ...         | ...  | ... | ...     | ...   |
+-----------------------+-------------+------+-----+---------+-------+

ここでは出力を省略しています。tmp_2_m_above_groundはGFSの地上2 m気温で、モデル本来の単位であるケルビンで返されます。数値列と同じように、選択、計算、絞り込み、別名の指定ができます。

次は、この記事の冒頭にあるグラフを作成したクエリです。5都市について36時間分の毎時予報を取得し、気温を摂氏へ変換します。

SELECT forecasted_time, name,
       tmp_2_m_above_ground AS temp_k,
       ROUND(temp_k - 273.15, 2) AS temp_c
FROM gfs.timeseries
WHERE forecasted_time BETWEEN '2026-08-07 19:00:00'
                          AND '2026-08-09 06:00:00'
  AND forecasted_at <= '2026-08-07 12:00:00'
  AND (lat, lon, name) IN (
        (47.6062, -122.3321, 'Seattle'),
        (39.7392, -104.9903, 'Denver'),
        (41.8781,  -87.6298, 'Chicago'),
        (40.7128,  -74.0060, 'New York'),
        (25.7617,  -80.1918, 'Miami')
      )
  AND lead_time BETWEEN '0h' AND '48h'
ORDER BY forecasted_time, name;

forecasted_atの上限を設定することで、グラフに使った8月7日12 UTCのモデル実行が選ばれます。クエリ全体では180行が返ります。次は最初の有効時刻の結果です。

+---------------------+----------+------------+--------+
| forecasted_time     | name     | temp_k     | temp_c |
+---------------------+----------+------------+--------+
| 2026-08-07 19:00:00 | Chicago  | 303.708350 |  30.56 |
| 2026-08-07 19:00:00 | Denver   | 307.208350 |  34.06 |
| 2026-08-07 19:00:00 | Miami    | 303.908350 |  30.76 |
| 2026-08-07 19:00:00 | New York | 307.208350 |  34.06 |
| 2026-08-07 19:00:00 | Seattle  | 301.708350 |  28.56 |
+---------------------+----------+------------+--------+

接続は読み取り専用です。一般的なリレーショナルデータベースではなく、気象データの問い合わせに特化したインターフェースです。

MySQLを使う理由

MySQLには、ほとんどのプログラミング言語やデータ処理環境向けに、実績のあるクライアントがあります。そのためGribStreamの利用者は、新しいクライアントライブラリを導入せずに、接続プール、プリペアドステートメント、型付きの行、結果の逐次読み取り、クエリのキャンセルを利用できます。

MySQL完全ガイドには、コマンドライン、Python、Java、C#、Go、Node.js、Rust、C、DuckDBですぐに実行できる例と、対応するSQLの完全なリファレンスがあります。

この接続は、汎用MySQLコネクタを備えたAIツールからも利用できます。ダウンロード可能なGribStream MySQLスキルファイルを使うと、エージェントがカタログを探索し、範囲を明確に限定した気象クエリを組み立てられます。

気象データに絞ったSQLインターフェース

このベータでは、データセット、期間、場所、lead time、アンサンブルメンバー、気象値を選ぶためのSQLに対応しています。派生値の計算、行の絞り込み、相対時刻や名前付きタイムゾーンの使用、対話的な探索での範囲を限定した結果の並べ替えもできます。

MySQLのすべての機能を再現するものではありません。気象クエリでは、書き込み、結合、サブクエリ、集約、グループ化、SELECT *には対応していません。未対応の構文には明確なエラーを返します。SQLガイドでは、対応する書き方を例とともに説明しています。

大規模取得、ストリーミング、利用枠

大量のデータを取得する場合は、結果全体をメモリにためず、行が届くたびに処理するようクライアントを設定してください。MySQLコマンドラインクライアントでは--quickを使います。他のクライアントでは、バッファリングしない結果、ストリーミング、反復処理、チャンク処理などと呼ばれます。ガイドから各クライアントの該当ドキュメントへ移動できます。

過去データの一括取得やその他の大規模なダウンロードでは、ORDER BYを省き、受信後に並べ替えてください。サーバー側の並べ替えは、主に対話的な探索や範囲を限定した結果向けです。

利用枠の消費量は、最終的に返された行だけでなく、クエリに答えるために読み取った気象データに基づきます。値のフィルターやLIMITに頼る前に、期間、座標、lead time、メンバー、選択する気象フィールドを絞ってください。

公開ベータを試す

  1. GribStreamの無料APIトークンを作成するか、既存のトークンを使います。
  2. MySQL接続ガイドとSQLマニュアルを開きます。
  3. MySQLクライアントまたはドライバからmysql.gribstream.com:3307へ接続します。
  4. 小さく範囲を限定したクエリから始め、必要に応じて広げます。

目標はシンプルです。すでにMySQLを扱える環境なら、GribStreamの気象データへ直接アクセスできるようにします。