GuilleSQL :: Microsoft SQL Server, SSIS, y más !! Votar en los Premios Bitacoras.com a Portal GuilleSQL

El Gráfico de Línea de Tiempo (Time Line), el Sudoku de las Fechas

Volver a: [Trabajar con tablas versionadas (Fecha Desde y Fecha Hasta) en SQL Server, Slowly Changing Dimension (SCD) Tipo 2]


Este capítulo describe el Gráfico de Línea de Tiempo, una herramienta de gran utilidad para facilitar la construcción de Consultas SQL sobre tablas versionadas, pudiendo comprobar los distintos casos que pueden producirse para así validar la fiabilidad de nuestro algoritmo (es decir, de nuestra consulta SQL, especialmente las cláusulas WHERE y JOIN). Resulta especialmente útil, cuando necesitamos denormalizar dos tablas versionadas (ambas con sus campos Fecha Desde y Fecha Hasta, caso habitual en entornos de Business Intelligence - BI - y Data Warehouse - DW) y en consultas SQL similares.

En esta capítulo se describe un gráfico de gran utilidad para resolver problemas de consultas SQL sobre tablas versionadas (Fecha Desde y Fecha Hasta), de forma, que resulte más sencilla la construcción de las cláusulas JOIN y WHERE de nuestras consultas SQL al consultar datos actuales o datos históricos sobre nuestras tablas versionadas. Resulta de gran utilidad en entornos de Business Intelligence (BI) y Data Warehouse (DW), principalmente para facilitar el desarrollo de consultas SQL y diseño en Reporting, OLAP (ej: Analysis Services), etc.

Antes de nada, quería poner el ejemplo bancario de las Cuentas Corrientes y los Titulares. En este modelo de ejemplo, se almacenan Cuentas Corrientes en una tabla versionada, de tal modo que en otra tabla versionada se almacenan los Titulares. Ambas tablas están relacionadas, ya que toda Cuenta Corriente tiene un Titular. De hecho, una persona física o jurídica puede ser el Titular de una o varias Cuentas Corrientes. Sin entrar en mayor detalle (que queda fuera del alcance de este Artículo, y tampoco nos aporta mayor riqueza), aprovecho para incluir un gráfico del ejemplo bancario de las Cuentas Corrientes y los Titulares.

Evidentemente, se trata de una relación Padre-Hijo, donde el papel del Padre lo toma la tabla de Titulares, y el papel del Hijo lo toma la tabla de Cuentas Corrientes.

Bien, ahora vamos a empezar a centrarnos en el Gráfico de Línea de Tiempo, para así poder empezar a comprenderlo, y sobre todo, saber interpretarlo.

En el Gráfico de Línea de Tiempo (que se incluye un poco más adelante, en este capítulo), hablaremos en consecuencia de Versiones Hijas y Versiones Padre, de tal modo que:

  • La Versión Hija identifica una versión (es decir, una fila) de la tabla que queremos comparar, de tal modo, que dicha versión tiene como Fecha Desde el día a, y como Fecha Hasta el día b. En consecuencia, las líneas verticales discontínuas de color rojo, representan la Fecha a y la Fecha b. Recordar, que la tabla Hija contiene la Clave Externa que se relaciona con tabla Padre (en particular, se relaciona con la Clave de Negocio de la tabla Padre, se clave sencilla o clave compuesta). En el ejemplo bancario de las Cuentas Corrientes y los Titulares, la tabla Hija será la tabla de Cuentas Corrientes.
  • las Versiones Padres identifican diferentes casos de versiones (filas) de la tabla relacionada, es decir, las versiones existentes en la tabla con la que comparamos. En el ejemplo bancario de las Cuentas Corrientes y los Titulares, la tabla Padre será la tabla de Titulares.

La utilidad de este gráfico, es intentar representas los diferentes casos con que nos podemos encontrar al trabajar con tablas versionadas, especialmente en el caso de tener que denormalizar tablas versionadas. Por ejemplo:

  • Podemos tener una versión en la tabla Hija definida en [a,b), y ninguna versión en la tabla Padre definida para ese intervalo, ya sea porque no existe ninguna versión del Padre relacionada, o porque las versiones del Padre relacionadas que existen están definidas en intervalos fuera de [a,b).
  • Podemos tener una versión en la tabla Hija definida en [a,b), y una versión en la tabla Padre definida para sólo parte de ese intervalo, ya sea porque no existen más versiones del Padre relacionadas, o bien, porque las versiones del Padre relacionadas que existen están definidas en intervalos fuera de [a,b).
  • Podemos tener una versión en la tabla Hija definida en [a,b), y múltiples versiones de la tabla Padre definidas en dicho intervalo.

El hecho de poder representar gráficamente los diferentes casos con que nos podemos encontrar, permite utilizar éste gráfico como una Tabla de la Verdad. Es decir, podemos definir una condición lógica (una expresión de lógica matemática o predicado, que se transformará en una cláusula WHERE y/o JOIN) y comprobar si su comportamiento es satisfactorio para todos los casos que se nos pueden dar (tranquis, que esto se entenderá mejor más adelante, cuando veamos un caso práctico, ahora es suficiente con tener una idea aproximada del gráfico).

Claro está, que para poder aprovechar correctamente éste gráfico, es necesario conocer correctamente el funcionamiento del Modelo de Versionado que se esté utilizando, ya que esto impacta en cómo se graban los datos sobre dichas tablas (es decir, en su contenido), y en consecuencia, impacta en cómo debemos desarrollar nuestras consultas SQL.

Sin más, aprovecho para incluir el Gráfico de Línea de Tiempo:

Tranquis... más adelante en este Artículo, volveremos a hablar de éste Gráfico con algún caso de uso, que hará mucho más fácil su comprensión (y la interpretación de las columnas exp1, exp2, exp3, NI, e ISI). De momento, tan sólo dar paso al siguiente capítulo !

Volver a: [Trabajar con tablas versionadas (Fecha Desde y Fecha Hasta) en SQL Server, Slowly Changing Dimension (SCD) Tipo 2]




Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  623 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160



Archivo

Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.