Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola,
Soy novato en Qlik y necesito ayuda. Mirando en el foro he conseguido cargar un script que me permite ver los cursos que hay activos entre dos fechas mediante el filtro Year: (Esta parte la hace bien)
El problema es que necesito que filtre también por el grupo en el que los profesores estaban en ese momento. Es decir que además de filtrar por la FechaInicio y FechaFin, lo haga también por los campos miembroDesde y miembroHasta. No sé como hacerlo. Digamos que en la foto solo tendrían que verse las lineas con cuadro rojo que son las que corresponden a 2013.
Este es mi script:
// Cargo los dataset
[cursos]:
LOAD
codigoCurso,
curso,
Date(Date#([fechaInicio], 'DD/MM/YYYY') ) AS [fechaInicio],
Date(Date#([fechaFin], 'DD/MM/YYYY') ) AS [fechaFin],
profesor
FROM [lib://AttachedFiles/Cursos.csv]
(txt, codepage is 28591, embedded labels, delimiter is ';', msq);
[profesores]:
LOAD
profesor,
Grupo,
Date(Date#([miembroDesde], 'DD/MM/YYYY') ) AS [miembroDesde],
Date(Date#([miembroHasta], 'DD/MM/YYYY') ) AS [miembroHasta]
FROM [lib://AttachedFiles/profesores.csv]
(txt, codepage is 28591, embedded labels, delimiter is ';', msq);
// Creo el intervalo para las fechaInicio y fechaFin de la tabla cursos
MinMaxDate:
Load
RangeMin(Min(fechaInicio),Min(fechaFin)) as MinDate,
RangeMax(Max(fechaInicio),Max(fechaFin)) as MaxDate
Resident cursos;
Let vMinDate = Num(Peek('MinDate',0,'MinMaxDate'));
Let vMaxDate = Num(Peek('MaxDate',0,'MinMaxDate'));
Drop Table MinMaxDate;
Calendar:
Load
Date(TempDate) as Date,
Month(TempDate) as Month,
Year(TempDate) as Year,
Date(MonthStart(TempDate),'DD/MM/YYYY') as MonthYear;
Load
$(vMinDate)+IterNo()-1 as TempDate
AutoGenerate 1
While $(vMinDate)+IterNo()-1 <= $(vMaxDate);
IntervalMatch(Date)
Load fechaInicio, fechaFin Resident cursos;
Cuando un campo tiene más de un valor la expresión devuelve null(), habría que aplicar una expresión que devuelva un único valor, por ejemplo:
Only({<miembroDesde={"<=$(=YearEnd(makedate(Min(Año))))"}, miembroHasta={">=$(=YearStart(makedate(Max(Año))))"}>} miembroHasta)
Saludos.
Hola,
Con esa expresión funciona pero me limita la selección a un único año. Si elijo dos años la tabla no muestra nada. Necesitaría que permitiese selección multiple.
En cualquier caso, muchas gracias. No conocía el concepto Set Analisys.
Un saludo.
Cuando un campo tiene más de un valor la expresión devuelve null(), habría que aplicar una expresión que devuelva un único valor, por ejemplo:
Only({<miembroDesde={"<=$(=YearEnd(makedate(Min(Año))))"}, miembroHasta={">=$(=YearStart(makedate(Max(Año))))"}>} miembroHasta)
Saludos.
Estupendo! con el intervalo ya funciona para más selecciones. ¿Hay forma de ocultar la columna?
Muchas gracias por la rápida respuesta.
Un saludo,
No he dicho nada, la cosa es que lo estaba aplicando a una tabla donde no tenía medidas. Yo he creado una medida con la expresión y entonces el campo miembroHasta me salia repetido en la tabla (como dimensión y como medida).
Simplemente he quitado la dimensión y dejado la medida que ya tiene esa condición incluida.
Me he liado yo solo. Muchas gracias.
Saludos.