Conformed dimensions y bus matrix: el mapa que evita que tus dashboards se contradigan
En cualquier proyecto de Business Intelligence que escale más allá de un simple informe departamental, surge un problema inevitable: la discrepancia de cifras. El departamento de Ventas reporta un número de clientes activos, mientras que Marketing maneja otro totalmente distinto. Esta fricción no suele deberse a un error en el DAX ni a una mala extracción de datos, sino a una arquitectura de dimensiones inconsistente. Sin una dimensión conforme, cada área de la empresa termina construyendo su propia versión de la verdad.
Como consultores, nuestro trabajo no es solo escribir medidas eficientes, sino garantizar que el modelo de datos sea robusto. La solución técnica a este caos es la implementación de una Bus Matrix (matriz de bus) basada en la metodología de Ralph Kimball. Es el plano que define qué dimensiones comparten los distintos procesos de negocio. Si no tienes este mapa, estás construyendo silos de datos que, tarde o tarde, obligarán a los usuarios a volver al Excel para «cuadrar los números».
En este artículo analizaremos cómo diseñar estas dimensiones, por qué la Bus Matrix es tu mejor herramienta de gobernanza y cómo implementarlo técnica y culturalmente en organizaciones que usan Power BI y tecnologías como Microsoft Fabric.
¿Qué es realmente una dimensión conforme?
Una dimensión conforme es una tabla maestra que tiene el mismo significado, la misma estructura y las mismas claves primarias para todas las tablas de hechos (Fact tables) a las que se conecta. No basta con que dos tablas se llamen «Producto»; deben compartir la misma Surrogate Key (clave subrogada) y el mismo nivel de detalle o granularidad.
En la práctica, esto significa que si filtras el informe por el atributo «Categoría de Producto», ese filtro debe afectar de forma idéntica a la tabla de FactVentas, a la de FactInventario y a la de FactPresupuesto. Si cada una de estas tablas usa una versión distinta de la dimensión producto (por ejemplo, una extraída del ERP y otra de un CRM), el análisis cruzado o drill-across es imposible. El resultado es que nunca podrás comparar las ventas reales contra el stock disponible de forma fiable.
Existen tres niveles de conformidad en una dimensión:
- Identidad total: La misma tabla física (o vista SQL) se utiliza para múltiples procesos de negocio. Es el escenario ideal.
- Subconjunto conforme: Una dimensión más pequeña que contiene solo algunos de los atributos de la dimensión maestra, pero mantiene la integridad de las claves.
- Granularidad distinta: Cuando una dimensión de tiempo llega a nivel de día para ventas, pero el presupuesto solo está a nivel de mes. Aquí la conformidad reside en que los niveles superiores (Mes, Trimestre, Año) sean idénticos en ambos procesos.
La Bus Matrix: El plano de tu edificio de datos
La Bus Matrix es una herramienta de planificación, no un objeto técnico en la base de datos. Es una matriz donde las filas representan los procesos de negocio (que se convertirán en tablas de hechos) y las columnas representan las dimensiones. Cada intersección marcada indica que ese proceso de negocio debe ser filtrable por esa dimensión específica.
| Proceso de Negocio / Dimensión | Calendario | Cliente | Producto | Geografía | Empleado |
|---|---|---|---|---|---|
| Ventas (Pedidos) | X | X | X | X | X |
| Inventario (Stock) | X | X | X | ||
| Presupuestos (Budget) | X | X | X | ||
| Reclamaciones (Soporte) | X | X | X | X |
Diseñar esta matriz antes de tocar una sola línea de código en Power Query o SQL evita el retrabajo. Si el equipo de soporte decide que necesita analizar las reclamaciones por «Geografía», y esa dimensión ya existe para Ventas, sabemos exactamente que debemos reutilizar la misma clave y estructura. Esto garantiza que, al usar la función VALUES o DISTINCT en un informe, los resultados sean consistentes entre departamentos.
El coste de ignorar la conformidad: Silos y desconfianza
Cuando cada área crea su propia dimensión de cliente, ocurren tres desastres técnicos que arruinan cualquier proyecto de BI:
- Lógica duplicada: Si hay que cambiar un atributo (por ejemplo, reagrupar sectores industriales), hay que hacerlo en N tablas distintas. El riesgo de error humano es altísimo.
- Incapacidad de realizar Drill-Across: No puedes crear un gráfico que combine medidas de dos tablas de hechos distintas si los ejes (dimensiones) no son compartidos. Power BI creará una relación de muchos a muchos o simplemente ignorará el filtro.
- Confusión en el DAX: Los desarrolladores terminan abusando de la función CALCULATE para forzar filtros entre tablas que no están relacionadas correctamente, lo que degrada el rendimiento y hace que el modelo sea inmantponible.
A menudo, el problema reside en que no se distingue entre columnas calculadas y medidas a la hora de estructurar estas dimensiones. Las dimensiones deben ser estables y su lógica de negocio debe residir, preferiblemente, en la capa de transformación de datos (SQL o Dataflows) y no mediante columnas calculadas pesadas en el modelo.
Implementación técnica: De la vista SQL al modelo en Power BI
Para implementar dimensiones conformes, mi recomendación es centralizar la lógica en vistas de SQL o en Dataflows de Power BI si no dispones de un Data Warehouse tradicional. El objetivo es que el ID de la dimensión sea el mismo para todos los hechos.
-- Ejemplo de Dimensión Conforme de Producto centralizada
CREATE VIEW dw.Dim_Producto AS
SELECT
CAST(ISNULL(p.ProductID, -1) AS INT) AS ProductoSK, -- Clave subrogada
p.ProductCode AS CodigoNatural,
p.ProductName AS NombreProducto,
c.CategoryName AS Categoria,
sc.SubCategoryName AS Subcategoria
FROM stg.ERP_Products p
LEFT JOIN stg.ERP_Categories c ON p.CategoryID = c.CategoryID
LEFT JOIN stg.ERP_SubCategories sc ON p.SubCategoryID = sc.SubCategoryID;En el lado de las tablas de hechos, debemos asegurar que la clave foránea apunte siempre a esa ProductoSK. Si trabajamos en entornos modernos, podemos usar Microsoft Fabric para compartir estas dimensiones mediante shortcuts entre distintos Lakehouses, evitando la duplicación física del dato pero manteniendo la conformidad.
Un error común es intentar «limpiar» la dimensión en cada tabla de hechos por separado. Si la tabla de ventas tiene productos que no aparecen en la tabla de inventario, la dimensión de producto debe contener la unión de ambos, gestionando los nulos adecuadamente. De lo contrario, al filtrar por un producto exclusivo de ventas, la tabla de inventario fallará o mostrará resultados incoherentes.
Dimensiones con rol (Role-Playing) y conformidad parcial
Un caso especial de dimensión conforme es la de Calendario. Es la dimensión conforme por excelencia. Sin embargo, a menudo una sola tabla de hechos tiene varias fechas (Fecha de pedido, Fecha de envío, Fecha de pago). Aquí aplicamos el concepto de Role-Playing Dimensions.
Aunque físicamente es la misma dimensión conforme, en el modelo de Power BI se comporta como varias tablas. Podemos manejar esto mediante relaciones inactivas y el uso de USERELATIONSHIP, o mediante vistas que referencian a la misma tabla maestra. Lo importante es que los atributos (Mes, Año, Festivos) sean idénticos.
-- Uso de dimensión conforme de fecha con roles en DAX
Importe Envios =
CALCULATE(
[Total Ventas],
USERELATIONSHIP('FactVentas'[FechaEnvioKey], 'DimCalendario'[FechaKey])
)Este enfoque permite que, al usar la función CALCULATE, el contexto de filtro sea predecible y consistente. Sin conformidad en la fecha, comparar el presupuesto mensual con las ventas diarias se convierte en una pesadilla de alineación de granularidad.
Checklist para tu próxima auditoría de arquitectura
- ¿Existe una única fuente de verdad para la dimensión Cliente y Producto en toda la organización?
- ¿La Bus Matrix está documentada y aprobada por los dueños de los procesos de negocio?
- ¿Todas las tablas de hechos utilizan la misma Clave Subrogada (SK) para referenciar a la misma dimensión?
- ¿Se han gestionado los miembros «Desconocidos» o «No aplica» en las dimensiones para evitar filas en blanco en las relaciones?
- ¿El equipo de desarrollo sabe que no debe crear dimensiones locales dentro de sus informes específicos?
Preguntas frecuentes
¿Qué pasa si dos departamentos tienen granuralidades distintas para el mismo dato?
Se debe crear la dimensión conforme al nivel más fino (detalle) y permitir que el departamento con menor granularidad use los niveles superiores de la jerarquía. La clave es que esos niveles superiores (ej. Región > País) sean compartidos y tengan los mismos nombres y códigos.
¿Es mejor usar una sola dimensión gigante o varias pequeñas?
Depende del uso. Si los atributos están altamente relacionados (ej. Cliente y su dirección), únelos. Pero no mezcles dimensiones distintas como «Empleado» y «Departamento» en una sola tabla solo por ahorrar espacio; eso rompe la claridad de la Bus Matrix y dificulta el mantenimiento.
¿Cómo convencer a negocio de invertir tiempo en la Bus Matrix?
Muestra el coste del error. Presenta dos informes que deberían dar el mismo número y no lo dan. Explica que la Bus Matrix no es un ejercicio académico, sino el seguro de vida para que la dirección de la empresa tome decisiones basadas en datos ciertos, no en interpretaciones locales.
Resumen de estrategias
| Estrategia | Cuándo usarla | Ventaja principal |
|---|---|---|
| Dimensión Centralizada | Siempre que sea posible. | Consistencia absoluta y mantenimiento mínimo. |
| Vistas de Conformidad | Cuando el origen de datos es heterogéneo. | Abstrae la complejidad del origen del modelo de Power BI. |
| Subconjuntos Conformados | Modelos muy grandes con hechos que solo usan parte de la dimensión. | Rendimiento mejorado sin romper la integridad. |
Dominar la arquitectura de dimensiones conformes es lo que separa a un visualizador de datos de un arquitecto de Business Intelligence. No te limites a conectar tablas; diseña el ecosistema que permitirá a tu empresa crecer sin que sus datos se vuelvan su peor enemigo.


