Zero-Cost NDV Estimation from Columnar File Metadata

Este artículo presenta un método de costo cero para estimar el número de valores distintos (NDV) en archivos de formato columnar utilizando únicamente metadatos existentes, combinando la inversión de la ecuación de almacenamiento codificado por diccionario y un modelo de recolector de cupones para optimizar consultas y la asignación de memoria sin acceder a los datos ni requerir almacenamiento adicional.

Claude Brisson

Publicado 2026-03-27
📖 5 min de lectura🧠 Análisis profundo

Each language version is independently generated for its own context, not a direct translation.

Imagina que tienes una biblioteca gigante llena de libros (tus datos) organizados en estanterías (archivos de datos). Quieres saber cuántas palabras únicas hay en total en toda la biblioteca para planificar cómo organizar una fiesta de lectura, pero no tienes tiempo ni permiso para abrir ni un solo libro. Solo puedes mirar las etiquetas en las esquinas de las estanterías.

Normalmente, para saber cuántas palabras únicas hay, tendrías que leer todo el contenido, lo cual es lento y costoso. Este paper propone un "truco de magia" para adivinar ese número sin abrir ni una sola página, usando solo la información que ya está escrita en las etiquetas de los archivos.

Aquí te explico cómo funciona, usando analogías sencillas:

El Problema: La Etiqueta "Contar Distintos" está Vacía

En el mundo de los datos (formatos como Parquet), a veces hay una etiqueta que dice "Número de valores únicos". Pero, como contar exactamente es muy difícil y lento, la mayoría de las veces esa etiqueta está en blanco. Los creadores de los archivos no la llenan.

El autor se preguntó: "¿Qué otra información tengo en estas etiquetas que pueda usarse para adivinar?" Y encontró dos pistas ocultas.


Pista 1: El Tamaño de la "Lista de Vocabulario" (Inversión del Diccionario)

Imagina que en cada estantería hay un pequeño diccionario con las palabras que aparecen en esa sección.

  • Si la estantería tiene 1000 páginas, pero solo usa 5 palabras diferentes, el diccionario es pequeño y las páginas son cortas (porque solo guardan números que apuntan al diccionario).
  • Si usa 900 palabras diferentes, el diccionario es enorme y las páginas son más largas.

La Magia: El archivo guarda el tamaño total de este diccionario y de las páginas.
El autor dice: "Si sé cuánto pesa el diccionario y cuántas páginas hay, puedo hacer una ecuación matemática al revés para deducir cuántas palabras únicas hay".

  • Cuándo funciona: Cuando las palabras están mezcladas de forma uniforme en todas las estanterías (como una ensalada bien revuelta).
  • El truco: Es como adivinar cuántas personas hay en una fiesta solo midiendo el peso de la bolsa de globos que todos tienen, sin contar a nadie.

Pista 2: Los "Extremos" de cada Estantería (La Colección de Cupones)

Cada estantería tiene una etiqueta que dice: "Aquí la palabra más pequeña es 'A' y la más grande es 'Z'".
Si tienes 50 estanterías, tienes 50 pares de "A" y "Z".

La Magia:

  • Si los datos están ordenados (como un diccionario real), la estantería 1 tendrá de la A a la F, la 2 de la G a la L, etc. Al mirar los extremos, verás muchas letras diferentes.
  • Si los datos están mezclados, la estantería 1 podría tener de la A a la Z, y la estantería 2 también de la A a la Z. Los extremos se repetirán mucho.

El autor usa un modelo matemático famoso llamado "El problema del coleccionista de cupones". Imagina que cada estantería te da un "cupón" (su palabra más pequeña y su más grande).

  • Si ves muchos cupones diferentes, significa que hay muchas palabras únicas en total.
  • Si ves los mismos cupones una y otra vez, significa que hay pocas palabras únicas.

Cuándo funciona: Cuando los datos están ordenados o divididos por temas (como un diccionario o archivos separados por año). Aquí, la Pista 1 falla, pero la Pista 2 es perfecta.


El Árbitro Inteligente: ¿Cuál pista usar?

El sistema tiene un pequeño "detective" que mira las etiquetas de las estanterías para decidir qué pista es más confiable:

  1. ¿Las estanterías se superponen mucho? (¿Todas tienen de la A a la Z?) -> Usa la Pista 1 (Tamaño del diccionario).
  2. ¿Las estanterías son diferentes y progresivas? (¿Una tiene A-F, otra G-L?) -> Usa la Pista 2 (Extremos/Cupones).

Al final, el sistema toma la mayor de las dos estimaciones. ¿Por qué? Porque es mejor sobreestimar un poco que quedarse corto. Si una dice 100 y la otra 1000, es muy probable que la realidad esté cerca de 1000.

¿Para qué sirve esto? (La Fiesta de Lectura)

Imagina que eres el organizador de la fiesta (un motor de consulta de datos en una computadora). Necesitas saber cuántos valores únicos hay para:

  • Saber cuánta memoria necesitas: Si hay muchas palabras únicas, necesitas más espacio en la mesa para organizarlas.
  • Decidir el orden de las tareas: Saber cuántas cosas únicas hay ayuda a decidir qué tarea hacer primero para que la fiesta sea más rápida.

El beneficio: Antes, para saber esto, tenías que abrir los libros (leer los datos), lo cual tomaba mucho tiempo. Ahora, solo miras las etiquetas (metadatos) y tienes una respuesta casi perfecta en una fracción de segundo. Es gratuito (Zero-Cost) y rápido.

Resumen en una frase

El paper nos enseña a leer entre líneas de las etiquetas de los archivos de datos para adivinar cuántas cosas únicas hay dentro, usando dos trucos matemáticos (el tamaño del diccionario y la variedad de los extremos) y un pequeño juez que decide cuál truco usar según cómo estén organizados los datos. Todo esto sin tocar ni un solo dato real.