En las siguientes líneas vamos a abordar dos aspectos importantes de las tablas de Dimensión de un DataMart o un DWH. Ambos aspectos se refieren a las claves de las dimensiones: Claves Surrogadas y Claves Primarias.

Si habéis trabajado con Data o modelos DWH multidimensionales, os habréis encontrado en alguna ocasión con el término Clave Surrogada la cual se puede definir como la clave sustituta de una clave natural de una tabla (en nuestro caso Dimensión). La definición de este concepto es fundamental a la hora de crear dimensiones en un entorno data warehouse.

En un DWH el concepto cambia un poco, es algo más que una clave sustituta de una clave natural (natural key). Se puede ver como una generalización de una clave natural y como uno de los elementos básicos en el diseño de un data warehouse. Cada join que se hace entre tablas de dimensión y fact tables en un data warehouse debería hacerse con la claves subrogadas en lugar de con claves naturales. Toda esta lógica debería hacerse en el ETL que carga los datos directamente de los orígenes.

Es decir, cuando tengamos una dimensión producto, una dimensión clientes, incluso también una dimensión Fecha, no se debería hacer el cruce o joins con la fact table, a través de claves naturales derivadas del origen, sino a través de claves subrogadas. Cada una de estas claves subrogadas, deberían ser números enteros comenzando por el 1 e ir creciendo hasta el mayor número generado en función de los datos. Incluso la clave de la dimensión fecha, debería ser un simple integer (en formato canónico yyyymmdd). Estas claves subrogadas no deberían ser ninguna de las siguientes cosas:

  • Ser una clave inteligente, es decir, que informe de algo de cada registro (con la excepción de una date-valued key)
  • Compuestas de natural keys todas juntas.
  • Implementada como varias joins paralelas, entre la dimensión y la fact table.

Esto puede parecer horrible para profesionales no experimentados, pero hay que tener en cuenta que las claves de las tablas de dimensión, tienen que ser generalizaciones de las claves naturales. Como diseñador de Data warehouse debes aislar las claves de dimensión de las claves naturales derivadas de los orígenes de datos. Las claves naturales pueden ser formateadas, actualizadas, borradas,recicladas, reutilizadas, por lo que en las sucesivas cargas podemos tener cambios inesperados en nuestro procesos que modifiquen las claves de nuestras dimensiones, por este motivo hay que crear claves subrogadas independientes de las claves naturales de los orígenes de datos.

Aquí presento algunos puntos importantes por los que se debe utilizar claves subrogadas:

  1. El entorno de producción, puede reutilizar las claves por una purga de las mismas, sin embargo, en tu data pueden existir hasta que se decida borrarlas.
  2. Los sistemas de producción pueden tener errores y reutilizar las keys, incluso. Esto ocurre con cierta frecuencia en el mundo de los códigos universales de producto (UPCs, Universal Product Codes).
  3. Sistemas de Producción pueden sobreescribir partes de los productos o descripciones con valores nuevos, pero no cambiar la clave del producto con un nuevo valor.
  4. Los Sistemas de Producción pueden generalizar el formato de la clave para asumir nuevas situaciones en los transaccionales.
  5. Los sistemas transaccionales asumen cambios concretos, en un sistema de DWH debes tratar millones de registros en el que se traten todos los casos particulares en generalizaciones.

Una vez dicho esto, irremediablemente, hay un nuevo concepto en el aire que estudiaremos en sucesivos capítulos. Slow Changing Dimension (SCD). Este nuevo concepto cubrirá todos los aspectos explicados anteriormente en cuanto a dimensiones.