Elección de la granularidad en una columna o tabla en función de los requisitos
Granularidad es una de las decisiones de diseño más críticas que se toman al crear un modelo de datos. Define el nivel de detalle capturado en las tablas y afecta directamente a los costos de almacenamiento, el rendimiento de las consultas y las preguntas analíticas que puede responder. Como ingeniero de datos, la comprensión de la granularidad le ayuda a diseñar tablas que cumplan los requisitos empresariales a la vez que mantiene operaciones eficaces.
En esta unidad se explica qué significa granularidad en el contexto del modelado dimensional y cómo evaluar diferentes opciones de granularidad en función de los requisitos de la organización.
Comprender qué granularidad representa
Granularidad, a veces denominada "grano", describe el nivel de detalle que representa cada fila de una tabla. En una tabla de hechos, la granularidad determina qué evento empresarial o medida captura cada fila. En una tabla de dimensiones, el grano determina cómo se representan y versionan las entidades.
Considere un escenario de datos de sensor de IoT. Puede diseñar la tabla de hechos en diferentes niveles de granularidad:
Granularidad de nivel de milisegundos: cada fila representa una sola lectura de sensor capturada en el nivel de milisegundos. Esto captura la información más detallada, incluidas marcas de tiempo precisas, valores de sensor e identificadores de dispositivo para cada medida.
Segunda granularidad agregada: cada fila representa el valor medio, mínimo o máximo del sensor para un dispositivo por segundo. Las lecturas individuales se resumen en estadísticas por segundo.
Granularidad agregada por minuto: cada fila representa estadísticas de sensor agregadas para un dispositivo durante un minuto completo. Esto proporciona el mínimo detalle, pero requiere el almacenamiento mínimo.
El grano que elija afecta todo lo que viene posteriormente. Una vez que pierdes el detalle mediante la agregación, no puedes recuperarlo. Si la tabla agregada por minutos muestra que el sensor X tenía una temperatura media de 75°C durante un minuto específico, no puede determinar qué milisegundos tenían picos de temperatura o identificar el momento exacto en que se produjo una anomalía.
Evaluar factores que influyen en las decisiones de granularidad
La elección de la granularidad adecuada requiere equilibrar varios problemas de competencia. La elección adecuada depende de su contexto empresarial específico y de las restricciones técnicas.
Los requisitos del negocio marcan la pauta
Las preguntas analíticas que su organización debe responder deben ser el factor principal para determinar la granularidad. Pregúntese: ¿Cuál es el nivel de análisis más detallado necesario?
Si los ingenieros de operaciones necesitan detectar anomalías de equipos en el nivel de milisegundos, los agregados por minuto no serán suficientes. Si la administración solo necesita resúmenes de uso por hora por línea de producción, almacenar todas las lecturas de sensores es un desperdicio de recursos.
Considere estos escenarios:
| Requisito empresarial | Granularidad mínima necesaria |
|---|---|
| Detección de anomalías de vibración de equipos en tiempo real | Nivel de evento en milisegundos |
| Análisis de tendencias de temperatura para el mantenimiento predictivo | Segundo nivel de agregado |
| Supervisión del consumo de energía por hora por dispositivo | Nivel de agregación a nivel de minutos |
| Notificar métricas diarias de producción por instalación | Nivel de agregado por hora |
Los patrones de consulta influyen en el rendimiento
La forma en que los usuarios consultan los datos influyen en la granularidad óptima. Cuando las consultas normalmente filtran y agregan a niveles superiores, el almacenamiento de datos demasiado específicos crea una sobrecarga de procesamiento innecesaria. Cada consulta debe examinar y agregar más filas de las que son necesarias.
Al mismo tiempo, el almacenamiento de datos demasiado gruesos impide que los usuarios exploren en profundidad para responder a preguntas detalladas. La búsqueda del equilibrio requiere comprender los patrones de consulta actuales y previstos.
Los costos de almacenamiento y cálculo se acumulan
La granularidad más fina significa más filas, lo que aumenta los costos de almacenamiento. También aumenta los costos de proceso porque las consultas deben procesar más datos. En Azure Databricks, estos costos se combinan con el tiempo a medida que se acumulan datos históricos.
Una instalación de fabricación con miles de sensores que capturan lecturas a intervalos milisegundos podría generar miles de millones de filas diariamente en la mejor granularidad. La agregación a estadísticas por segundo o por minuto podría reducir los recuentos de filas en 99% o más, lo que se traduce directamente a reducir los costos de almacenamiento y consulta.
Cuestión de requisitos de cumplimiento y auditoría
A veces, los requisitos normativos exigen niveles de granularidad específicos. Las organizaciones de servicios financieros a menudo deben conservar los detalles de nivel de transacción con fines de auditoría, independientemente de los costos de almacenamiento. Es posible que las organizaciones sanitarias necesiten realizar un seguimiento de las interacciones individuales de los pacientes por motivos de cumplimiento.
Cuando el cumplimiento impulsa la decisión de granularidad, documente claramente los requisitos. Esta justificación ayuda cuando las partes interesadas preguntan por qué está almacenando más detalles que las necesidades analíticas por sí solas requerirían.
Aplicación de granularidad a tablas de hechos
Las tablas de hechos se benefician de la mayoría de las decisiones de granularidad cuidadosas porque normalmente contienen los volúmenes de datos más grandes. El grano de una tabla de hechos viene determinado por la combinación de sus claves de dimensión.
Una tabla de hechos de ventas con claves de dimensión para fecha, producto, cliente y almacén tiene un grano de "una fila por producto por cliente por almacén por día". Cada combinación única de estos valores de dimensión crea una fila distinta. Agregar una clave de dimensión de tiempo a nivel de hora cambiaría el grano a "una fila por producto por cliente por tienda por hora", lo que aumentaría significativamente el número de filas.
Importante
Declare el grano de su tabla de hechos explícitamente antes de agregar cualquier columna. La declaración de grano actúa como un contrato que guía todas las decisiones de diseño posteriores. Por ejemplo: "Esta tabla de hechos contiene una fila por cada línea de artículo del pedido de venta".
Al diseñar tablas de hechos, tenga en cuenta si necesita:
Grano atómico: el nivel más detallado capturado en el sistema de origen. Elegir grano atómico proporciona máxima flexibilidad analítica porque siempre se puede agregar hacia arriba, pero nunca desagregar hacia abajo.
Grano agregado: datos resumidos previamente en un nivel superior que la fuente. Las tablas de hechos agregadas mejoran el rendimiento de las consultas para patrones analíticos comunes, pero limitan las preguntas que los usuarios pueden responder.
Muchas organizaciones mantienen tablas de hechos atómicas y agregadas, usando tablas agregadas como optimización del rendimiento, a la vez que conservan los detalles atómicos para el análisis ad hoc. En Azure Databricks, las vistas materializadas pueden mantener automáticamente estas tablas agregadas y actualizarlas a medida que cambian los datos atómicos subyacentes.
Aplicación de granularidad a tablas de dimensiones
Las tablas de dimensiones también tienen un grano, aunque funciona de manera diferente al grano de la tabla de hechos. El grano de la dimensión determina cómo se representan y versionan las entidades de negocio.
Para una dimensión de cliente, puede elegir:
- Una fila por cliente: el estado actual de cada cliente, actualizado en su lugar cuando cambian los atributos (SCD Type 1).
- Una fila por cliente por versión: una nueva fila para cada cambio significativo, conservando los estados históricos (TIPO 2 de SCD).
- Una fila por cliente por período de tiempo: instantáneas periódicas que capturan atributos de cliente a intervalos regulares.
El grano de dimensión que elija debe alinearse con el grano de su tabla de hechos. Si su tabla de hechos rastrea transacciones individuales con claves sustitutas para la dimensión del cliente, el grano de la dimensión del cliente debe respaldar esa relación. Una transacción que haga referencia a la versión 5 del cliente debe ser capaz de encontrar esa versión específica en la tabla de dimensiones.
Equilibrar las compensaciones al seleccionar la granularidad
Ninguna opción de granularidad única es universalmente correcta. Cada decisión implica inconvenientes que debe evaluar con respecto a sus requisitos específicos.
| Consideración | Granularidad fina | Granularidad gruesa |
|---|---|---|
| Flexibilidad analítica | Alto: puede responder a preguntas detalladas | Bajo: limitado al análisis agregado |
| Costos de almacenamiento | Más alto: más filas para almacenar | Inferior: menos filas |
| Rendimiento de las consultas | Más lento para las consultas de agregado | Más rápido para patrones comunes |
| Análisis histórico | Admite el análisis en un momento específico. | Puede perder detalles históricos |
| Soporte para el cumplimiento normativo | Mejor para los requisitos de auditoría | Puede que no cumpla con las regulaciones |
Cuando no estás seguro, empezar con una granularidad más fina suele ser más seguro. Siempre puede crear tablas de agregado más adelante para la optimización del rendimiento, pero no puede recuperar detalles que nunca se capturaron. Esta guía, sin embargo, asume que usted cuenta con el presupuesto y la infraestructura para admitir un almacenamiento más detallado desde el principio.
Comprender cómo elegir la granularidad adecuada le permite diseñar modelos de datos que admitan las necesidades analíticas de su organización a la vez que administran los costos de forma eficaz. Los detalles de implementación para compilar y cargar tablas en la granularidad elegida en Azure Databricks se tratan en unidades posteriores.