Blog de GribStream
Consulta datos meteorológicos con MySQL: beta pública de GribStream
Conecta clientes y drivers MySQL habituales a GribStream, usa tu token de API como contraseña y recibe los resultados de tus consultas meteorológicas como filas MySQL.
GribStream ya ofrece una conexión compatible con MySQL en beta pública. Si un lenguaje, notebook, herramienta de línea de comandos o aplicación puede conectarse a MySQL, puede usar esa misma interfaz para consultar datos meteorológicos de GribStream.
Conéctate a mysql.gribstream.com por el puerto 3307. Usa tu token de API de GribStream como contraseña, elige un dataset como gfs como base de datos y recibe los resultados como filas MySQL.
Esta es una beta pública. Todavía no recomendamos esta conexión para cargas de trabajo de producción y el SQL compatible puede cambiar a medida que aprendamos del uso real. Puedes informar de problemas o enviar comentarios, o unirte a nuestro Discord.
Una breve sesión de MySQL
No hay que instalar un servidor MySQL ni importar datos meteorológicos. Con el cliente de línea de comandos de MySQL, basta con conectarse así:
mysql --host=mysql.gribstream.com \
--port=3307 \
--user=gribstream \
--password
El cliente solicita tu token de API. Una vez conectado, los datasets aparecen como bases de datos. Hemos abreviado los resultados de esta sesión:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| aifsoper |
| era5 |
| gfs |
| hrrr |
| ifsoper |
| ... |
+--------------------+
mysql> USE gfs;
Database changed
Cada dataset tiene una tabla timeseries, que devuelve el mejor pronóstico disponible para cada tiempo válido, y una tabla runs, que permite consultar ejecuciones concretas del modelo. Los parámetros meteorológicos disponibles aparecen como columnas. La consulta habitual del esquema muestra los campos de tiempo y ubicación junto a los valores específicos 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 | |
| ... | ... | ... | ... | ... | ... |
+-----------------------+-------------+------+-----+---------+-------+
La salida está abreviada. tmp_2_m_above_ground es la temperatura GFS a 2 metros, en kelvin, la unidad nativa del modelo. Se puede seleccionar, transformar, filtrar y renombrar como cualquier columna numérica.
Esta es la consulta con la que se creó el gráfico del inicio. Obtiene 36 pronósticos horarios para cinco ciudades y convierte la temperatura a grados 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;
El límite de forecasted_at mantiene el resultado en la ejecución del modelo del 7 de agosto a las 12 UTC que se usó para el gráfico. La consulta completa devuelve 180 filas; estas son las del primer tiempo válido:
+---------------------+----------+------------+--------+
| 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 conexión es de solo lectura. Es una interfaz especializada para consultar datos meteorológicos, no una base de datos relacional de propósito general.
¿Por qué MySQL?
MySQL ya cuenta con clientes maduros para la mayoría de los lenguajes y entornos de datos. Así, los usuarios de GribStream pueden aprovechar pools de conexiones, consultas preparadas, filas tipadas, lectura incremental de resultados y cancelación de consultas sin adoptar otra biblioteca cliente.
La guía completa de MySQL incluye ejemplos listos para usar con la línea de comandos, Python, Java, C#, Go, Node.js, Rust, C y DuckDB, seguidos de la referencia completa del SQL compatible.
La conexión también puede ser útil con herramientas de IA que ya dispongan de un conector MySQL genérico. El archivo de skill de GribStream para MySQL, que puedes descargar, enseña a un agente a explorar el catálogo y construir consultas meteorológicas acotadas.
Una interfaz SQL especializada
La beta cubre el SQL necesario para elegir un dataset, rango de tiempo, ubicaciones, lead times, miembros del ensemble y valores meteorológicos. Puedes calcular valores derivados, filtrar filas, usar tiempos relativos y zonas horarias con nombre, y ordenar resultados acotados durante la exploración interactiva.
No pretende implementar todo MySQL. Las consultas meteorológicas no admiten escrituras, joins, subconsultas, agregaciones, agrupaciones ni SELECT *. La sintaxis no compatible devuelve un error claro, y la guía de SQL documenta las formas admitidas con ejemplos.
Descargas grandes, streaming y cuota
Para descargas grandes, configura el cliente para procesar las filas a medida que llegan en lugar de acumular todo el resultado en memoria. El cliente de línea de comandos de MySQL usa --quick; otros clientes suelen llamar a esta modalidad resultado sin búfer, streaming, iterativo o por bloques. La guía enlaza la documentación correspondiente de cada cliente.
Para cargas históricas y otras descargas de gran volumen, omite ORDER BY y ordena los datos después de recibirlos. El ordenamiento en el servidor está pensado sobre todo para la exploración interactiva y los resultados acotados.
El uso de cuota depende de los datos meteorológicos que se leen para responder la consulta, no solo de las filas que finalmente se devuelven. Limita el rango de tiempo, las coordenadas, los lead times, los miembros y los campos meteorológicos seleccionados antes de confiar en filtros por valor o en LIMIT.
Prueba la beta pública
- Crea un token gratuito de la API de GribStream, o usa uno existente.
- Abre la guía de conexión MySQL y el manual de SQL.
- Conéctate a
mysql.gribstream.com:3307con un cliente o driver MySQL. - Empieza con una consulta pequeña y acotada, y amplíala según sea necesario.
El objetivo es sencillo: si tu entorno ya habla MySQL, debe tener una vía directa a los datos meteorológicos de GribStream.
