Cuando la agregación miente

El gerente general quería su columna de cantidad. El modelo la dejaba en blanco. Los treinta minutos que siguieron no fueron sobre la fórmula.

Esto me pasa una vez al mes, tirando por lo bajo. Clientes grandes y clientes chicos, modelos en producción y demos de media hora. Alguien suma una columna llamada CANTIDAD y alguien divide el monto entre esa suma para sacar un precio promedio. Las dos operaciones son lo más normal del mundo. Ninguna de las dos está bien.

Lo que hace memorable la vez que quiero contar es que la vi desde afuera.

Costa Rica, 2021 o 2022. Un importador de químicos y material de empaque. Ricardo, uno de nuestros mentores, le estaba presentando al cliente una versión nueva del modelo analítico de ventas. El gerente general quería su columna de cantidad, la misma que había usado por años. En el modelo nuevo esa columna se ponía en blanco cuando las cosas que caían debajo no eran agregables entre sí, y en ese catálogo casi nunca lo eran. Ahí adentro convivían químicos vendidos por libra, químicos vendidos por estañón de 55 galones, botellas vacías contadas por unidad y sacos cuyo peso cambiaba según el producto. Nada de eso vive en la misma escala. Así que el gerente general pedía un número y el dashboard le devolvía una celda vacía.

Yo era el jefe de Ricardo y estaba en la sala. No dije nada. Decidí verlo trabajar.

(Un paréntesis sobre la palabra mentor, porque en Primus Data es un título y no un adjetivo cariñoso. Separamos la mentoría de la consultoría en la oferta: al consultor le contratás la solución, al mentor le contratás además la transmisión del conocimiento. Lo aclaro porque explica lo que pasó después mejor que cualquier elogio que yo pueda escribir sobre Ricardo. Los treinta minutos que siguieron no fueron un rasgo de carácter. Eran el trabajo.)

Los treinta minutos

El camino fácil estaba a la vista de todos y tomaba dos minutos: quitarle la condición a la medida. La suma existe, el motor la calcula sin protestar, el gerente general se va contento y la reunión termina veinte minutos antes.

Ricardo se pasó media hora explicando por qué la cantidad mentía y por qué el precio promedio mentía. No defendió una fórmula. Defendió un significado, que es la parte del trabajo que no se puede delegar al motor.

Esa es la escena que me interesa de todo esto, y es la razón por la que este post existe. La parte técnica de este problema se resuelve en cuatro líneas de código. Lo que cuesta es sostener la celda vacía frente a alguien que lleva años tomando decisiones con el número que la llenaba.

Porque las frases que ese número autorizaba suenan impecables. Vendimos dos millones de cantidad más que el año pasado. Eso no significa que vendimos más. La línea del precio promedio va hacia abajo. Eso no significa que estamos vendiendo más barato. Cada una tiene sujeto, verbo, cifra y comparación contra el período anterior. Son gramaticalmente perfectas y son afirmaciones sobre nada.

Sumar un estañón a un millar de botellas

Acá va lo que me costó años decir con claridad: la suma parecía matemática, pero era una afirmación.

Cuando escribís 1 + 1 + 1 = 3, el resultado solo es cierto si los tres unos son la misma clase de cosa. Un estañón de químico, más mil botellas vacías, más un saco no es igual a tres de nada. No existe una unidad en la que ese 3 sea una cantidad. Son tres etiquetas contadas como si fueran tres mediciones.

El signo de más carga una suposición oculta cada vez que lo usás: estas cosas son conmensurables, misma clase, misma unidad, sumables. En la aritmética honesta declarás esa suposición en voz alta. En una hoja de cálculo, el signo de más hace la afirmación en silencio y nadie en la sala la firma. Vos no decidiste que un estañón y un millar de botellas pertenecen al mismo total. La función SUMA lo decidió por vos, y no pregunta.

Así que “cantidad = 3” no es un número impreciso. Es una operación indefinida disfrazada de operación definida. Sumar un estañón a un millar de botellas es la misma categoría de sinsentido que sumar un estañón a un martes. La hoja de cálculo te va a devolver un número en los dos casos. El número es la mentira.

Una columna llamada CANTIDAD se ve limpia, y fila por fila lo es: cada número es una cantidad real, medida de verdad, en su propia unidad. El problema aparece cuando las apilás. Una fila cuenta unidades, la siguiente kilos, la siguiente sacos, la siguiente metros, y debajo de todas ellas hay una etiqueta, el tipo de producto, que nadie decidió sumar a propósito. (Los más académicos van a reconocer acá los niveles de medición de Stevens: contás las etiquetas, no las sumás. A mí me metió en esta línea de pensamiento un artículo de Joe Celko sobre escalas nominales, y desde entonces le tengo desconfianza a toda columna que se llame como un sustantivo genérico.)

