Funciones de texto y fecha
Manipula texto y fechas para crear dimensiones personalizadas.
Las funciones de texto y fecha te permiten transformar y extraer información de tus datos para crear dimensiones personalizadas más útiles para el análisis. En esta lección aprenderás a manipular cadenas de texto y a trabajar con fechas para crear análisis temporales sofisticados.
Funciones de Texto
Las funciones de texto permiten limpiar, transformar y combinar campos de texto para crear dimensiones más útiles.
CONCAT: Concatenar Texto
Une múltiples campos o valores de texto en uno solo:
Nombre: Nombre Completo
Fórmula: CONCAT(nombre, " ", apellido)
Ejemplo con más elementos:
Nombre: Código de Producto
Fórmula: CONCAT(categoria, "-", subcategoria, "-", sku)
Resultado: "Electrónicos-Audio-SKU12345"
UPPER y LOWER: Cambiar Mayúsculas/Minúsculas
UPPER convierte todo a mayúsculas:
Nombre: País Mayúsculas
Fórmula: UPPER(pais)
Resultado: "MÉXICO"
LOWER convierte todo a minúsculas:
Nombre: Email Normalizado
Fórmula: LOWER(email)
Resultado: "usuario@email.com"
TRIM: Eliminar Espacios
Elimina espacios al inicio y final del texto:
Nombre: Nombre Limpio
Fórmula: TRIM(nombre_cliente)
Antes: " Juan García "
Después: "Juan García"
Combinando Funciones de Texto
Puedes anidar funciones para transformaciones complejas:
Nombre: Código Normalizado
Fórmula: UPPER(TRIM(codigo_producto))
Antes: " abc123 "
Después: "ABC123"
LEFT, RIGHT y SUBSTR
Extraen partes de una cadena de texto:
Nombre: Prefijo País
Fórmula: LEFT(codigo_pais, 2)
Entrada: "MX-001"
Resultado: "MX"
Nombre: Últimos 4 Dígitos
Fórmula: RIGHT(telefono, 4)
Entrada: "555-123-4567"
Resultado: "4567"
Nombre: Código Medio
Fórmula: SUBSTR(codigo, 3, 5)
Entrada: "AB12345XY"
Resultado: "12345" (empieza en posición 3, toma 5 caracteres)
REPLACE: Reemplazar Texto
Sustituye una subcadena por otra:
Nombre: URL Limpia
Fórmula: REPLACE(page_path, "/es/", "/")
Antes: "/es/productos/categoría"
Después: "/productos/categoría"
Tabla Resumen de Funciones de Texto
| Función | Descripción | Ejemplo |
|---|---|---|
CONCAT(a, b, ...) |
Une textos | CONCAT("Hola", " ", "Mundo") → "Hola Mundo" |
UPPER(texto) |
A mayúsculas | UPPER("abc") → "ABC" |
LOWER(texto) |
A minúsculas | LOWER("ABC") → "abc" |
TRIM(texto) |
Quita espacios | TRIM(" abc ") → "abc" |
LEFT(texto, n) |
Primeros n caracteres | LEFT("abcdef", 3) → "abc" |
RIGHT(texto, n) |
Últimos n caracteres | RIGHT("abcdef", 3) → "def" |
SUBSTR(texto, inicio, largo) |
Subcadena | SUBSTR("abcdef", 2, 3) → "bcd" |
REPLACE(texto, buscar, reemplazo) |
Reemplaza | REPLACE("abc", "b", "x") → "axc" |
LENGTH(texto) |
Longitud | LENGTH("abc") → 3 |
Funciones de Fecha
Las funciones de fecha permiten extraer componentes temporales y crear dimensiones para análisis por período.
Extracción de Componentes de Fecha
YEAR: Extrae el año:
Nombre: Año
Fórmula: YEAR(fecha_transaccion)
Fecha: 2026-01-28
Resultado: 2026
MONTH: Extrae el mes (1-12):
Nombre: Mes
Fórmula: MONTH(fecha_transaccion)
Fecha: 2026-01-28
Resultado: 1
WEEK: Extrae la semana del año (1-53):
Nombre: Semana
Fórmula: WEEK(fecha_transaccion)
Fecha: 2026-01-28
Resultado: 5
DAY: Extrae el día del mes (1-31):
Nombre: Día
Fórmula: DAY(fecha_transaccion)
Fecha: 2026-01-28
Resultado: 28
DAYOFWEEK: Día de la Semana
Retorna un número del 1 (domingo) al 7 (sábado):
Nombre: Día de Semana Número
Fórmula: DAYOFWEEK(fecha_transaccion)
Para convertirlo a nombre:
Nombre: Día de Semana
Fórmula:
CASE DAYOFWEEK(fecha_transaccion)
WHEN 1 THEN "Domingo"
WHEN 2 THEN "Lunes"
WHEN 3 THEN "Martes"
WHEN 4 THEN "Miércoles"
WHEN 5 THEN "Jueves"
WHEN 6 THEN "Viernes"
WHEN 7 THEN "Sábado"
END
Formateo de Fechas Personalizadas
Combina funciones para crear formatos personalizados:
Nombre: Año-Mes
Fórmula: CONCAT(YEAR(fecha), "-",
IF(MONTH(fecha) < 10,
CONCAT("0", MONTH(fecha)),
CAST(MONTH(fecha) AS TEXT)
)
)
Resultado: "2026-01"
Para un formato más legible:
Nombre: Mes y Año
Fórmula:
CONCAT(
CASE MONTH(fecha)
WHEN 1 THEN "Enero"
WHEN 2 THEN "Febrero"
WHEN 3 THEN "Marzo"
WHEN 4 THEN "Abril"
WHEN 5 THEN "Mayo"
WHEN 6 THEN "Junio"
WHEN 7 THEN "Julio"
WHEN 8 THEN "Agosto"
WHEN 9 THEN "Septiembre"
WHEN 10 THEN "Octubre"
WHEN 11 THEN "Noviembre"
WHEN 12 THEN "Diciembre"
END,
" ",
YEAR(fecha)
)
Resultado: "Enero 2026"
Dimensiones Temporales Personalizadas
Trimestre:
Nombre: Trimestre
Fórmula:
CONCAT("Q",
CASE
WHEN MONTH(fecha) <= 3 THEN "1"
WHEN MONTH(fecha) <= 6 THEN "2"
WHEN MONTH(fecha) <= 9 THEN "3"
ELSE "4"
END,
" ",
YEAR(fecha)
)
Resultado: "Q1 2026"
Semestre:
Nombre: Semestre
Fórmula:
IF(MONTH(fecha) <= 6,
CONCAT("H1 ", YEAR(fecha)),
CONCAT("H2 ", YEAR(fecha))
)
Resultado: "H1 2026" o "H2 2026"
Análisis por Día de la Semana
El análisis por día de la semana revela patrones de comportamiento importantes.
Dashboard de Patrones Semanales
Crea una dimensión ordenable:
Nombre: Día Semana Ordenable
Fórmula:
CASE DAYOFWEEK(fecha)
WHEN 2 THEN "1-Lunes"
WHEN 3 THEN "2-Martes"
WHEN 4 THEN "3-Miércoles"
WHEN 5 THEN "4-Jueves"
WHEN 6 THEN "5-Viernes"
WHEN 7 THEN "6-Sábado"
WHEN 1 THEN "7-Domingo"
END
El prefijo numérico asegura el orden correcto en los gráficos.
Clasificar Día Laboral vs Fin de Semana
Nombre: Tipo de Día
Fórmula:
IF(DAYOFWEEK(fecha) IN (1, 7), "Fin de Semana", "Día Laboral")
Comparaciones Mes sobre Mes (MoM)
Para análisis de tendencias, necesitas identificar períodos comparables.
Crear Identificador de Período
Nombre: Periodo Año-Mes
Fórmula: YEAR(fecha) * 100 + MONTH(fecha)
Resultado: 202601 (Enero 2026)
Este número permite ordenar y comparar períodos fácilmente.
Calcular Mes Anterior
Para referencias del mes anterior:
Nombre: Mes Anterior
Fórmula:
IF(MONTH(fecha) = 1,
(YEAR(fecha) - 1) * 100 + 12,
YEAR(fecha) * 100 + MONTH(fecha) - 1
)
Comparación Year-over-Year (YoY)
Identificar el mismo mes del año anterior:
Nombre: Mismo Mes Año Anterior
Fórmula: (YEAR(fecha) - 1) * 100 + MONTH(fecha)
Enero 2026 → 202501
Tabla Resumen de Funciones de Fecha
| Función | Descripción | Ejemplo (fecha: 2026-01-28) |
|---|---|---|
YEAR(fecha) |
Extrae año | 2026 |
MONTH(fecha) |
Extrae mes (1-12) | 1 |
WEEK(fecha) |
Semana del año | 5 |
DAY(fecha) |
Día del mes | 28 |
DAYOFWEEK(fecha) |
Día de semana (1=Dom) | 4 (Miércoles) |
QUARTER(fecha) |
Trimestre (1-4) | 1 |
DAYOFYEAR(fecha) |
Día del año (1-366) | 28 |
HOUR(datetime) |
Hora (0-23) | 14 |
MINUTE(datetime) |
Minuto (0-59) | 30 |
Ejercicio Práctico
Crea las siguientes dimensiones calculadas para un análisis de ventas:
- Código de Cliente Normalizado
UPPER(TRIM(codigo_cliente))
- Nombre de Mes en Español
CASE MONTH(fecha_venta)
WHEN 1 THEN "Enero"
WHEN 2 THEN "Febrero"
-- ... completar los demás meses
END
- Día de Semana Ordenado
CASE DAYOFWEEK(fecha_venta)
WHEN 2 THEN "1-Lun"
WHEN 3 THEN "2-Mar"
WHEN 4 THEN "3-Mié"
WHEN 5 THEN "4-Jue"
WHEN 6 THEN "5-Vie"
WHEN 7 THEN "6-Sáb"
WHEN 1 THEN "7-Dom"
END
- Horario de Actividad (si tienes datetime)
CASE
WHEN HOUR(fecha_hora) < 12 THEN "Mañana"
WHEN HOUR(fecha_hora) < 18 THEN "Tarde"
ELSE "Noche"
END
Puntos Clave
- CONCAT une múltiples campos de texto, útil para crear códigos compuestos o nombres completos
- UPPER, LOWER y TRIM normalizan texto para consistencia en el análisis y evitar duplicados por formato
- LEFT, RIGHT y SUBSTR extraen porciones de texto para aislar partes de códigos o identificadores
- YEAR, MONTH, WEEK, DAY extraen componentes numéricos de fechas para agrupar y analizar por período
- DAYOFWEEK retorna 1-7 (domingo a sábado), útil para análisis de patrones semanales
- Las dimensiones de fecha personalizadas como Trimestre, Semestre o Mes-Año facilitan el análisis temporal
- Para análisis MoM y YoY, crea identificadores numéricos de período (YYYYMM) que permitan comparaciones
¿Completaste esta lección?
Marca esta lección como completada. Tu progreso se guardará en tu navegador.