Blog GribStream
Interroger des données météorologiques avec MySQL : bêta publique de GribStream
Connectez vos clients et pilotes MySQL habituels à GribStream, utilisez votre token API comme mot de passe et recevez les résultats de vos requêtes météo sous forme de lignes MySQL.
GribStream propose désormais une connexion compatible avec MySQL en bêta publique. Tout langage, notebook, outil en ligne de commande ou application capable de se connecter à MySQL peut utiliser cette interface familière pour interroger les données météo de GribStream.
Connectez-vous à mysql.gribstream.com sur le port 3307. Utilisez votre token API GribStream comme mot de passe, choisissez un dataset tel que gfs comme base de données et recevez les résultats sous forme de lignes MySQL.
Il s'agit d'une bêta publique. Nous ne recommandons pas encore cette connexion pour des charges de production, et le SQL pris en charge pourra évoluer avec les retours d'utilisation. Vous pouvez signaler un problème ou nous envoyer vos commentaires, ou nous rejoindre sur Discord.
Une courte session MySQL
Vous n'avez ni serveur MySQL à installer ni données météo à importer. Avec le client MySQL en ligne de commande, il suffit de vous connecter ainsi :
mysql --host=mysql.gribstream.com \
--port=3307 \
--user=gribstream \
--password
Le client vous demande votre token API. Une fois connecté, les datasets apparaissent comme des bases de données. Les résultats ci-dessous ont été abrégés :
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| aifsoper |
| era5 |
| gfs |
| hrrr |
| ifsoper |
| ... |
+--------------------+
mysql> USE gfs;
Database changed
Chaque dataset possède une table timeseries, qui fournit la meilleure prévision disponible à chaque heure valide, et une table runs, qui permet d'interroger des runs précis du modèle. Les paramètres météorologiques disponibles apparaissent sous forme de colonnes. La consultation habituelle du schéma affiche les champs de temps et de localisation aux côtés des valeurs propres au dataset :
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 | |
| ... | ... | ... | ... | ... | ... |
+-----------------------+-------------+------+-----+---------+-------+
La sortie est abrégée. tmp_2_m_above_ground correspond à la température GFS à 2 mètres, exprimée dans l'unité native du modèle, le kelvin. Cette colonne numérique peut être sélectionnée, transformée, filtrée et renommée.
Voici la requête qui a produit le graphique en haut de cet article. Elle récupère 36 prévisions horaires pour cinq villes et convertit la température en degrés Celsius :
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;
La limite sur forecasted_at maintient le résultat sur le run du 7 août à 12 UTC utilisé pour le graphique. La requête complète renvoie 180 lignes ; voici celles de la première heure valide :
+---------------------+----------+------------+--------+
| 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 |
+---------------------+----------+------------+--------+
La connexion est en lecture seule. Il s'agit d'une interface ciblée pour interroger des données météo, et non d'une base de données relationnelle généraliste.
Pourquoi MySQL ?
MySQL dispose déjà de clients éprouvés pour la plupart des langages de programmation et des environnements de données. Les utilisateurs de GribStream bénéficient ainsi des pools de connexions, des requêtes préparées, des lignes typées, de la lecture progressive des résultats et de l'annulation des requêtes sans adopter une nouvelle bibliothèque cliente.
Le guide MySQL complet propose des exemples prêts à l'emploi pour la ligne de commande, Python, Java, C#, Go, Node.js, Rust, C et DuckDB, puis la référence complète du SQL pris en charge.
La connexion peut aussi servir avec les outils d'IA qui possèdent déjà un connecteur MySQL générique. Le fichier de skill GribStream pour MySQL, disponible au téléchargement, apprend à un agent à explorer le catalogue et à construire des requêtes météo bien délimitées.
Une interface SQL ciblée
La bêta couvre le SQL nécessaire pour choisir un dataset, une plage temporelle, des lieux, des lead times, des membres d'ensemble et des valeurs météorologiques. Vous pouvez calculer des valeurs dérivées, filtrer les lignes, employer des heures relatives et des fuseaux horaires nommés, puis trier des résultats délimités lors d'une exploration interactive.
L'objectif n'est pas de reproduire tout MySQL. Les requêtes météo ne prennent pas en charge les écritures, jointures, sous-requêtes, agrégations, regroupements ni SELECT *. Une syntaxe non prise en charge renvoie un message d'erreur clair, et le guide SQL présente les formes disponibles avec des exemples.
Téléchargements volumineux, streaming et quota
Pour les téléchargements volumineux, configurez le client afin de traiter les lignes à mesure qu'elles arrivent au lieu de conserver tout le résultat en mémoire. Le client MySQL en ligne de commande utilise --quick ; les autres clients parlent généralement de résultat non mis en mémoire tampon, streaming, itératif ou traité par blocs. Le guide renvoie vers la documentation correspondante de chaque client.
Pour les reprises historiques et les autres téléchargements de gros volumes, omettez ORDER BY et triez les données après réception. Le tri côté serveur est principalement destiné à l'exploration interactive et aux résultats délimités.
Le quota dépend des données météorologiques lues pour répondre à la requête, et pas seulement des lignes finalement renvoyées. Réduisez la plage temporelle, les coordonnées, les lead times, les membres et les champs météorologiques sélectionnés avant de vous reposer sur des filtres de valeurs ou sur LIMIT.
Essayez la bêta publique
- Créez gratuitement un token API GribStream, ou utilisez-en un existant.
- Ouvrez le guide de connexion MySQL et le manuel SQL.
- Connectez-vous à
mysql.gribstream.com:3307avec un client ou un pilote MySQL. - Commencez par une petite requête bien délimitée, puis élargissez-la selon vos besoins.
L'objectif est simple : si votre environnement sait déjà communiquer avec MySQL, il doit disposer d'un accès direct aux données météo de GribStream.
