Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Cargar datos parametrizados

Buen día. En un archivo Excel tengo una hoja (Fecha) con las fechas del año y frente a cada una un parámetro conformado por 3 letras, el grupo de letras pueden repetirse en diferentes fechas. Las letras frente a cada fecha pueden cambiarse en cualquier momento, es decir que estos valores se pueden editar de acuerdo a las necesidades del momento

FechaParametro
01/01/2014BDV
02/01/2014IUW
03/01/2014YPT
04/01/2014BHS
05/01/2014VYX

En otra hoja (Datos) tengo cada uno de esos parámetros y frente a ellos dos valores (inicial y final).

GrupoValorInicialValorFinal
AHS32774850
AZR43586188
BDV45895186
BHS47336958
BIN33774559
CAH40844656
CTT49907186

Los valores (inicial y final) no cambian nunca, siempre son los mismos para el grupo de letras.

En el archivo que adjunto las dos hojas están juntas, en el mismo libro, pero en la vida real son archivos separados y el archivo de los valores solo está disponible para pocos usuarios autorizados.

El problema que tengo es el siguiente: cada vez que se recargue el programa, del archivo Excel debe tomar el 'Parametro' que corresponda con la fecha del día en curso, por ejemplo el 26 de junio de 2014 'Parametro' = WSS. Y con ese dato tomar de la hoja 'Datos' los valores que correspondan, que serían 4135 y 5665.

He hecho varios intentos, pero no soy capaz de recargar el dato que corresponde, no puedo asignar a una variable el valor 'Parametro' para que me sirva de filtro después.

Gracias por la ayuda.

1 Solution

Accepted Solutions
jaimeaguilar
Partner - Specialist II
Partner - Specialist II

Si quieres que la carga del parámetro sea dinámica, lo que necesitas es guardar el valor del parámetro en una variable para después utilizarlo como filtro en la tabla de valores. Tendrías que declarar la variable así:

LET ValParam = Peek('Parametro',0,'FechaParametro');

Lo que hace la función peek es tomar el registro que acabas de cargar en la tabla de parámetros y lo almacena en una variable. En tu ejemplo me imagino que se carga un único valor por día, de no ser así necesitarías un ciclo que recorra la tabla y te regrese todos los valores para cada fecha.

Me imagino que la carga depende del día que sea, entonces cada día va a cargar un parámetro diferente, es correcto?

anexo el ejemplo

View solution in original post

5 Replies
jaimeaguilar
Partner - Specialist II
Partner - Specialist II

Hola,

le hice algunos cambios al archivo qvw:

1) Es más facil si manejas la fecha de la variable con la función Today(), además siempre que declares una variable que contiene una expresión que deba ser evaluada, utiliza LET, de otro modo la variable será interpretada como texto.

2) Al mandar llamar la variable en el where, debes ponerle comillas simples para que QV la interprete correctamente:

Where Parametro = '$(Variable');

3) tus 2 tablas deben estar ligadas, en este caso por el campo Parametro. Por lo tanto, en la tabla valores, el campo Grupo debe ser renombrado a Parametro.

4) No afecta en nada, que los exceles reales vengan de diferentes archivos, al final tus 2 tablas apuntarán a 2 archivos diferentes, en lugar de 2 pestañas diferentes de un mismo archivo, como ocurre en el ejemplo

anexo el ejemplo con los cambios,

confírmame si eso es lo que necesitas por favor,

saludos

Not applicable
Author

Jaime, gracias por la respuesta. Tengo problemas con tu ayuda, porque en el script veo lo siguiente:

SET ValParam = 'WSS';

Y no siempre va a ser 'WSS' el valor, porque depende de la fecha en que se recarga que irá cambiando dinamicamente, tampoco funciona si le digo:

SET ValParam = [Parametro];

Gracias.

jaimeaguilar
Partner - Specialist II
Partner - Specialist II

Si quieres que la carga del parámetro sea dinámica, lo que necesitas es guardar el valor del parámetro en una variable para después utilizarlo como filtro en la tabla de valores. Tendrías que declarar la variable así:

LET ValParam = Peek('Parametro',0,'FechaParametro');

Lo que hace la función peek es tomar el registro que acabas de cargar en la tabla de parámetros y lo almacena en una variable. En tu ejemplo me imagino que se carga un único valor por día, de no ser así necesitarías un ciclo que recorra la tabla y te regrese todos los valores para cada fecha.

Me imagino que la carga depende del día que sea, entonces cada día va a cargar un parámetro diferente, es correcto?

anexo el ejemplo

Not applicable
Author

Muchas gracias Jaime, eso es lo que necesitaba.

fkoamaya
Contributor
Contributor

Buenos días

solicito por favor me ayuden con lo siguiente:

Tengo una base de datos en la cual hay un histórico de información que no es necesario cargarla. Por favor me pueden ayudar indicándome como coloco una función para que me funcione.

Adicional estoy tratando de hacer la parametrización para hacer carga incremental pero al momento de ejecutar me duplica los datos, es posible que me regalen la secuencia de cómo se genera la parametrización de cargas secuenciales y que me indiquen si es necesario replicar esa parametrización en todas las secciones de la misma app.

 

Gracias