El problema de COUNT(DISTINCT) en Postgres y la solución con HLL

Descubre cómo HyperLogLog HLL reemplaza COUNT DISTINCT en PostgreSQL para estimar usuarios únicos a gran escala. Aprende instalación de la extensión, parámetros de precisión, ventajas y casos prácticos de DAU y dashboards con buenas prácticas de Q2BSTUDIO.

31 ago 2025 • 6 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

El problema COUNT DISTINCT en Postgres y como HLL lo soluciona. Las consultas exactas con COUNT DISTINCT pueden saturar Postgres a gran escala. HyperLogLog HLL ofrece conteos de distintos ultrarrápidos, diminutos y componibles con un error cercano al 1 por ciento, ahorrando tiempo, CPU y almacenamiento. En Q2BSTUDIO, donde diseñamos aplicaciones a medida y pipelines analíticos de alto rendimiento, hemos adoptado HLL para acelerar métricas como usuarios únicos diarios, conservando precisión práctica y reduciendo costes.

Por que falla el enfoque exacto. Imagina una tabla events con miles de millones de filas y la métrica diaria de usuarios activos DAU. COUNT DISTINCT por grupo necesita ordenar o mantener un hash de todas las claves por ventana, lo que con alta cardinalidad provoca desbordes de memoria y ordenaciones en disco. Incluso con índices, el exacto es costoso a gran escala. Si quieres métricas de tendencia rápidas y aceptas un pequeño error de 0.8 a 2 por ciento, el conteo aproximado es el equilibrio ideal.

Que es HyperLogLog HLL. HLL es una estructura probabilística de cardinalidad que estima el numero de elementos distintos de un conjunto. Es de tamaño fijo, se puede fusionar union y es muy veloz. En Postgres se usa mediante la extensión hll. Ventajas clave: almacenamiento diminuto cientos de bytes a pocos KB por grupo, posibilidad de unir esbozos para sumar días en meses sin datos crudos, y un error predecible y configurable.

Regla de precisión. Error aproximado 1.04 dividido por la raíz cuadrada de m, con m igual a 2 elevado a log2m. Con log2m 14 m 16384, el error es cercano a 0.81 por ciento. Es una configuración muy usada por su excelente relación precisión tamaño.

Instalación. Basta con crear la extensión hll en la base de datos. Asegúrate de instalarla en todos los nodos si usas particionado o sharding.

Funciones básicas en Postgres. 1 hll hash para convertir valores a un hash de 64 bits por ejemplo hll hash text o hll hash integer. 2 hll add agg para agregar muchos hash en un mismo esbozo HLL. 3 hll union y hll union agg para fusionar esbozos. 4 hll cardinality para recuperar el conteo estimado de distintos. 5 hll empty log2m regwidth expthresh sparseon para crear un esbozo vacío con parámetros elegidos.

Un conteo aproximado puntual. En una consulta, calcula hll cardinality de hll add agg aplicada a hll hash text del user id. Es un único paso de agregación que evita ordenar y que usa memoria acotada.

Materializa únicos diarios recomendado. Crea una tabla con day como clave primaria y un campo sketch tipo hll. Para cada día agrega hll add agg de los user id del rango y upsertea. Si el día ya existe, usa hll union entre el esbozo almacenado y el nuevo para mantener consistencia. Consultar DAU es inmediato con hll cardinality del sketch. Los totales mensuales surgen al agrupar por mes con hll union agg sin reescanear eventos crudos.

Elección de parámetros precisión vs tamaño. log2m controla la precisión y el tamaño via numero de registros 2 elevado a log2m. Ejemplos prácticos: log2m 14 m 16384 ofrece error cercano a 0.81 por ciento y tamaño típico alrededor de 1.5 KB. log2m 12 m 4096 ofrece error cercano a 1.6 por ciento y tamaño aproximado de 384 a 512 B. Si necesitas inicializar explícitamente, usa hll empty con log2m 14 regwidth 5 expthresh 0 y sparseon 1 para el modo HLL plus plus con mejor rendimiento en cardinalidades pequeñas. Importante todas las uniones de esbozos requieren la misma configuración de parámetros, mantenla estable en tus tablas.

Actualizaciones incrementales. En flujos de eventos en tiempo real, agrupa por día entrante y haz upsert donde sketch se actualiza con hll union. Alternativamente, usa una vista materializada y refresco concurrente en ventanas horarias. Este patrón permite DAU casi en tiempo real con coste fijo.

Exactitud en la practica. Con log2m 14 obtendrás error relativo cercano a 0.8 por ciento. Para conjuntos muy pequeños la variante HLL plus plus usa modo disperso y conteo lineal manteniendo buena exactitud. Puedes validar empíricamente tomando días de muestra y comparando con COUNT DISTINCT exacto para estimar el error real en tu distribución de datos.

Rendimiento y ahorro de almacenamiento. Las tablas de esbozos son muy pequeñas con reducciones de mas del 90 por ciento frente a agregados crudos. Las consultas sobre HLL son ligeras en CPU y evitan grandes ordenaciones y hashes. Las agregaciones por día semana o mes requieren solo hll union agg sin re agregación de eventos. En entornos de data warehouse son comunes aceleraciones de 10x o mas y ahorros de almacenamiento de un orden de magnitud depende de tu esquema y hardware mide siempre.

Errores comunes a evitar. 1 Consistencia no cambies parámetros de HLL una vez en producción. 2 Hashing siempre hashea el identificador estable por ejemplo user id no atributos mutables. 3 Grupos pequeños en conjuntos diminutos el COUNT DISTINCT exacto puede ser suficiente y exacto. 4 Comunicación explica que son métricas aproximadas y documenta el error esperado para alinear a los equipos.

Pre agregación desde Go opcional. Puedes enviar eventos crudos y dejar a Postgres la agregación, o construir esbozos HLL en Go por partición. Si pre agregas, guarda el sketch como bytea o conviértelo a tipo hll en la ingesta. Esto reduce tráfico y CPU en la base pero complica el pipeline, evalúa según tu caso.

Como lo aplicamos en Q2BSTUDIO. En proyectos de analítica y plataformas de datos para clientes que requieren software a medida y aplicaciones a medida, incorporamos HLL en Postgres para métricas de usuarios únicos, funnels y deduplicación a gran escala. Además, integramos estos datos en tableros de servicios inteligencia de negocio con power bi y plataformas de reporting avanzadas. Si te interesa un enfoque integral de dato a dashboard, visita nuestras soluciones de inteligencia de negocio en Power BI y Business Intelligence. Y si necesitas una capa de captura y procesamiento adaptada a tu caso de uso, te ayudamos con software a medida y aplicaciones a medida.

Mas alla del conteo. Nuestro equipo también diseña soluciones con inteligencia artificial ia para empresas y agentes IA, estrategias de ciberseguridad y pentesting, y arquitecturas de servicios cloud aws y azure, conectando datos transaccionales con analítica operativa y analítica avanzada. Esta visión holística nos permite escalar desde un simple DAU hasta modelos de atribución y pronósticos, manteniendo costes bajo control y cumpliendo requisitos de seguridad.

Conclusión. COUNT DISTINCT exacto es perfecto hasta que llega la escala. HLL te permite cambiar un poco de precisión por enormes ganancias en rendimiento y coste, manteniendo consultas simples y métricas componibles. En nuestra experiencia, pasar métricas de únicos a HLL transforma consultas lentas en operaciones ligeras y predecibles, aptas para cuadros de mando en tiempo real. Si te enfrentas al mismo límite, HLL puede salvar tu base de datos y tu presupuesto.

Palabras clave recomendadas para tu estrategia de posicionamiento aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat