Skip to main content

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.