Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola a todos! Estoy trabajando en un modelo que relaciona productos y materias primas.
tengo 3 tablas:
materias_primas:
LOAD
materia_prima_key,
materia_prima_nombre,
fecha_precio_materia_prima,
precio_materia_prima
FROM materias_primas;
// Materias primas muestra las materias primas cargadas y una fecha de cotización junto a su precio, a medida que va variando el mismo.
productos:
LOAD
producto_key,
producto_nombre,
fecha_precio_producto,
precio_producto
FROM productos;
// productos muestra los productos cargados y una fecha de cotización junto a su precio, a medida que va variando el mismo.
materias_primas_productos:
LOAD
producto_key,
materia_prima_key
FROM materias_primas_productos;
// materias_primas_productos hace la relación de las tablas
Necesito un calendario asociando los campos fecha_precio_materia_prima y fecha_precio_producto para poder hacer informes acerca de la variación del precio de las materias primas y los productos en el mismo lapso de tiempo, ya que cada materia prima tiene asociada productos.
Uno de los gráficos debería ser un combinado donde muestre los precios en 2 ejes "y", mientras que en el eje "x" muestre los meses (ene, feb, mar, etc) cuyo campo debe asociar los dos campos fechas de las dos tablas.
Saludos.
Hola Walter,
¿Puedes poner algunos registros de ejemplo?
Saludos,
H
Hola Héctor. Por supuesto.
Hola Walter,
Te cuento lo que yo haría teniendo en cuenta que,por los datos que nos pasas, parece que una materia prima y su producto relacionado tienen precio en los mismos meses exactamente (aunque en distintos días):
Espero que te ayude.
Saludos,
H
Para encarar este tema creo que deberías tener en cuenta lo siguiente: Si los precios de cada producto y materia prima solo tienen validez dentro de un periodo determinado, te conviene armar la relación entre las tablas con un interval match, para poder definir el precio correcto de un item en una fecha determinada.
Para poder armar esa relación, Primero vas a tener que armar un ETL que modifique la tabla que contiene los precios, para que cada registro contenga dos columnas de fecha para los precios: No solo la fecha en la que el precio comienza a tener validez, sino también hasta cuando (que sería la fecha de inicio del registro siguiente, o la actual si no hay ninguna)
Una vez que armes esa relación vas a poder saber cual era el precio de la materia prima y del producto final en cualquier fecha.
Héctor e intentado hacer una "link table" con un campo fecha, porque no siempre tienen actualizaciones dentro del mismo mes las materias primas y los productos relacionados a ella. Pero no tuve éxito con ello. Te paso mas o menos el código que utilicé para hacerlo.
materias_primas:
LOAD
materia_prima_key,
materia_prima_nombre,
fecha_precio_materia_prima,
precio_materia_prima
FROM materias_primas;
fact_materias_primas:
LOAD
materia_prima_key as materia_prima_key_temp,
materia_prima_nombre,
fecha_precio_materia_prima,
precio_materia_prima
Resident materias_primas;
Drop table materias_primas;
// materias_primas_productos:
Mapping LOAD
producto_key,
materia_prima_key
FROM materias_primas_productos;
productos:
LOAD
producto_key,
AppliMap ('materias_primas_productos', producto_key, null()) as materia_prima_key,
producto_nombre,
fecha_precio_producto,
precio_producto
FROM productos;
fact_productos:
LOAD
producto_key,
producto_nombre,
fecha_precio_producto,
precio_producto,
materia_prima_key as materia_prima_key_temp
Resident productos;
Drop table productos;
LinkTable:
Load
materia_prima_key_temp as materia_prima_key,
fecha_precio_materia_prima as fecha
Resident fact_materias_primas;
Concatenate (LinkTable)
Load
producto_key,
materia_prima_key_temp as materia_prima_key,
fecha_precio_producto as fecha
Resident fact_productos;
Drop field materia_prima_key_temp;
calendario_temp:
Load
fecha_precio_producto as fecha
Resident fact_productos;
outer Join
Load
fecha_precio_producto as fecha
Resident fact_productos;
Calendario:
LOAD
fecha,
Year (fecha) as Año,
Month (fecha) as Mes,
day(fecha) as Dia
Resident calendario_temp;
DROP Table calendario_temp;
Hola Walter,
Si las materias primas y los productos actualizan sus precios no siempre en el mismo mes, lo que tienes que hacer es lo que propone Diego Barboza en su post: hallar la vigencia de cada precio de materias primas y de precio de producto y enlazar los valores donde "encajen" creando unas nuevas relaciones.
Si puedes pásanos datos (que no estén en un pantallazo) y e intentamos ayudarte con el script.
Saludos,
H
Paso un QVW que verán que no es exactamente como el ejemplo de la Discusión solamente para hacerlo mas comprensible. Cualquier cosa me consultan, también van los QVD. Espero que puedan ayudarme.
Hola,
Lo que podrías hacer es:
Generar una tabla intermedia relacionado con la tabla de hechos (por Id) para llegar al calendario común con un campo Tipo. ejemplo:
Id, Fecha, Tipo (Materia prima o producto), Precio
Luego generas el calendario común relacionado con Fecha.
De esta forma podrás saber fácilmente a una fecha que precio tenias para los 2 casos.....
Saludos,
Jordi hola. Creo que a lo que te refieres ya lo he hecho. Es lo que pasé más arriba, no sé si me estoy equivocando en algo o qué, pero me da datos erróneos.
P/d: en la captura no se alcanza a ver pero en Fact_productos hay otro campo que es la fecha.