GribStreamブログ
MySQLで気象データを取得:GribStream公開ベータ
一般的なMySQLクライアントやドライバからGribStreamへ接続し、APIトークンをパスワードとして使って、気象データをMySQLの行形式で取得できます。
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、メンバー、選択する気象フィールドを絞ってください。
公開ベータを試す
- GribStreamの無料APIトークンを作成するか、既存のトークンを使います。
- MySQL接続ガイドとSQLマニュアルを開きます。
- MySQLクライアントまたはドライバから
mysql.gribstream.com:3307へ接続します。 - 小さく範囲を限定したクエリから始め、必要に応じて広げます。
目標はシンプルです。すでにMySQLを扱える環境なら、GribStreamの気象データへ直接アクセスできるようにします。
