QlikSense Set Analysis temporal

Publicaciones

QlikSense Set Analysis Temporal: Compara con el Año Anterior sin Romper el Contexto

Hector Pincheira

Hector Pincheira

CIO | CTO
Estrategia Digital & Innovación Tecnológica

Artículos

Hay una pregunta que un gerente hace en cada reunión de resultados y que, sorprendentemente, casi ningún tablero responde bien: «¿esto es mejor o peor que el año pasado?». Parece trivial. No lo es. El QlikSense Set Analysis temporal es la diferencia entre un dashboard que compara períodos con precisión quirúrgica y uno que se rompe apenas alguien hace clic en un filtro. En este artículo te muestro cómo construir comparaciones año contra año que resisten cualquier selección del usuario, sin fórmulas frágiles y sin duplicar el modelo.

QlikSense Set Analysis temporal

El dato incómodo: el 78% de las empresas ya implementó al menos una plataforma de BI, pero la mayoría sigue leyendo cifras en aislamiento. Y una cifra sin comparación es una cifra muda.

El problema real: comparar en el tiempo es donde el BI se cae

Piensa en la analítica como navegar. Un número absoluto —»vendimos 340 millones este mes»— es como saber tu velocidad sin saber tu rumbo. Útil, pero incompleto. La comparación temporal es la brújula: te dice si avanzas, si retrocedes o si simplemente estás en la estacionalidad de siempre.

El análisis año contra año (YoY) existe justamente para eliminar la distorsión estacional. Comparar diciembre contra noviembre engaña: diciembre siempre vende más. Comparar diciembre 2025 contra diciembre 2024 revela la verdad del negocio. Por eso las empresas con alta adopción de BI toman decisiones acertadas cinco veces más rápido, y quienes explotan analítica en tiempo real reportan un 29% de mejora en la velocidad de decisión.

El problema técnico aparece cuando el usuario interactúa. Muchos desarrolladores calculan el año anterior con una fórmula que depende de la selección actual. El gerente filtra «Región Norte», y la comparación se desarma porque la lógica temporal quedó atada al contexto equivocado. Ahí es donde entra el Set Analysis: para blindar el período de comparación contra las selecciones del usuario.

La solución con QlikSense Set Analysis temporal

La idea central es simple y poderosa: un conjunto (set) define qué registros considera la expresión, con independencia de lo que el usuario haya seleccionado. Vamos de lo básico a lo robusto.

Paso 1: ventas del período seleccionado y del año anterior

Supongamos un calendario maestro con campos Año, Mes y MesAño. La comparación ingenua sería restar un año a mano. La forma correcta usa expansión con signo dólar para calcular el año dinámicamente:

// Ventas del período actual (respeta la selección del usuario)
Sum(Ventas)
// Ventas del MISMO período, un año antes
Sum({<Año = {$(=Max(Año)-1)}>} Ventas)

Desglosemos la segunda expresión, porque cada símbolo cuenta:

  • { ... } abre el modificador de conjunto: le decimos a QlikSense qué universo de datos usar.
  • <Año = { ... }> sobreescribe la selección del campo Año.
  • $(=Max(Año)-1) es la clave: la expansión $() se evalúa antes que el resto. Max(Año) toma el año más alto que el usuario tiene seleccionado y le resta uno. Si el usuario ve 2026, esto devuelve 2025.
💡 Punto clave: la expansión $(=...) se calcula una sola vez y devuelve un valor literal. Es como fijar el ancla antes de que el barco se mueva: el año de comparación queda determinado sin importar cuántos filtros toque el usuario después.

Paso 2: crecimiento YoY que no se rompe

Con las dos piezas anteriores, el crecimiento año contra año es una división gobernada. Y aquí llega el error que hunde el 60% de estos tableros: dividir por cero cuando no hay dato del período anterior.

// Crecimiento YoY blindado contra división por cero
Sum(Ventas)
/
Sum({<Año = {$(=Max(Año)-1)}>} Ventas)
- 1
// Versión robusta con guarda:
If(
  Sum({<Año = {$(=Max(Año)-1)}>} Ventas) = 0,
  Null(),
  Sum(Ventas)
  / Sum({<Año = {$(=Max(Año)-1)}>} Ventas) - 1
)

La guarda con If(... = 0, Null(), ...) devuelve nulo en lugar de un error o un infinito. En un tablero ejecutivo, una celda vacía comunica «no comparable»; un «#DIV/0» comunica «no sé lo que hago».

Paso 3: comparar el mismo período parcial (la trampa del mes en curso)

Aquí está la sutileza que separa al analista senior del principiante. Si hoy es 24 y comparas todo el mes actual contra todo el mes del año pasado, el resultado miente: comparas 24 días contra 30. La comparación justa es mes a la fecha contra mes a la fecha (MTD vs MTD del año anterior).

// En el script del calendario maestro, generamos una bandera:
// DiaDelMes = Day(Fecha)
// Así podemos recortar ambos períodos al mismo día tope.
// Ventas MTD del año anterior, recortadas al día de hoy:
Sum(
  {<
    Año = {$(=Max(Año)-1)},
    DiaDelMes = {"<=$(=Day(Today()))"}
  >} Ventas
)

El modificador DiaDelMes = {"<=$(=Day(Today()))"} usa una búsqueda numérica: solo incluye los días menores o iguales al día actual. Comparas peras con peras. Este detalle, que suena menor, es la diferencia entre un directorio que confía en el tablero y uno que lo cuestiona en voz alta.

