Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola, tengo el siguiente problema, yo quiero crear una tabla en el script que tenga los campos siguientes:
campo1,campo2,campo3,campo4
entonces hago un
load * inline [
campo1,campo2,campo3,campo4
valor1,valor2,valor3,valor4
]
El problema es que hay registros que no tendrán el campo4, es decir, que me interesaria que se le asignara bien los valores de campo1,campo2 y campo3, y que el campo4 estuviera por así decirlo en blanco.
No se como hacer para escribir el script de tal manera que algunos registros tengan ese 4 campo en blanco y otros tengan los 4 campos con datos. ¿hay alguna palabra reservada o algo así para indicar que no tiene valor ese 4 campo pero que si tenga en cuenta el resto?
Espero alguna sugerencia
Un saludo
Hola Jonay,
¿Cargas los datos con una sentencia Inline?
Si no es así, igual deberías dar más información. Pon un ejemplo de cómo cargas los datos o especifica algo más. Yo, en particular, debo decirte que no entiendo bien tu pregunta.
Un saludo
Hola Alex, intentaré explicarme mejor. El ejemplo seria el siguiente:
load * inline [
campo1,campo2,campo3,campo4
1,a,3,4
2,a,4,5
3,b,6,7
4,b,5
5,c,6,3
6,d,3
]
Como ves, los que tienen valor 4 y 6 para el campo1, no tienen valor en campo4. Entonces lo que yo quiero es poder dejar ese valor a nulo, y no se si hay alguna palabra reservada o algo que se lo indique al qlikview. Porque necesito que algunos registros tengan 3 valores y otros 4. Pero necesito que me reconozca tanto los de 3 valores como los de 4.
No se si ahora queda más claro
Un saludo
Si, ahora lo entiendo mejor.
En sí, lo carga vacío, lo que pasa es que como lo carga como texto, es como si le pusiera el valor ''.
Si declaras la sentencia inline de la siguiente manera verás que si puedes filtrar los datos como null:
Datos:
Load Num(campo1) As campo1, campo2, num(campo3) As campo3, num(campo4) As campo4;
load * inline [
campo1,campo2,campo3,campo4
1,a,3,4
2,a,4,5
3,b,6,7
4,b,5,
5,c,6,3
6,d,3,
];
Filtro: LOAD campo1 As Campo1_filtrado RESIDENT Datos Where not isnull(campo4);
Verás cómo en la tabla filtro sólo carga los datos 1, 2, 3 y 5.
Espero que te ayude.
Un saludo
O si no, haces la sentencia inline como la tenías originalmente y para filtrarlo lo haces así:
Filtro: LOAD campo1 As Campo1_filtrado RESIDENT Datos Where campo4 = '';
Debe tenerse en cuenta que los valores nulos en QlikView se miden de 3 formas distintas (vacíos, en blanco y nulos). La función para asegurarse de que un campo está "vacío" independientemente de esas 3 formas es Len(Campo) = 0.
En el caso de las tablas INLINE los valores toman valor de vacío, no de nulo.
Más información en: Finding NULL
Miguel
Muchas gracias por la aclaración Miguel Ángel!
Un saludo