Blog GribStream
Interroga i dati meteo con MySQL: beta pubblica di GribStream
Collega a GribStream comuni client e driver MySQL, usa il token API come password e ricevi i risultati delle query meteo come righe MySQL.
GribStream offre ora una connessione compatibile con MySQL in beta pubblica. Qualsiasi linguaggio, notebook, strumento da riga di comando o applicazione in grado di connettersi a MySQL può usare la stessa interfaccia familiare per consultare i dati meteo di GribStream.
Collegati a mysql.gribstream.com sulla porta 3307. Usa il token API GribStream come password, scegli un dataset come gfs come database e ricevi i risultati come righe MySQL.
Questa è una beta pubblica. Non consigliamo ancora questa connessione per carichi di lavoro di produzione e la sintassi SQL supportata potrebbe cambiare con l'esperienza d'uso reale. Puoi segnalare problemi o inviare commenti, oppure unirti a noi su Discord.
Una breve sessione MySQL
Non devi installare un server MySQL né importare dati meteo. Con il client MySQL da riga di comando basta collegarsi così:
mysql --host=mysql.gribstream.com \
--port=3307 \
--user=gribstream \
--password
Il client richiede il token API. Dopo la connessione, i dataset appaiono come database. I risultati riportati in questa sessione sono abbreviati:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| aifsoper |
| era5 |
| gfs |
| hrrr |
| ifsoper |
| ... |
+--------------------+
mysql> USE gfs;
Database changed
Ogni dataset contiene una tabella timeseries, che restituisce la migliore previsione disponibile per ciascun orario di validità, e una tabella runs, che consente di consultare run specifici del modello. I parametri meteorologici disponibili appaiono come colonne. La normale consultazione dello schema mostra i campi di tempo e posizione accanto ai valori specifici del 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 | |
| ... | ... | ... | ... | ... | ... |
+-----------------------+-------------+------+-----+---------+-------+
L'output è abbreviato. tmp_2_m_above_ground indica la temperatura GFS a 2 metri, espressa nell'unità nativa del modello, il kelvin. Questa colonna numerica può essere selezionata, trasformata, filtrata e rinominata.
Questa è la query che ha prodotto il grafico all'inizio dell'articolo. Recupera 36 previsioni orarie per cinque città e converte la temperatura in gradi 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;
Il limite su forecasted_at mantiene il risultato sul run del modello del 7 agosto alle 12 UTC usato per il grafico. La query completa restituisce 180 righe; queste sono quelle del primo orario di validità:
+---------------------+----------+------------+--------+
| 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 connessione è di sola lettura. È un'interfaccia mirata alle query sui dati meteo, non un database relazionale generico.
Perché MySQL?
MySQL dispone già di client maturi per la maggior parte dei linguaggi di programmazione e degli ambienti di analisi dati. Gli utenti di GribStream possono quindi usare pool di connessioni, query preparate, righe tipizzate, lettura incrementale dei risultati e annullamento delle query senza adottare un'altra libreria client.
La guida completa a MySQL offre esempi pronti all'uso per riga di comando, Python, Java, C#, Go, Node.js, Rust, C e DuckDB, seguiti dal riferimento completo della sintassi SQL supportata.
La connessione può essere utile anche con strumenti di IA che dispongono già di un connettore MySQL generico. La skill GribStream per MySQL, disponibile per il download, insegna a un agente come esplorare il catalogo e costruire query meteo ben delimitate.
Un'interfaccia SQL mirata
La beta copre la sintassi SQL necessaria per scegliere un dataset, un intervallo temporale, le località, i lead time, i membri dell'ensemble e i valori meteorologici. Puoi calcolare valori derivati, filtrare le righe, usare orari relativi e fusi orari con nome e ordinare risultati delimitati durante l'esplorazione interattiva.
L'obiettivo non è riprodurre tutto MySQL. Le query meteorologiche non supportano scritture, join, sottoquery, aggregazioni, raggruppamenti né SELECT *. La sintassi non supportata restituisce un errore chiaro e la guida SQL documenta le forme disponibili con esempi.
Download voluminosi, streaming e quota
Per i download voluminosi, configura il client in modo che elabori le righe man mano che arrivano invece di conservare in memoria l'intero risultato. Il client MySQL da riga di comando usa --quick; gli altri client in genere parlano di risultati senza buffer, in streaming, iterativi o a blocchi. La guida rimanda alla documentazione pertinente di ciascun client.
Per i backfill e gli altri download di grandi dimensioni, ometti ORDER BY e ordina i dati dopo averli ricevuti. L'ordinamento lato server è destinato soprattutto all'esplorazione interattiva e ai risultati delimitati.
Il consumo della quota dipende dai dati meteorologici letti per rispondere alla query, non solo dalle righe restituite alla fine. Restringi l'intervallo temporale, le coordinate, i lead time, i membri e i campi meteorologici selezionati prima di affidarti ai filtri sui valori o a LIMIT.
Prova la beta pubblica
- Crea gratuitamente un token API GribStream, oppure usa un token esistente.
- Apri la guida alla connessione MySQL e il manuale SQL.
- Collegati a
mysql.gribstream.com:3307con un client o driver MySQL. - Parti da una query piccola e ben delimitata, poi ampliala secondo necessità.
L'obiettivo è semplice: se il tuo ambiente comunica già con MySQL, deve poter accedere direttamente ai dati meteo di GribStream.
