Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola¡
Tengo una tabla de "Ventas" que guarda un campo "PrecioCosteVenta" con el precio de coste del articulo vendido, y una tabla TB_Precios_coste con el PrecioCoste de coste de esos articulos para uno intervalo de fecha concreto (Desde, Hasta).
Lo que deseo saber son las ventas que tienen PrecioCosteVenta diferente al que deberian segun la tabla TB_Precios_coste dada la fecha de venta.
Osea relacionar el campo VENTAS.fecha con el intervalo [TB_Precios_coste.Desde, TB_Precios_coste.Hasta]
Lo ideal seria hacerlo directametne el Join del script de carga pero al no tener el Join de Qlik la posibilidad de "ON <condicion>" y solo une por valores iguales (de los campos que se llaman igual) no se como hacerlo.
He probado haciendo el siguiente Join:
VENTAS:
LOAD
Articulo,
fecha,
PrecioCosteVenta
FROM
H:\QlikView\TablasAux\Ventas.qvd (qvd)
;
inner join
SQL SELECT
Articulo,
Desde,
Hasta,
PrecioCoste
FROM `TB_Precios_coste`
;
y luego filtrar en una segunda tabla
VENTAS_2:
LOAD
articulo as articulo_2,
fecha as fecha_2,
PrecioCosteVenta as PrecioCosteVenta _2,
Desde as Desde_2,
Hasta as Hasta_2,
PrecioCoste as Precio_2
resident VENTAS
where fecha <= Hasta and fecha >= Desde
;
Pero no me vale porque en cuanto hay dos intervalos de fechas para el mismo articulo (aunque sean disjuntas, de hecho todos los intervalos son disjuntos por articulo) me saca precios diferentes.
Hola,
Probablemente la función IntervalMatch() es lo que estás buscando, y sirve, entre otras cosas, para unir datos discretos con rangos.
Mira este post con el código de ejemplo, cópialo en tu aplicación QlikView y recárgalo para que funcione. En tu caso, la tabla DatesTable del ejemplo sería la que contiene el Desde-Hasta, y la tabla con PrecioCosteVenta sería la FactsTable del ejemplo.
Modificando los nombres de campo en el ejemplo debería funcionar.
Espero que te sirva.
Miguel
Hola,
Probablemente la función IntervalMatch() es lo que estás buscando, y sirve, entre otras cosas, para unir datos discretos con rangos.
Mira este post con el código de ejemplo, cópialo en tu aplicación QlikView y recárgalo para que funcione. En tu caso, la tabla DatesTable del ejemplo sería la que contiene el Desde-Hasta, y la tabla con PrecioCosteVenta sería la FactsTable del ejemplo.
Modificando los nombres de campo en el ejemplo debería funcionar.
Espero que te sirva.
Miguel
Muchas gracias Miguel Angel¡
Lo probe y me funciono. Me dio los mismos resultados que con lo que yo hacía (que despues de estudiarlos resultan que son correctos desde el principio).
Pero bueno, asi he aprendido a utillizar el INTERVALMATCH , aunque debe decir que la solución que utiliza el INTERVALMATCH va más lenta que la mia uriginal, por lo menos en mi caso.
Hola Emilio,
Sin duda, IntervalMatch() es más lento que otras funciones como ApplyMap() y desde luego, cualquier JOIN que hagas en el SQL select (ya que la carga del trabajo no está en QlikView sino en la base de datos). En cualquier caso, hay veces que es mejor descargar el trabajo del transaccional o del DWH y hacerlo con QlikView.
Un saludo,
Miguel