Y encima de esa suma se construye un segundo número, que es el que llega a la reunión. El precio promedio es monto dividido entre esa cantidad, y una razón es tan sólida como su denominador. El denominador acá es una pila de unidades distintas fingiendo ser una sola, así que el precio promedio que se ve tan preciso no está midiendo nada.

La vieja versión popular lo dice mejor que cualquier libro de texto: no se pueden sumar peras con manzanas. La frase sobrevive porque es un recordatorio, no una prohibición. podés sumar fruta, si primero acordás qué es “una fruta”. Todo el problema vive en ese “si”.

Por qué esta mentira es peor que un error

Un número equivocado se delata tarde o temprano. Una fórmula que divide entre la columna equivocada tira un error, o devuelve algo absurdo a simple vista, y alguien lo agarra. La mentira de la agregación no hace nada de eso. Produce un número limpio, plausible, de apariencia precisa, y la precisión es persuasiva.

Ese precio promedio venía con decimales. Estaba en una columna ordenada al lado de la cifra del año anterior. Alimentaba un cambio porcentual, que alimentaba una oración, y esa oración sonaba como un hecho. Nadie la dudaba. Y no la dudaban precisamente porque se parecía a todos los demás números verdaderos sobre los que habían actuado antes. La mentira no parece un error. Parece rigor.

Y así es como requisa recursos. Una reunión que arranca con un promedio movido no va camino a “revisemos dos veces la matemática”. Va camino a “entendamos la causa”. ¿Cambió la mezcla de proveedores? ¿Se nos coló un ajuste de precios? ¿Se está moviendo la demanda hacia líneas premium? He visto equipos a minutos de gastar semanas haciéndole ingeniería inversa al movimiento de un número que nunca fue una medición. La mentira de la agregación no solo se sienta en un dashboard. Reparte asignaciones.

La cura: declará la unidad antes de sumar

El arreglo no es “dejá de agregar”. Agregar es el sentido entero de un sistema de reportería. El arreglo es hacer explícita la afirmación oculta: acordar una unidad de equivalencia antes de que corra el signo de más.

Y acá conviene mirar de nuevo los sacos de ese importador, porque son el caso difícil escondido en la lista. Botellas contra estañones es un choque evidente: nadie cree de verdad que sean la misma cosa. Los sacos no. Todos los sacos son sacos, la columna se ve homogénea, y sin embargo un saco de un producto no pesa lo mismo que un saco de otro. Sumar sacos parece legítimo y no lo es, que es la versión peligrosa del problema: la que no da señales.

El ejemplo más limpio que conozco de cómo se resuelve eso viene de Dole. Exportan banano en cajas que no pesan todas lo mismo, o sea el problema del saco a escala de exportación. Sumá “cajas” y volvés al territorio del estañón más las botellas, porque una caja no es una unidad consistente. Entonces definieron una. La Caja Dole es una cantidad fija de banano, y cada embarque se convierte a ella: unidades multiplicadas por su peso, divididas entre el peso de la caja estándar. Ahora la suma significa algo, porque todos acordaron la unidad antes de sumar.

Esa es toda la disciplina en un solo movimiento. Dole no prohibió el total. Se lo ganó. Declaró la unidad de equivalencia a la vista de todos, para que la suma descanse sobre un acuerdo en vez de un accidente.

Hacé que el modelo se niegue a mentir

El otro movimiento vive en el modelo mismo, y es el que estaba en pantalla el día de la reunión: que la capa semántica se niegue a sumar lo que no es sumable.

La regla es simple de codificar. Sumá una cantidad solo cuando hay una sola unidad de medida en alcance. En DAX son unas pocas líneas:

Cantidad =
IF(
    DISTINCTCOUNT( LineasVenta[UnidadDeMedida] ) = 1,
    SUM( LineasVenta[Cantidad] ),
    BLANK()
)

Filtrá a una sola unidad, solo libras, solo botellas, y la medida suma y devuelve un número real. Mezclá unidades y devuelve blanco. No un total equivocado. Nada. El modelo se niega a responder una pregunta mal formada.

Un blanco es más honesto que un número equivocado con cara de seguro. La celda vacía manda a alguien a preguntar “¿en qué unidad estamos?” en vez de mandar a un equipo a cazar una causa que nunca estuvo ahí.

Nota técnica, para el que va a implementarlo. La unidad tiene que contarse sobre las filas que estás sumando, no sobre el catálogo. Si la medida cuenta unidades distintas en la dimensión de producto, está midiendo el catálogo entero y no lo que hay en el visual: te va a poner blanco donde había un solo tipo de producto vendido, y te va a dejar pasar totales mezclados. Por eso arriba la columna de unidad vive en la línea de venta. Ahí es donde suele vivir de verdad: el mismo producto se vende por unidad al detalle y por caja al mayoreo. Si en tu modelo la unidad solo existe en el producto, forzá el conteo contra los hechos:

