A medida que los proyectos de datos crecen, también aumenta la cantidad de lógica que debe aplicarse de forma repetitiva. Cálculos financieros, transformaciones de texto, validaciones, normalización de datos o reglas de negocio suelen aparecer una y otra vez en consultas SQL, pipelines y procesos analíticos.
Cuando esta lógica se replica en múltiples lugares, el mantenimiento se vuelve más complejo y aumenta el riesgo de inconsistencias. Una pequeña modificación puede obligar a actualizar decenas de consultas distintas, generando errores y elevando los costes operativos.
Para resolver este problema, Snowflake incorpora las User Defined Functions (UDFs), una funcionalidad que permite crear funciones personalizadas reutilizables directamente dentro de la plataforma.
En este artículo veremos qué son las UDFs, cómo funcionan y por qué se han convertido en una herramienta fundamental para construir soluciones analíticas más limpias, mantenibles y escalables.
¿Qué es una User Defined Function?
Una User Defined Function, o UDF, es una función creada por el usuario que puede ejecutarse dentro de consultas SQL igual que cualquier función nativa de Snowflake.
Su objetivo principal es encapsular lógica reutilizable para evitar duplicaciones y simplificar el desarrollo.
Por ejemplo, todos estamos acostumbrados a utilizar funciones estándar como:
UPPER()
LOWER()
ROUND()
COUNT()
SUM()
Las UDFs permiten crear funciones propias que se comportan exactamente igual, pero adaptadas a las necesidades específicas de cada organización.
¿Por qué utilizar UDFs?
Las UDFs resultan especialmente útiles cuando una misma transformación aparece repetidamente en diferentes consultas.
Por ejemplo:
- Cálculo de descuentos.
- Normalización de nombres.
- Clasificación de clientes.
- Conversión de formatos.
- Validaciones de negocio.
- Enmascaramiento de datos.
En lugar de copiar la lógica una y otra vez, puede centralizarse dentro de una única función.
Esto facilita:
- Mantenimiento.
- Reutilización.
- Consistencia.
- Escalabilidad.
Un ejemplo sencillo
Supongamos que necesitamos calcular un IVA del 21%.
Podríamos escribir:
SELECT
precio * 1.21
FROM productos;
Pero si esta operación aparece en cientos de consultas, resulta más práctico encapsularla.
Por ejemplo:
CREATE FUNCTION calcular_iva(precio FLOAT)
RETURNS FLOAT
AS
$$
precio * 1.21
$$;
Posteriormente:
SELECT
calcular_iva(precio)
FROM productos;
La lógica queda centralizada y es mucho más fácil de mantener.
Cómo funcionan las UDFs
Las UDFs reciben parámetros de entrada, ejecutan una operación y devuelven un resultado.
Su estructura básica suele incluir:
- Nombre.
- Parámetros.
- Tipo de retorno.
- Lógica interna.
Por ejemplo:
CREATE FUNCTION obtener_margen(
ventas FLOAT,
costes FLOAT
)
RETURNS FLOAT
AS
$$
(ventas – costes) / ventas
$$;
Después puede utilizarse como cualquier otra función SQL.
Ventajas de utilizar UDFs
Las funciones personalizadas ofrecen numerosos beneficios.
Reutilización de lógica
La principal ventaja es evitar la duplicación de código.
Una única función puede utilizarse en múltiples consultas y proyectos.
Mayor consistencia
Todos los equipos aplican exactamente las mismas reglas.
Esto reduce diferencias entre informes y análisis.
Mantenimiento simplificado
Si una regla cambia, basta con actualizar la función.
No es necesario revisar cientos de consultas distintas.
Mejor legibilidad
Las consultas suelen resultar más fáciles de entender.
Por ejemplo:
SELECT
calcular_riesgo(cliente)
FROM clientes;
es mucho más intuitivo que incorporar una larga expresión directamente en la consulta.
Tipos de UDFs en Snowflake
Snowflake admite diferentes tipos de funciones personalizadas.
UDFs SQL
Son las más sencillas y utilizan expresiones SQL estándar.
Por ejemplo:
CREATE FUNCTION convertir_mayusculas(texto STRING)
RETURNS STRING
AS
$$
UPPER(texto)
$$;
UDFs JavaScript
Snowflake permite desarrollar funciones utilizando JavaScript.
Ejemplo:
CREATE FUNCTION saludo(nombre STRING)
RETURNS STRING
LANGUAGE JAVASCRIPT
AS
$$
return «Hola » + nombre;
$$;
Esto amplía considerablemente las posibilidades de procesamiento.
UDFs para datos semiestructurados
Una de las grandes fortalezas de Snowflake es su capacidad para trabajar con JSON y otros formatos semiestructurados.
Las UDFs pueden utilizarse para manipular este tipo de datos de forma eficiente.
Por ejemplo:
- Extraer atributos.
- Validar estructuras.
- Transformar documentos.
- Estandarizar formatos.
Casos de uso habituales
Las User Defined Functions aparecen en numerosos proyectos reales.
Normalización de datos
Transformar cadenas de texto de forma homogénea.
Por ejemplo:
Juan Pérez
JUAN PEREZ
juan perez
a un único formato estándar.
Cálculos financieros
Implementar fórmulas utilizadas por distintos departamentos.
Clasificación de clientes
Asignar categorías según reglas de negocio.
Limpieza de datos
Corregir formatos o valores inconsistentes.
Procesamiento de información semiestructurada
Extraer información de documentos JSON.
UDFs y Analytics Engineering
La filosofía del Analytics Engineering promueve la reutilización y modularidad.
Las UDFs encajan perfectamente dentro de este enfoque.
Permiten construir componentes reutilizables que pueden ser utilizados por:
- Analistas.
- Analytics Engineers.
- Data Engineers.
- Científicos de datos.
De esta forma, las reglas de negocio dejan de estar dispersas y pasan a formar parte de una capa centralizada y gobernada.
Integración con dbt
Las UDFs pueden convivir perfectamente con proyectos dbt.
Por ejemplo:
SELECT
customer_id,
calcular_segmento(total_gasto)
FROM {{ ref(‘customers’) }}
Esta combinación permite construir modelos analíticos más limpios y fáciles de mantener.
La lógica compleja permanece encapsulada dentro de funciones reutilizables.
Consideraciones de rendimiento
Aunque las UDFs son extremadamente útiles, conviene utilizarlas de forma responsable.
Algunas recomendaciones incluyen:
- Evitar lógica innecesariamente compleja.
- Revisar el impacto sobre grandes volúmenes de datos.
- Probar el rendimiento antes de desplegar en producción.
- Mantener funciones pequeñas y especializadas.
Como ocurre con cualquier componente reutilizable, un buen diseño resulta fundamental.
Buenas prácticas
Si se utilizan UDFs dentro de una organización, es recomendable seguir ciertas pautas.
Utilizar nombres descriptivos
Los nombres deben reflejar claramente la finalidad de la función.
Por ejemplo:
calcular_comision()
es preferible a:
funcion_1()
Mantener una única responsabilidad
Cada función debería resolver un único problema concreto.
Documentar adecuadamente
Especialmente cuando las reglas de negocio son complejas.
Evitar duplicidades
Antes de crear una nueva función, conviene comprobar si ya existe una similar.
Gestionar versiones
Las modificaciones deben realizarse de forma controlada para evitar impactos inesperados.
Beneficios para las organizaciones
La adopción de UDFs aporta ventajas importantes.
Mayor productividad
Los equipos reutilizan lógica en lugar de reescribirla constantemente.
Mejor gobernanza
Las reglas permanecen centralizadas.
Menor riesgo de errores
Se reducen inconsistencias entre diferentes consultas.
Escalabilidad
Los proyectos pueden crecer manteniendo una estructura ordenada.
Colaboración más eficiente
Los equipos comparten componentes comunes.
El futuro de las funciones personalizadas
Las arquitecturas modernas de datos evolucionan hacia modelos cada vez más modulares.
Las organizaciones buscan:
- Reutilización.
- Automatización.
- Gobernanza.
- Escalabilidad.
Las UDFs contribuyen directamente a estos objetivos, permitiendo construir capas de lógica reutilizable que simplifican el desarrollo y el mantenimiento de soluciones analíticas.
Por ello continúan siendo una herramienta fundamental dentro de plataformas modernas como Snowflake.
Conclusión
Las User Defined Functions permiten extender las capacidades de Snowflake mediante la creación de funciones personalizadas adaptadas a las necesidades específicas de cada organización.
Su capacidad para encapsular lógica de negocio, reutilizar transformaciones y mejorar la legibilidad de las consultas las convierte en una herramienta extremadamente valiosa para proyectos analíticos modernos.
Utilizadas correctamente, ayudan a reducir duplicaciones, mejorar la consistencia y construir plataformas de datos más robustas, mantenibles y escalables. En un entorno donde la calidad y la gobernanza son cada vez más importantes, las UDFs representan una pieza clave dentro de cualquier estrategia avanzada de gestión de datos.




