Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Carga condicionada en script

     Hola, tengo la siguiente duda:

     Yo genero una tabla de datos, que tienen múltiples campos, los que me interesa de todos los campos que tiene es ID y campo1. El ID es único y luego campo1, puede tomar 2 valores o si o no.

     Ahora lo que yo quiero es generar otra tabla, que cargue solo los ID, donde el campo1 sea igual a 'Si', para generar otro campo, llamesmolo campo2, es decir, en pseudocodigo

         if (ID tiene campo1 = 'Si')

             cargalo y pon campo2 =valor

         En caso contrario ese ID no habría que cargarlo, y por tanto no habría que generarse ese campo2

Mi duda es como hacer esa carga condicionada, para que no se me carguen los ID cuando no tienen el valor de campo1 = 'Si'

¿Alguna sugerencia? 

Un saludo

1 Solution

Accepted Solutions
sorrakis01
Specialist
Specialist

Hola,

Mira si esto es lo quequieres:

Tabla1:

LOAD * INLINE [

    Id, Campo1, Valor

    1, Si, 100

    2, No, 200

    3, Si, 50

    4, No, 60

    5, No, 80

    6, No, 100

    7, Si, 300

    8, No, 80

];

Tabla2:

LOAD Id,

     Campo1 as Campo2

Resident Tabla1

where Campo1 = 'Si';

Aunque tengo una simple pregunta:

Cuando los campos sean 'Si' les pondras un Valor2 pero si son 'No' no les pondras ningun Valor2? ni siquiera un 0 (si les pones valor2 a 0, con un simple mapping se te solucionarían todos tus problemas y no haría falta que hicieses 2 tablas)

Ya me cuentas como te ha ido....

Saludos,

View solution in original post

5 Replies
sorrakis01
Specialist
Specialist

Hola Jonay,

Quieres algo así?

Tabla1:

LOAD Id,

          Campo1

FROM.......

Tabla2:

LOAD Id,

          If(Campo1 = 'Si', Valor) as Campo2

Resident Tabla1

Lo que no sé que quieres poner en valor y porque quieres 2 tablas. Lo puedes hacer en la misma

Tabla1:

LOAD Id,

          Campo1

          If(Campo1 = 'Si', Valor) as Campo2

FROM.......

Saludos,

Anonymous
Not applicable
Author

Buenas Jordi,

Quiero hacerlo así, porque la primera tabla la genero via mysql y en los if de mysql hay que poner tanto si cumple la condición como sino, es decir, tendria que tener if (campo1 = 'si', valor1,valor2) y yo no quiero tener que ponerle el valor2.

Respecto a la opción que das

Tabla2:

LOAD Id,

          If(Campo1 = 'Si', Valor) as Campo2

Resident Tabla1

Esto me cargaria todos los id de tabla1, si cumple la condicion me genera campo2 con valor, pero sino cumple condición me genera campo2 con valor nulo. Yo lo que no quiero es que me genere ese campo2 con valor nulo

Porque luego yo genero otra tabla, donde pongo ese campo2 a un valor2, para los IDs que no tengan el campo1 a 'Si'

Quizás este quedando algo enrevesado la explicación.....

Un saludo

sorrakis01
Specialist
Specialist

Hola,

Mira si esto es lo quequieres:

Tabla1:

LOAD * INLINE [

    Id, Campo1, Valor

    1, Si, 100

    2, No, 200

    3, Si, 50

    4, No, 60

    5, No, 80

    6, No, 100

    7, Si, 300

    8, No, 80

];

Tabla2:

LOAD Id,

     Campo1 as Campo2

Resident Tabla1

where Campo1 = 'Si';

Aunque tengo una simple pregunta:

Cuando los campos sean 'Si' les pondras un Valor2 pero si son 'No' no les pondras ningun Valor2? ni siquiera un 0 (si les pones valor2 a 0, con un simple mapping se te solucionarían todos tus problemas y no haría falta que hicieses 2 tablas)

Ya me cuentas como te ha ido....

Saludos,

Anonymous
Not applicable
Author

Gracias por la respuesta, era lo que necesitaba, al final en lugar de poner campo1 as campo2 lo que hice fue darle el valor que necesitaba

Tabla2:

LOAD Id,

    'valor'  as Campo2

Resident Tabla1

where Campo1 = 'Si';

Desconocia la clausula where en la carga de tablas en qlikview (creo que nunca la he tenido que usar)

Un saludo

sorrakis01
Specialist
Specialist

Genial!

Has pensado lo que te he dicho del mapping?