Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenas a todos,
Llevo poco tiempo trabajando con Qlikview, y me ha surgido una cuestión que no soy capaz de resolver.
Al cargar los datos de mi BD, tengo un campo que contiene años. Ese campo contiene valores desde el 2002 hasta el 2014, pero yo solo quiero que aparezcan los últimos 10 valores (del 2004 al 2014), para que el usuario solo pueda filtrar por ellos. He jugado un poco con el tema del calendario maestro y tal, pero solo he conseguido crear una tabla con esos últimos 10 valores, pero al enlazarlo con el resto del modelo vuelven a aparecer el resto de años que no quiero que salgan.
¿Alguien me puede echar una mano? Muchas gracias!
Lo primero que puedes hacer es al cargar los datos filtrarlo:
Load ...
SQL Select ... where Ano>=2004;
Lo segundo que puedes hacer es cuando vayas a presentar tus datos le puedes poner condiciones a tus expresiones para que solo aparezcan los anos seleccionados.
Por ejemplo:
Sum(If(ano>=2004,Ventas))
Sum({<Ano={">=2004"}>} Ventas)
Si necesitas mas ayuda me dejas saber.
El problema de hacerlo como dices es que filtrado al cargar los datos es "dinámico". Quiero decir, que en este ejemplo, con datos del 2002 al 2014, tendría que recuperar los valores del 2004 al 2014 (los últimos 10 años), pero si en otro caso los datos fueran del 2000 al 2012, tendría que recuperar los valores del 2002 al 2012...
He encontrado una solución en la comunidad, consistente en cargar la tabla completa, guardar los valores máximos y mínimos en variables, almacenar la tabla en un .qvd, y luego cargar ese .qvd recuperando solo los valores con fecha mayor o igual que la fecha mínima. Haciéndolo de esta forma sí he conseguido lo que quería, pero no sé si habrá otra forma más óptima de hacerlo que no sea cargando la tabla entera, almacenándola y volviéndola a cargar...
Realmente esta es la mejor forma de hacerlo.
Hola Miguel
Tu podrías limitar la extracción de datos a los periodos de tiempo que desees. Para qué querrías extraer continuamente datos que no vas a utilizar?
Lo primero que hay que hacer es verificar la sintaxis en el lenguaje SQL nativo de tu fuente de datos que permita condicionar el SELECT. Por ejemplo, usando Oracle:
SET vFechaMinima = Date(YearStart(AddYears(Today(),-10)));
Ventas_Ext:
SQL SELECT *
FROM "VENTAS"
WHERE "FECHA" >= TO_TIMESTAMP('$(vFechaMinima)', 'dd-mm-yyyy hh24:mi:ss');
Saludos!