Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Gabo77
Contributor III
Contributor III

Es posible hacer un First Join en Qlik

Tengo dos tablas con la siguiente estructura:

Tabla 1: Kardex

Campos Tabla 1: IdEmpleado, FechaAlta

Tabla 2: Ausencias

Campos Tabla 2: IdEmpleado, FechaAusencia, Motivo.

Necesito obtener para cada ausencia, la fecha Alta de cada empleado, el problema es con los empleados de "Reingreso", es decir, la Tabla Kardex, almacena la historia de todas las Fechas de Alta y Baja del empleado. Si un empleado ingresó en el 2015, pero causó baja en el 2018, y después ese mismo empleado reingresó en el 2019 y sigue vigente... lo que me piden es obtener las ausencias de ese empleado indicando la fecha de Alta que le correspondía en esa fecha. Es decir:

Si el empleado tuvo ausencias en el 2015 y 2016, se debe indicar como fecha de ingreso el 2015, y si ese mismo empleado tuvo ausencias en el 2019 y 2020, debe indicar como  fecha de ingreso el 2019...

intenté con algo como ésto.

Habiendo hecho un Join previo de las tablas mencionadas, procedí a descartar los registros que no correspondían con la siguiente sentencia...

NoConcatenate AusenciaBase2:
  Load IdEmpleado, FechaAusencia, FechaAlta
  Resident AusenciaBase
  Where FechaAlta < FechaAusencia;

La sentencia es correcta sólo para aquellos registros que son del primer período de ingreso del empleado... ya que obtiene las ausencias que son posteriores a la fecha de alta, pero en los subsecuentes períodos, continúan duplicándolos. Quisiera atacar ésto usando un First Join... para ordenar la tabla de Kardex y sólo tomar el primer elemento... Ésto es posible?

Labels (1)
2 Replies
amonjaras_c40
Luminary
Luminary

Hola Gabo.

Si bien Qlik no tiene toda la funcionalidad de SQL, dado que su asociación funciona de forma muy diferente a la estructura de una base de datos relacional, es posible pasar queries que incluyan joins a través del conector de SQL, para que sean resueltos y ejecutados por la base de datos, devolviendo el resultado en forma de una sola tabla.

No se si lo que quieres hacer pueda pasarse de esa manera a tu manejador de base de datos, pero el ETL de Qlik tiene otras funcionalidades que puedes usar para resolver tu problema:

A reserva de ver más a detalle y hacer algunas pruebas, me parece que los mapeos (Mapping Load) y/o Intervalmatch pueden usarse para obtener lo que buscas.

Espero que ésto te sirva.

Gabo77
Contributor III
Contributor III
Author

Hola @amonjaras_c40 Te agradezco mucho la respuesta. Finalmente encontré la solución.

Lo que hice fue dejar el Join tal cuál, luego, en el set de datos resultantes simplemente apliqué la función Max, de manera que con ésto descarta los registros menores...

Te agradezco.