Qlik Community

New to QlikView

Discussion board where members can get started with QlikView.

Announcements
Make your voice heard! Participate in the 2020 Wisdom of Crowds® Survey. BEGIN SURVEY
Highlighted
krishna20
Valued Contributor II

Employee Count

Hi Folks,

I'm having a Employee_Leave table consists of LEAVE_START_DATE and LEAVE_END DATE. I need to show the employee's leave count and remaining leaves. How can we show it in the dashboard? I'm planning to show with arbitrary date ranges.i.e., when the start date selected the employees on leave will be shown.

But having a doubt to implement this scenario. In the arbitrary date range only one date will be used as LEAVE_START_DATE and end date. Where i need to consider the LEAVE_END_DATE??How the two dates will be combined as one? and How can i show this scenario clearly to understand.Please anyone suggest me.Kindly find the sample app.

15 Replies
Highlighted
krishna20
Valued Contributor II

Re: Employee Count

Hi Friends,

Can anyone please suggest.It's urgent and needed..

Highlighted
Partner
Partner

Re: Employee Count

Maybe this will help: Canonical Date

What you need is to have another table where the leave and coming back date is related to each customer. For example, you'd have employee E in Table T1 that is associated to the table T2 by the employee's ID, this table having the fields LeaveDate and LeaveEndDate, as well as a filled called CanonicalDate.

T1(EmployeeID, EmployeeName....)

T2(EmployeeID,LeaveDate,LeaveEndDate,CanonicalDate)

When you use the dates in your UI, you'd use the CanonicalDate field.

Highlighted
dfoster9
Valued Contributor

Re: Employee Count

Hi krishna20

You sample app contains no data, so it was difficult to understand what you are trying to achieve.

In this kind of situation where you want to query your data using arbitrary dates that may fall inside the date range of a leave record I would recommend you use a WHILE LOOP in your load statement to explode your data into single day/date records. That way at any date you can calculate how many day's leave each employee has taken and how many they have left.

If you can provide an example with data I could add an example WHILE loop.

Highlighted
krishna20
Valued Contributor II

Re: Employee Count

Hi David / Sorin,

Thank you for valuable reply. Data is there.For some dates there is no values.Please check it by selecting the LEAVE_START_YEAR and LEAVE_END_YEAR.Please, guide me how to show the information clearly.

Highlighted

Re: Employee Count

hi ,

I this case you need to create a link table which combines both the date and finally link the combine date with calendar

try like this :

EG:

Emp_Details:

LOAD EMPID,

LEAVE_START_DATE ,

LEAVE_END DATE

....

from table



Link_Table:

load EMPID,

LEAVE_START_DATE as Date_Key

resident

Emp_Details;


Load EMPID,

LEAVE_END DATE as Date_Key

resident

Emp_Details;



Calendar:

LOAD Date as Date_Key,

.....



NOTE:* Keep all the date format same.

*In the calendar using this new date i.e Date_key and count the leaves accordingly


Highlighted
dfoster9
Valued Contributor

Re: Employee Count

When I downloaded the .qvw there was a load script but no data and no charts/tables

  

David Foster

Senior QlikView consultant

Highlighted
vikasmahajan
Esteemed Contributor

Re: Employee Count

Go as per Manish Solution it worked for me

https://community.qlik.com/thread/153749

HTH

Vikas

Highlighted
krishna20
Valued Contributor II

Re: Employee Count

Hi Foster,

Please find the attachment and guide me with a view of objects ..

Highlighted
krishna20
Valued Contributor II

Re: Employee Count

Hi,

I'm confused to implement this linked table.Because the both date fields are coming from same table.whether i need to concatenate them or not and in the Master calendar whether i need to use START_DATE or END_DATE??Please suggest me as per  the  below code.

PER_ABSENCE_ATTENDANCES:

LOAD ABSENCE_ATTENDANCE_ID,

     ABSENCE_ATTENDANCE_TYPE_ID,

     ABS_ATTENDANCE_REASON_ID,

     ApplyMap('ABSENCE_REASON',ABS_ATTENDANCE_REASON_ID,NULL())as [LEAVE REASON],

     ApplyMap('LEAVE_TYPES',ABSENCE_ATTENDANCE_TYPE_ID,NULL())as [LEAVE TYPE],

     PERSON_ID,

      ABSENCE_DAYS,

     ABSENCE_HOURS,

     DATE_END ,

     DATE_START,

      TIME_END,

     TIME_START,

    LAST_UPDATE_DATE,

     LAST_UPDATED_BY,

     MATERNITY_ID,     

      DATE( SICKNESS_START_DATE,'DD/MM/YYYY') as [SICKNESS START DATE],

       DATE( SICKNESS_END_DATE,'DD/MM/YYYY') as [SICKNESS END DATE],

     APPROVAL_STATUS

FROM

(qvd);

Link_Table:

load PERSON_ID,

DATE_START as Date_Key

resident

PER_ABSENCE_ATTENDANCES;

LOAD PERSON_ID,

DATE_END as Date_Key

resident

PER_ABSENCE_ATTENDANCES;

Calendar:

QuartersMap: 

MAPPING LOAD  

rowno() as Month, 

'Q' & Ceil (rowno()/3) as Quarter 

AUTOGENERATE (12); 

 

Temp: 

Load 

               min(DATE_START) as minDate, 

               max(DATE_START) as maxDate 

Resident PER_ABSENCE_ATTENDANCES; 

 

Let varMinDate = Num(Peek('minDate', 0, 'Temp')); 

Let varMaxDate = Num(Peek('maxDate', 0, 'Temp')); 

DROP Table Temp; 

 

TempCalendar: 

LOAD 

               $(varMinDate) + Iterno()-1 As Num, 

               Date($(varMinDate) + IterNo() - 1) as TempDate 

               AutoGenerate 1 While $(varMinDate) + IterNo() -1 <= $(varMaxDate); 

 

Employee_Joining_MasterCalendar: 

Load 

               TempDate AS DATE_START, 

               week(TempDate) As Week, 

               Year(TempDate) As Year, 

               Month(TempDate) As Month, 

               Day(TempDate) As Day, 

               YeartoDate(TempDate)*-1 as CurYTDFlag, 

               YeartoDate(TempDate,-1)*-1 as LastYTDFlag, 

               inyear(TempDate, Monthstart($(varMaxDate)),-1) as RC12, 

               date(monthstart(TempDate), 'MMM-YYYY') as MonthYear, 

               ApplyMap('QuartersMap', month(TempDate), Null()) as Quarter, 

               Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as WeekYear, 

               WeekDay(TempDate) as WeekDay 

Resident TempCalendar 

Order By TempDate ASC; 

Drop Table TempCalendar;