Open Business Intelligence

La red del Business Intelligence

Objetivo:
* Crear una transformación, que extraiga los datos desde un oltp y los almacene en el Data Warehouse.
* Utilizar los id secuenciales creados en el tutorial anterior.
* Crear un trabajo.


Requisitos:
* Haber leído [Tutorial 03].


Pasos generales:

1) Crear Transformación para poblar DW_VentasFact:
Crear una nueva Transformación y llamarla: “DW_VentasFact – Load Datawarehouse”.

2) Crear pasos:
2.1)
Añadir a la zona de trabajo el paso: Entrada → Entrada Tabla
Acceder al paso.
Crear y probar la conexión a la base de datos “intermedio”.
Pegar la siguiente consulta y previsualizar los datos:

SELECT
c.fecha
,ic.idNuevo as idCliente
,iv.idNuevo as idVendedor
,ip.idNuevo as idProducto
,sum(d.cantidad) as cantidad
,sum(d.cantidad*p.precio) as importe
FROM
facturacabecera c
INNER JOIN facturadetalle d ON c.idFactura=d.idFactura
INNER JOIN productos p ON d.idProducto=p.idProducto
INNER JOIN ids_Clientes ic ON ic.idCliente = c.idCliente
INNER JOIN ids_Vendedores iv ON iv.idVendedor = c.idVendedor
INNER JOIN ids_Productos ip ON ip.idProducto = d.idProducto
WHERE
c.anulada=0
GROUP BY
c.fecha, ic.idNuevo, ic.idNuevo, ip.idNuevo;


Presionar Aceptar.


2.2)
Añadir a la zona de trabajo el paso: Salida → Salida Tabla
Unir el paso del punto 2.1 con este paso.
Acceder al paso.
La conexión será a “datawarehouse”, la tabla destino “DW_VentasFact” y se tildará la opción vaciar tabla.
Presionar Aceptar.

Si han seguido los pasos correctamente, deberían obtener el siguiente resultado:



3) Crear un Trabajo:
3.1)
Crear un nuevo Trabajo y llamarlo: “Load Datawarehouse”.

3.2)
Arrastrar a la zona de trabajo, configurar y realizar las uniones pertinentes de los pasos necesarios para crear lo siguiente:


3.3)
Ejecutar el Trabajo.


Espero les sea útil.
Saludos.

Visitas: 11102

Respuestas a esta discusión

no hay ningún problema

Hola maricela.

La tabla ids_Clientes tiene dos campos, uno es la clave de la dimensión clientes y el otro es la clave del origen OLTP. Es por ello que si posees la clave del OLTP y realizas una búsqueda en la tabla ids_Clientes, podrás obtener cual es la clave de la dimensión.

En cambio, las tablas de dimensiones solo poseen su propia clave principal, con lo cual no puedes relacionarlas directamente con una clave OLTP.

 

Saludos.

parece que entendi.. cuando en este paso tu dices eso: En la pestaña actual (Selecciona & Modifica), seleccionar los siguientes campos:
___Nombre Campo | Renombrar a:
___* idNuevo | idCliente( sino pongo aqui idCliente que pasa porque esto me confunde y pareciera que fuera el id cliente del OLTP)
___* Cliente
___* Zona
___* cuentaHabi | cuentaHabilitada, aqui estan creando el nuevo idcliente para esta dimension, y al momento de crear ids_clientes cogerias el idCliente del OLTP y este nuevo cliente verdad?  caso que al llenar la tabla de hecho coges el idnuevo de IDclientes y le haces join con tu campo de la cabecera factura..asi entendi o estoy mal?
disculpa otra preguntita como hago en el ETL  o que no mas uso para que en mi dimension no hayan datos repetidos porque en mi tabla original osea en el oltp tengo datos repetidos

Buen día maricela, te respondo:

* Exactamente, al utilizar el paso "Selecciona & Modifica" lo que haces es almacenar la clave subrogada "idNuevo" que se creó exclusivamente para el DW, en la tabla de dimensión. "IdNuevo" se renombra a "idCliente", ya que es el nombre de campo que espera el paso posterior para cargar la tabla de dimensión.

 

* PDI cuenta con muchos pasos/entradas que puedes utilizar para limpiar tus datos, dependiendo de lo que quieras hacer. Si tienes alguna duda en particular que quieras resolver, crea una nueva discusión en este grupo detallando la situación.

 

Saludos

una pregunta que aun no me cuadra algo?

este c.idNuevo es el secuencial nuevo creado verdad, hasta ahi entiendo pero a lo que hace INNER JOIN ids_Clientes ic ON ic.idCliente = c.idCliente ese idNuevo si es un nuevo codigo, en el encabezado de factura su idcliente este no tendria almacenado otro valor lo que entiendo es que estaria comparando asi por ejemplo

id_nuevo = idcliente(del encabezado tendria otro valor?)

1 =001 o me equivoco..

Buenas.

En el SELECT se utiliza "ic.idNuevo" que es la clave subrogada que creamos anteriormente, y el JOIN se realiza entre la tabla del OLTP "Cliente" y la tabla "ids_Clientes", para obtener este "ic.idNuevo".

 

Saludos.

Estimado, sabes donde puedo sacar el script para cargar la dimension de tiempo en la BD datawarehouse?. 

Gracias,

La copio:

CREATE TABLE `practico`.`dw_tiemposlookup` (
`fecha` date NOT NULL,
`anio` int(11) NOT NULL,
`semestre` int(11) NOT NULL,
`trimestre` int(11) NOT NULL,
`bimestre` int(11) NOT NULL,
`mesNumero` int(11) NOT NULL,
`mesLetra` varchar(15) NOT NULL,
`semanaMes` int(11) NOT NULL,
`diaSemanaNumero` int(11) NOT NULL,
`diaSemanaLetra` varchar(15) NOT NULL,
`estacion` varchar(10) NOT NULL,
PRIMARY KEY (`fecha`)

Mariano, gracias por tu pronta respuesta.

Ese script lo tengo, el tema es el script de carga de datos. Seguí el manual pero no lo encontré por ningún lado. Quizás la unica manera es adecuar a nivel de cada columna otros script de cargas.

Nuevamente te agradezco de tu pronta ayuda.

Saludos,


Mariano García Mattío dijo:

La copio:

CREATE TABLE `practico`.`dw_tiemposlookup` (
`fecha` date NOT NULL,
`anio` int(11) NOT NULL,
`semestre` int(11) NOT NULL,
`trimestre` int(11) NOT NULL,
`bimestre` int(11) NOT NULL,
`mesNumero` int(11) NOT NULL,
`mesLetra` varchar(15) NOT NULL,
`semanaMes` int(11) NOT NULL,
`diaSemanaNumero` int(11) NOT NULL,
`diaSemanaLetra` varchar(15) NOT NULL,
`estacion` varchar(10) NOT NULL,
PRIMARY KEY (`fecha`)

El script de población es un etl, seguramente lo hemos publicado en algún post anterior.

Saludos

Mariano

Gracias. Me daré una vez mas una vuelta por los tutoriales. De todas maneras lo segui al pié de la letra y no encontré ese etl.

Saludos,

Mariano García Mattío dijo:

El script de población es un etl, seguramente lo hemos publicado en algún post anterior.

Saludos

Mariano

RSS

Distintivo

Cargando…

© 2024   Creado por Emilio.   Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio