Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
pauljara
Contributor II
Contributor II

Agregar un campo calculado desde otra tabla en un load

Buenos días a todos, soy nuevo en Qv... me gustaría saber si es posible hacer lo siguiente:

Tengo una fuente de datos [Tramites.qvd] en la que consta la siguiente información:

TRAMITEFECHA_REGISTROFECHA_CORTE
12017-12-292018-05-15
22018-02-102018-05-15
32018-03-192018-05-15
42018-04-052018-05-15
52018-05-102018-05-15
62018-05-142018-05-15

La idea es contabilizar los días laborables que han transcurridos desde FECHA_REGISTRO hasta FECHA_CORTE, la misma que estoy calculando con la función NetWorkDays (excluyo sábados y domingos), el problema radica que aparte de calcular los días laborables que en este caso son (lunes a viernes), también debo considerar en restar los días  no laborados que fueron considerados como FERIADOS (la cantidad de días libres entre semana que no se laboraron por considerarse días festivos y que se deben excluir de la contabilizacion), para lo cual cargo en un catalogo con todas las fechas que se consideran festivos y no son laborables durante el año.

[FERIADOS.qvd]

DIAFECHAEVENTO
LUNES01/01/2018AÑO NUEVO
LUNES12/02/2018CARNAVAL
MARTES13/02/2018CARNAVAL
VIERNES30/03/2018VIERNES SANTO
MARTES01/05/2018DÍA DEL TRABAJO
JUEVES25/05/2018BATALLA DE PICHINCHA
VIERNES10/08/2018PRIMER GRITO DE LA INDEPENDENCIA
LUNES08/10/2018INDEPENDENCIA DE GUAYAQUIL
VIERNES02/11/2018DÍA DE LOS DIFUNTOS
MARTES25/12/2018NAVIDAD

En mi caso (que no tengo experiencia en qv), e intentando agregar una nueva columna DIAS_FERIADOS, mediante base de datos los haría de la siguiente manera:

Ejemplo para el caso TRAMITE: 1

select count(*) DIAS_FERIADOS from FERIADOS where FECHA between '2017-12-29' and '2018-05-15' //lo que me da un total de 7, pero el problema es que no se como agregar una subconsulta dentro de un select en QlikView

TramiteCalculado:

LOAD TRAMITE,

          FECHA_REGISTRO,

          FECHA_CORTE,

          NetWorkDays(FECHA_REGISTRO, FECHA_CORTE) as DIAS_TRASCURRIDOS, //días hábiles

          DIAS_FERIADOS, //calcular para luego poder restar entre DIAS_TRASCURRIDOS y obtener DIAS_TOTAL

          DIAS_TOTAL // DIAS_TRASCURRIDOS - DIAS_FERIADOS

FROM [path\Tramites.qvd] (qvd);

STORE *from TramiteCalculado into path\TramiteCalculado.qvd;

DROP Table TramiteCalculado;

El reporte debería quedar de la siguiente manera:

TRAMITEFECHA_REGISTROFECHA_CORTEDIAS_TRASCURRIDOSDIAS_FERIADOSDIAS_TOTAL
12017-12-292018-05-151647157
22018-02-102018-05-151336127
32018-03-192018-05-151084104
42018-04-052018-05-1595392
52018-05-102018-05-1570268
62018-05-142018-05-1568266

Por favor si alguien puede ayudarme con este problema o darme una pista de cómo hacerlo si existiese otro método se lo agradecería infinitamente.

Gracias de antemano

Saludos,

PJ

1 Reply
pauljara
Contributor II
Contributor II
Author

Ya lo logré, resulta que dentro de la misma función NetWorkDays puedes agregar los días festivos; yo lo hice mas o menos así:

TramiteCalculado:

LOAD TRAMITE,

          FECHA_REGISTRO,

          FECHA_CORTE,

          NetWorkDays(FECHA_REGISTRO, FECHA_CORTE) as DIAS_TRASCURRIDOS, //días hábiles

          NetWorkDays(FECHA_REGISTRO, FECHA_CORTE,    '2018-01-01',

                                                    '2018-02-12',

                                                    '2018-02-13',

                                                    '2018-03-30',

                                                    '2018-05-01',

                                                    '2018-05-25',

                                                    '2018-08-10',

                                                    '2018-10-08',

                                                    '2018-11-02'

                                                    ) as DIAS_LABORABLES

          FROM [path\Tramites.qvd] (qvd);

STORE *from TramiteCalculado into path\TramiteCalculado.qvd;

DROP Table TramiteCalculado;

Es decir, la función NetWorkDays excluye por defecto el conteo de los fines de semana y para excluir también los días festivos, se debe agregar la fecha específica de cada uno de los días que no se laboraron y que se desee que no se contabilice.

Espero le sirva a alguien

Saludos,

PJ