Paso 4: acumulado del año (YTD) versus YTD anterior

Para el clásico «cómo vamos en el año», combinamos una bandera de calendario con el desplazamiento de año:

// FlagYTD = 1 para fechas del inicio de año hasta hoy (se calcula en script)
// YTD del año actual:
Sum({<FlagYTD = {1}, Año = {$(=Max(Año))}>} Ventas)
// YTD del año anterior (mismo tramo del calendario):
Sum({<FlagYTD = {1}, Año = {$(=Max(Año)-1)}>} Ventas)
⚠️ Error común: definir la bandera YTD en la expresión con un If() gigante. Eso obliga a QlikSense a evaluar registro por registro y mata el rendimiento. La bandera se calcula una vez en el script de carga y se consume como un simple filtro. Mueve la lógica al modelo, no a la interfaz.

Impacto en el negocio: de la cifra muda a la decisión

Traduzcamos esto a lo que un gerente general realmente compra. Un tablero con comparación temporal correcta convierte cada KPI en una historia con dirección. No es «vendimos 340 millones»; es «vendimos 340 millones, un 12% más que el mismo tramo del año pasado, pero con márgenes 3 puntos abajo». Esa segunda frase dispara una conversación estratégica; la primera, solo un asentimiento.

El retorno es medible. Las organizaciones que consolidan la toma de decisiones basada en datos logran un ROI 3,8 veces mayor y deciden cinco veces más rápido que quienes dependen del instinto y de reportes mensuales rancios. La comparación temporal robusta es, literalmente, el mecanismo que acelera esa decisión: el gerente ve la variación al instante, sin esperar a que alguien arme el Excel comparativo del mes siguiente.

Y hay un ahorro silencioso: cada hora que un analista no gasta reconstruyendo comparativos manuales es una hora invertida en interpretar, no en recolectar. En un mercado de BI que corre hacia los 14 mil millones de dólares en 2026, la ventaja no está en tener la herramienta, sino en exprimir su lógica temporal.

Errores comunes y cómo evitarlos

1. Atar el año anterior a la selección con Only() o expresiones sin Set. Si calculas el período previo dependiendo de lo que el usuario filtró, cualquier clic lo desarma. Solución: siempre encapsula el desplazamiento temporal dentro del modificador de conjunto con $(=...).

2. Comparar períodos completos contra parciales. El mes en curso contra el mes completo anterior infla o desinfla la variación. Solución: recorta ambos con una bandera de día (DiaDelMes <= hoy).

3. No blindar la división por cero. Un producto nuevo sin ventas el año pasado genera infinitos o errores. Solución: la guarda If(denominador = 0, Null(), ...).

4. Meter lógica de calendario en la expresión. Los If() de fechas en la interfaz destruyen el rendimiento. Solución: precalcula banderas (YTD, MTD, MesAño) en el script de carga.

Mejores prácticas desde la experiencia

Primero, gobierna tus expresiones temporales como medidas maestras: define «Ventas AA» y «Crecimiento YoY» una sola vez en la biblioteca y reutilízalas. Evitas que cada desarrollador invente su propia versión del año anterior, cada una ligeramente distinta.

Segundo, documenta la semántica del período. «YTD» para finanzas puede significar año fiscal, no calendario. Que la bandera del script refleje el año fiscal real de la empresa, no el default de enero a diciembre.

Tercero, prueba tus expresiones filtrando agresivamente: selecciona una región, un vendedor, un producto. Si la comparación año contra año se mantiene coherente bajo cualquier filtro, tu Set Analysis está bien construido. Si se rompe, revisa dónde dejaste una dependencia oculta de la selección. Puedes profundizar en más técnicas de modelado y analítica en hectorpincheira.com.

Conclusión estratégica

El QlikSense Set Analysis temporal no es un truco técnico: es la infraestructura que transforma datos en juicio. Un número solo describe; un número comparado decide. La diferencia entre ambos son cuatro caracteres bien puestos dentro de un modificador de conjunto y una bandera de calendario calculada en el lugar correcto.

La pregunta que abre este artículo —»¿mejor o peor que el año pasado?»— debería responderse sola en tu tablero, sin importar quién lo mire ni qué filtre. Si hoy no lo hace, ya sabes por dónde empezar. Y si lideras un equipo de datos, esta es la conversación que vale la pena tener esta semana: ¿nuestras comparaciones temporales resisten el clic del gerente, o se caen a la primera selección?

Mas Leídos

Pasajero mira un tablero de salidas en un aeropuerto, metafora de la dependencia de proveedores de IA
El Calendario Ajeno: la Dependencia de Proveedores de IA que Nadie Negocia
SAP Business One Procedimientos Almacenados: Reportes Reutilizables - imagen destacada del tutorial
SAP Business One Procedimientos Almacenados: Reportes Reutilizables
SAP Business One Pedidos Pendientes - imagen destacada del tutorial
SAP Business One Pedidos Pendientes: Query SQL para Controlar tu Backlog
QlikSense análisis de rendimiento: descomposición de la merma
QlikSense Análisis de Rendimiento: la Merma que Nadie Está Mirando
QlikSense dashboard móvil: las tres pantallas
QlikSense Dashboard Móvil: las Tres Pantallas que Sí se Miran
SAP Business One Depósitos Bancarios - imagen destacada del tutorial
SAP Business One Depósitos Bancarios: Gestiona Cheques y Cobros Paso a Paso

ARTICULOS RELACIONADOS