Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Cargar solo ciertos valores

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!

4 Replies
jolivares
Specialist
Specialist

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.

Not applicable
Author

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...

jolivares
Specialist
Specialist

Realmente esta es la mejor forma de hacerlo.

julian_rodriguez
Partner - Specialist
Partner - Specialist

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!