En mi experiencia trabajando con clientes que migran sus datos a BigQuery, me he encontrado con un problema recurrente: los datos no siempre vienen en el formato que necesitamos para operar. A veces, un número aparece como texto, o una fecha está almacenada como un entero. Si no sabes cómo transformar estos datos, tus informes en Data Studio o cualquier otra herramienta de visualización mostrarán errores o, peor aún, datos incorrectos.
Cuándo usar CAST frente a SAFE_CAST
La diferencia entre estas dos funciones es técnica pero tiene un impacto directo en la estabilidad de tus queries. Con CAST, si intentas convertir un valor que no encaja en el tipo de destino, la consulta fallará por completo. En cambio, SAFE_CAST es mucho más amable: si la conversión no es posible, simplemente devuelve un valor nulo en lugar de detener toda la ejecución.
Lo que mejor me ha funcionado es usar CAST durante la fase de desarrollo para identificar errores. Una vez que validas que la lógica es correcta, te recomiendo cambiarlo a SAFE_CAST. Esto garantiza que un dato inesperado no rompa el dashboard de tu cliente en el futuro.
Solución de problemas de formato y tipos de datos
Un escenario muy común que he visto es el conflicto de formatos entre idiomas. Si cargas un archivo CSV generado desde un software en español, es probable que los decimales utilicen comas. BigQuery, al estar configurado en inglés, espera puntos.
Para solucionar esto, no basta con un CAST. Primero, debes limpiar el dato. La secuencia que sigo es:
- Usar REPLACE para cambiar la coma por un punto.
- Aplicar SAFE_CAST para convertir ese string resultante al formato numérico correcto, como FLOAT64 o INT64.
Aquí tienes los tipos más utilizados para estas conversiones:
- FLOAT64: Para números con decimales.
- INT64: Para números enteros.
- STRING: Para tratar cualquier valor como texto.
- DATE: Para manipular fechas.
Recuerda que operar matemáticamente con datos que no han sido convertidos correctamente es el camino directo al desastre. Si intentas sumar un texto y un número, BigQuery te lanzará un error. El modelado de datos consiste precisamente en esto: masticar la información para que, al llegar al informe final, todo fluya sin sorpresas.
Preguntas frecuentes
¿Qué pasa si uso CAST y el dato no se puede convertir?
La consulta fallará automáticamente y no obtendrás ningún resultado.
¿Por qué prefiero usar SAFE_CAST en producción?
Porque evita que toda la consulta se detenga si encuentra un valor erróneo, devolviendo un nulo en su lugar.
¿Cómo corrijo decimales con comas en BigQuery?
Primero usa la función REPLACE para cambiar la coma por un punto y luego aplica SAFE_CAST para convertirlo a FLOAT64.