Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenas tardes,
Estoy empezando con Qlik View. Me he instalado la versión 11 y estoy bloqueado por una cuestión que imagino es trivial. Ahí va:
Tengo una tabla llamada PERIODOS con los valores (201601, 201602, ... 201612) y en una tabla de datos tengo un campo que se llama CUP_PERIODO y otro MAT_PERIODO. En estos campos tengo valores que se corresponden a la tabla de PERIODOS, pero no existe asociación entre ambas tablas.
Deseo crear una simple tabla que me muestre para cada PERIODO, la cantidad de CUP_PERIODO, en una columna, y MAT_PERIODO en otra columna.
En dimesiones de la tabla tengo puesto PERIODO
En Expresiones trato de escribir la siguiente: NumericCount( {$ <CUP_PERIODO=PERIODO>} DISTINCT CUP_ID) y no obtengo resultados.
¿Qué estoy haciendo mal?
Estaré muy agradecido de contar con vuestra ayuda.
Muchas gracias por vuestro tiempo!!
Àlex
Hola Alex,
Puedes subir el documento para poder ayudarte?
saludos,
Hola Alex,
Hay demasiadas cosas que te estan pasando y aunque parezca simple no lo es. Usar Qlikview eventualmente te va a resultar sencillo pero por tu post supongo que no tenes experiencia en diseño de datos ni de base de datos que es complejo y esencial en todo proyecto.
Por lo que dices, tienes tres tablas que no estan unidas para nada. Esto puede causar muchos problemas si las tablas son grandes ya que podras hacer cross joins entre las tablas en el front end y esto hara que consumas toda la memoria o CPU.
De tu post, no puedo ver bien tu modelo, pero te recomiendo que concatenes las tablas que tienen los campos CUP_PERIODO Y MAT_PERIODO y luego hagas un left/inner join con la tabla PERIODO.
Ej:
Tabla1:
LOAD
CUP_PERIODO AS PERIODO,
'Tabla1' AS _seccion
FROM miTabla.qvd (qvd);
CONCATENATE
LOAD
MAT_PERIODO AS PERIODO,
'Tabla2' AS _seccion
FROM miTabla2.qvd (qvd);
LEFT KEEP
Periodos:
LOAD
PERIODO
FROM tablaPeriodo.qvd (qvd);
======================================
Luego crea una tabla con las dimensiones PERIODO y _seccion. En la expresion pon:
=count(PERIODO)
Dependiendo de tu modelo, esto puede cambiar bastante. Si tenes mas dudas mejor adjunta aqui tu aplicacion asi la puedo ver.
Saludos,
Juan
Hola, Juan.
En primer lugar, muchas gracias por tomarte el tiempo en contestar.
Los datos que cargo a través del script son:
//-------- Start Multiple Select Statements ------
SQL SELECT "PER_ID"
FROM "dbDWH_TEST".dbo."CFG_PERIODOS";
SQL SELECT "CUP_ID",
"CUP_FECHA",
"CUP_PER_ID",
"CUP_CUR_ID"
FROM "dbDWH_TEST".dbo."DAT_CUPONES";
SQL SELECT "MAT_ID",
"MAT_PER_ID",
"MAT_FECHA",
"MAT_CUP_ID"
FROM "dbDWH_TEST".dbo."DAT_MATRICULAS";
//-------- End Multiple Select Statements ------
La tabla que quiero conseguir seria el resultado de esta instrucción que con SQL no tengo el menor problema de resolver.
SELECT CFG_PERIODOS.PER_ID AS PERIODO
, COUNT(DISTINCT DAT_CUPONES.CUP_ID) AS TOTAL_CUPONES_EN_PERIODO
, COUNT(DISTINCT DAT_MATRICULAS.MAT_ID) AS TOTAL_MATRICULAS_EN_PERIODO
FROM CFG_PERIODOS
LEFT JOIN DAT_CUPONES
ON CFG_PERIODOS.PER_ID = DAT_CUPONES.CUP_PER_ID
LEFT JOIN DAT_MATRICULAS
ON CFG_PERIODOS.PER_ID = DAT_MATRICULAS.MAT_PER_ID
GROUP BY CFG_PERIODOS.PER_ID
Adjunto el documento.
Hola Jordi,
Adjunto el documento.
Muchas gr4acias.
Àlex
Hola Alex,
Tienes que intentar hacerlo como por ejemplo te ha comentado Juan ya que actualmente tienes 3 tablas que no estan conectadas entre ellas. Tienes que intentar construir una tabla con los datos ya agregados tal y como te comenta Juan. Al hacer el CONCATENATE reducirás las tablas a 1 sola y no tendrás problemas para realizar el cálculo. Si lo miras bien es parecido a lo que estas diciendo tu en la query.
LOAD PERIODO, TOTAL_CUPONES_EN_PERIODO, TOTAL_MATRICULAS_EN_PERIODO
SQL SELECT CFG_PERIODOS.PER_ID AS PERIODO
, COUNT(DISTINCT DAT_CUPONES.CUP_ID) AS TOTAL_CUPONES_EN_PERIODO
, COUNT(DISTINCT DAT_MATRICULAS.MAT_ID) AS TOTAL_MATRICULAS_EN_PERIODO
FROM CFG_PERIODOS
LEFT JOIN DAT_CUPONES
ON CFG_PERIODOS.PER_ID = DAT_CUPONES.CUP_PER_ID
LEFT JOIN DAT_MATRICULAS
ON CFG_PERIODOS.PER_ID = DAT_MATRICULAS.MAT_PER_ID
GROUP BY CFG_PERIODOS.PER_ID
Saludos,
Hola te adjunto un archivo con una posible solución.
Saludos
Hola Alex,
Al ser islas no puedes realizar la comparativa que estas haciendo en la expresión, tendrías que poner la siguiente expresión:
NumericCount(DISTINCT IF(PER_ID=CUP_PER_ID, CUP_ID))
Pero lo más lógico es que unas el modelo por periodo llamando a los campos igual.
Un saludo