Lección 19 de 26Métricas Calculadas

Funciones de texto y fecha

Manipula texto y fechas para crear dimensiones personalizadas.

12 minutos

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:

  1. Código de Cliente Normalizado
UPPER(TRIM(codigo_cliente))
  1. Nombre de Mes en Español
CASE MONTH(fecha_venta)
  WHEN 1 THEN "Enero"
  WHEN 2 THEN "Febrero"
  -- ... completar los demás meses
END
  1. 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
  1. 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.