Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hello everyone, I'm new in QlikView, I read the tutorial this there are the web but is too basic in my opinion, and I find sources which explain more things about queries and selections, as well as terms and nomenclature used QlikView . So I ask this question to see if anyone can help.
I have two .csv files (tabal1.csv and tabla2.csv) and that's where will upload the tables, let 'Table1' and 'Table 2'. These tables have many columns each, but I will give an example of what I do. Suppose we are interested in each table the following columns connected by the 'ID' column:
Table 1:
ID Tech Site
1 4G if
2 3G if
3 3G not
4 2G not
5 2G if
Table 2:
ID Vo1 Vo2
1 10 0
2 0 67
March 3 34
4 4 0
5 0 0
Note: You can not have a row with 4G and Site Tech = = 'no', provided that Tech is 4G, Site will be 'yes'.
What I get is: Sum (Vo1 + Vo2) and grouped by Site Tech (which is not the best order), but only Tech group 2G and 3G, 4G no. Therefore, the result table should look like:
Agrupacion Total (Sum (Vo1 + Vo2))
4G (if) 10
3G-2G (if) 67
3G-2G (no) 41
No I have come to explain properly, anything you can ask me. The main problem is I do not know the nomenclature (syntax) using QlikView, so do not even know how to start loading only those columns that interest me, and not load the entire tables ...
Thank you very much in advance and I hope your answers !!
Greetings to all !!!!
Translated with Google Translate - Qlik Community Administrative Team
Hola a todos, soy nuevo en QlikView, me leí el tutorial este que hay por la web pero es demasiado básico en mi opinión, y no encuentro fuentes donde expliquen más cosas acerca de consultas y selecciones, así como expresiones y la nomenclatura que utiliza QlikView. Por eso hago esta pregunta a ver si alguien puede ayudarme.
Yo tengo dos archivos .csv (tabal1.csv y tabla2.csv) y de ahí es de donde cargaré las tablas, supongamos 'Tabla1' y 'Tabla 2'. Estas tablas tienen muchas columnas cada una, pero voy a poner un ejemplo de lo que quiero hacer. Supongamos que de cada tabla nos interesan las siguientes columnas, conectadas por la columna 'ID':
Tabla1:
ID Tech Site
1 4G si
2 3G si
3 3G no
4 2G no
5 2G si
Tabla2:
ID Vo1 Vo2
1 10 0
2 0 67
3 3 34
4 4 0
5 0 0
Nota: no puede haber una fila con Tech=4G y Site='no', siempre que Tech sea 4G, Site será 'sí'.
Lo que quiero obtener es: Sum(Vo1+Vo2) agrupado por Site y Tech (no se cual es el mejor orden), pero en Tech agrupar solo el 2G y el 3G, el 4G no. Por tanto, la tabla resultado debería quedar así:
Agrupacion Total (Sum(Vo1+Vo2))
4G (si) 10
3G-2G (si) 67
3G-2G (no) 41
No se si he llegado a explicarme correctamente, cualquier cosa me podéis preguntar. El principal problema es que no conozco la nomenclatura (sintaxis) que utiliza QlikView, por eso no sé ni cómo empezar a cargar solo esas columnas que me interesan, y no cargar las tablas enteras...
Muchas gracias de antemano y espero vuestras respuestas!!
Un saludo a todos!!!!
Podria intentar con 'if' o con 'join'(y applymap...). no olvides que en Qlik la acentuacion podría interferir, así como espacios(trim) y cajas(upper).
//Metodo if:
CGI:
LOAD CGI_ORIG,
CELDA_ORIG,
CGI,
CELDA_NORM,
NODO_NORM,
SITE,
INE_MUNICIPIO,
[CODIGO POSTAL],
MUNICIPIO,
INE_PROVINCIA,
PROVINCIA,
TECNOLOGÍA,
[letra tecn],
[cosite 3G-4G],
[BandaInf cos3G-4G],
[4G+],
proveedor,
if( upper(trim(TECNOLOGÍA)) = '4G' and upper(trim( [cosite 3G-4G] )='SÍ ,
'4G' ,
if( upper(trim(TECNOLOGÍA)) <> '4G' and upper(trim( [cosite 3G-4G] )='SÍ',
'2G-3G cosites 4G',
'2G-3G no-cosites 4G') as Name1
FROM
CGIs_agregado*.csv
(txt, utf8, embedded labels, delimiter is ';', msq);
//Metodo Left Join
left join(Tabla1)
load * Inline [TECNOLOGÍA, [cosite 3G-4G] , Name2
4G, sí, 4G (si)
3G, sí, 3g-2g (si)
3G, no, 3g-2g(no)
2G, sí, 3g-2g (si)
2G, no, 3g-2g(no)];
Hola!
Tente con un join en script
left join(Tabla1)
load * Inline [Tech, Site, name
4G, si, 4G (si)
3G, si, 3g-2g (si)
3G, no, 3g-2g(no)
2G, si, 3g-2g (si)
2G, no, 3g-2g(no)];
Mañana en cuanto pueda en el trabajo lo pruebo! Muchísimas gracias! Ya te contaré...
EDITO: Funciona perfectamente!! Muchisimas gracias!
Por curiosidad, lo que haces es asignar etiquetas a los campos ¿no?
EDITO2: Cuando lo intento con las tablas reales, este método no devuelve los resultados que deberían salir, porque hay campos que son iguales, es decir, lo identificadores se repiten varias veces. Lo que estoy intentando es colocar las etiquetas del nuevo campo 'name' pero sin usar LOAD * INLINE, sino el LOAD FROM. Te dejo el código:
Directory;
CGI:
LOAD CGI_ORIG,
CELDA_ORIG,
CGI,
CELDA_NORM,
NODO_NORM,
SITE,
INE_MUNICIPIO,
[CODIGO POSTAL],
MUNICIPIO,
INE_PROVINCIA,
PROVINCIA,
TECNOLOGÍA,
[letra tecn],
[cosite 3G-4G],
[BandaInf cos3G-4G],
[4G+],
proveedor
FROM
CGIs_agregado*.csv
(txt, utf8, embedded labels, delimiter is ';', msq);
/////////////////////////////////////////////////////
// [TECNOLOGÍA, cosite 3G-4G, name1
// 4G, sí, 4G
// 3G, sí, 2G-3G cosites 4G
// 3G, no, 2G-3G no-cosites 4G
// 2G, sí, 2G-3G cosites 4G
// 2G, no, 2G-3G no-cosites 4G]
/////////////////////////////////////////////////////
Outer Join (CGI)
RED:
LOAD CELDA as CGI,
FECHA,
VOL_DL,
VOL_UL,
DURACION,
CNT_MSISDN
FROM
RED.csv
(txt, codepage is 1252, embedded labels, delimiter is '\t', msq);
El caso es que no se donde poner las etiquetas que me dijiste cuando hago los dos LOAD FROM...
Podria intentar con 'if' o con 'join'(y applymap...). no olvides que en Qlik la acentuacion podría interferir, así como espacios(trim) y cajas(upper).
//Metodo if:
CGI:
LOAD CGI_ORIG,
CELDA_ORIG,
CGI,
CELDA_NORM,
NODO_NORM,
SITE,
INE_MUNICIPIO,
[CODIGO POSTAL],
MUNICIPIO,
INE_PROVINCIA,
PROVINCIA,
TECNOLOGÍA,
[letra tecn],
[cosite 3G-4G],
[BandaInf cos3G-4G],
[4G+],
proveedor,
if( upper(trim(TECNOLOGÍA)) = '4G' and upper(trim( [cosite 3G-4G] )='SÍ ,
'4G' ,
if( upper(trim(TECNOLOGÍA)) <> '4G' and upper(trim( [cosite 3G-4G] )='SÍ',
'2G-3G cosites 4G',
'2G-3G no-cosites 4G') as Name1
FROM
CGIs_agregado*.csv
(txt, utf8, embedded labels, delimiter is ';', msq);
//Metodo Left Join
left join(Tabla1)
load * Inline [TECNOLOGÍA, [cosite 3G-4G] , Name2
4G, sí, 4G (si)
3G, sí, 3g-2g (si)
3G, no, 3g-2g(no)
2G, sí, 3g-2g (si)
2G, no, 3g-2g(no)];