UnidadesEnAlcance =
CALCULATE( DISTINCTCOUNT( Productos[UnidadDeMedida] ), LineasVenta )

Esto es ilustrativo, no un patrón terminado. En un modelo real podrías devolver un mensaje, o forzar el desglose por unidad de medida, en vez de poner blanco. El punto es la postura: la regla queda escrita en el lugar donde el signo de más la estaba rompiendo en silencio.

Y una advertencia que la escena de Ricardo deja clara: el blanco no gana la discusión, la abre. Un modelo que se niega a mentir le pasa a una persona el trabajo de explicar por qué. Si no tenés a alguien dispuesto a pararse media hora frente al gerente general, la condición va a durar hasta el primer viernes con prisa.

“Todo el mundo lo hace mal. ¿Y cuál es la alternativa?”

Esas fueron las dos preguntas del cliente al final, y son las correctas. La primera es fácil: sí, todo el mundo lo hace mal, y por eso este post trata de una operación que todos ejecutamos varias veces al día. La segunda es la que importa, porque quitarle el número a alguien sin darle otro no es gobierno de datos, es obstrucción.

La respuesta se llama análisis PVM, por precio, volumen y mezcla. No lo inventé yo ni es nuevo: es herramienta vieja de análisis financiero y comercial. Descompone el cambio de ingreso (o de margen) entre dos períodos según su origen, en vez de resumirlo en una sola razón:

  • Efecto precio. Cuánto del cambio viene de que los mismos productos se vendieron a otro precio.
  • Efecto volumen. Cuánto viene de que se vendió más o menos de lo mismo.
  • Efecto mezcla. Cuánto viene de que cambió la composición de lo vendido, sin que ningún precio se moviera.

Ahí está el fantasma con nombre y apellido. El precio promedio que sube sin que ningún precio haya subido es efecto mezcla, reportado como si fuera efecto precio. El PVM no arregla la razón. Le quita el trabajo: separa en tres cifras lo que la razón estaba mezclando en una.

Y esta es la parte que hace del PVM el cierre correcto de este post y no una tangente. El PVM se calcula por producto, o por familia comparable, y después se agrega. Al final no se suman cantidades: se suman efectos en dinero, y el dinero sí es una unidad consistente. El PVM funciona porque agrega en colones lo que nunca debió agregarse en “cantidad”.

O sea que el PVM no te salva de este post. Lo presupone. Necesita un volumen definido dentro de un perímetro donde la unidad sea una sola, y si no declaraste ese perímetro, el efecto mezcla te sale contaminado igual, nada más que con tres decimales más y un nombre técnico que suena a que alguien lo revisó.

Monté mi primer PVM hace unos veinte años, para BTICINO en Costa Rica. De ahí salieron las dos cosas al mismo tiempo: la descomposición como respuesta a la pregunta del gerente, y la costumbre de que mis cálculos de cantidad sean condicionales, en SQL, en MDX y hoy en DAX. Con honestidad no me acuerdo cuál vino primero. No sé si aprendí a descomponer porque desconfiaba del promedio, o si empecé a desconfiar del promedio porque había visto la descomposición. Tampoco me acuerdo de la primera vez que ver una columna CANTIDAD sumada me hizo torcer la boca. Solo sé que para cuando Ricardo entró a esa reunión, el blanco ya era práctica de la casa, y él no tuvo que inventarlo: lo heredó.

Cierre

Cada suma es una afirmación sobre conmensurabilidad. La versión honesta enuncia la afirmación y le pone nombre a la unidad: la Caja Dole, la familia comparable, el estándar acordado. La versión deshonesta, casi siempre por accidente, entierra la afirmación en una columna llamada CANTIDAD y deja que el signo de más decida en nombre de la organización. Una declara. La otra esconde. Las dos devuelven un número con decimales.

El gerente general se convenció. Ese modelo sigue en producción, y la medida sigue escondiendo el valor cuando le piden sumar cosas que no son agregables. Lo cuento no porque sea un final feliz, sino porque el precio de ese final fueron treinta minutos de un consultor explicando significado en vez de dos minutos ajustando una fórmula, y esa cuenta casi siempre se paga al revés.

Tengo que admitir el sesgo, porque a esta altura me estorba: sobre este tema soy necio. Lo he visto tantas veces que me parece obvio, y me cuesta entender que la gente no lo vea. Sé que esa dificultad mía es parte del problema, no de la solución, porque el que llega a una reunión creyendo que algo es obvio no explica: se impacienta. Los treinta minutos de Ricardo funcionaron justamente porque él todavía tenía la paciencia de explicarlo.

Si estás por sumar una columna que se llama CANTIDAD, la pregunta no es si el número va a salir. Va a salir. La pregunta es en qué unidad, y quién firmó que esas cosas eran la misma cosa.

¿Y vos? Si tenés un promedio en producción que nadie ha auditado, mirá el denominador antes de mirar la tendencia. Contame qué encontraste.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *