Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Wiki Markup
{scrollbar}

Las tablas locales se han incorporado para simplificar la extracción de datos y mejorar el desempeño durante la construcción de datamarts. Esto resuelve los problemas resultantes del uso de consultas complejas en bases de datos transaccionales que pueden dar malos resultados.

...

Este es un ejemplo del uso de una tabla local para simplificar una consulta SQL. La técnica de extracción de datos utilizada para este ejemplo sencillo, también es aplicable a casos más complejos.

La siguiente consulta debe hacerse para la fuente de medidas de un modelo multidimensional de análisis:

Code Block

SELECT F.Fecha, I.CodProducto, R.Representantes, C.Ramo, I.Cantidad
FROM Facturas F, Items I, Productos P, Representantes R, Clientes C
WHERE F.Numero = I.NroFactura
AND F.Emitida = TRUE
AND F.Tipo = 2
AND F.CodCliente = C.CodCliente
AND I.CodProducto = P.CodProducto
AND P.TipoProducto = R.TipoProducto
AND C.CodCliente = R.CodCliente
AND R.FechaValidez = (SELECT MAX(R2.FechaValidez)
                      FROM Representantes R2
                      WHERE R2.TipoProducto = R.TipoProducto
                      AND R2.CodCliente = R.CodCliente)

...

(K) indica el campo clave de la tabla local.

Tabla 1

Nombre

Clientes

Consulta

SELECT CodCliente, Ramo
FROM Clientes

Campos

CodCliente (K)
Ramo

Tabla 2

Nombre

Representante

Consulta


Code Block
SELECT R.CodCliente, R.Representante, P.CodProductoFROM Representante R, Productos P
WHERE P.TipoProducto = R.TipoProducto
AND R.FechaValidez = (SELECT MAX(R2.FechaValidez)
                               FROM Representante R2
                               WHERE R2.CodCliente = R.CodCliente
                               AND R2.TipoProducto = R.TipoProducto)


Campos

CodCliente (K)
CodProducto (K)
Representante


Luego se deben definir los siguientes campos virtuales:

Code Block

Ramo = BuscarCampo("Clientes", "Ramo", CodCliente)
Rep = BuscarCampo("Representantes", "Representante", CodCliente, CodProducto)

Y sustituir la consulta SQL de fuente de medidas por la siguiente consulta:

Code Block

SELECT F.Fecha, I.CodProducto, I.Cantidad, F.CodCliente
FROM Facturas F, Items I
WHERE F.Numero = I.NroFactura AND F.Emitida = TRUE AND F.Tipo = 2

...

  • Cada tabla local se construye desde una sola fuente de datos.
  • Es necesario tener al menos dos campos en la tabla local, uno de clave y otro como campo a buscar
  • Se debe definir al menos un campo como clave en una tabla local. Las claves pueden ser múltiples, en cuyo caso el orden en que aparecen los campos es importante y coincide con el orden en que se pasan los parámetros de la función "BuscarCampo" en los Campos Virtuales
  • Marque la casilla "Solo para Tabla" para indicar que la fuente de datos se usa solamente para la creación de la tabla local y no se usan datos directamente para la construcción de cubos.

...

...

Child pages (Children Display)