Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Max date in each of the file

I have multiple excel files.

My requirement is to filter only for the records where the DOJ is max (DOJ column) in each of the excel files

I could easily do this taking one excel file , at a time creating variable  finding max DOJ and  like wise using  same code for other excel separately  and concatenating the final result.

In attached 3 sample data

1. 201801 - Here max DOJ (Month-Year) is Jan-18 so I want only 2 records I want

2. 201802- Here max DOJ (Month-Year) is Feb-18 so I want only 3 records  I want

3. 201803- Here max DOJ (Month-Year) is Mar-18 so I want only 5 records I want

In final table would have total 10 r (5+2+3) records from the above 3 files.


So I am looking for a case  how to achieve the result  using iterative/loop steps to run on each of the file  how to achieve it rather then creating separate tabs for each file and using same code in it.



8 Replies
sewialwork
Partner - Contributor III
Partner - Contributor III

Use smth like this first:

tmp:

LOAD

     Month_Year,

     EMPID,

     DOJ,

     FileName() as File //this is how u can find name of the file for each row (https://help.qlik.com/en-US/qlikview/November2017/Subsystems/Client/Content/Scripting/FileFunctions/...)

FROM

// this is how you can load any file from the folder

(ooxml, embedded labels, table is Sheet1);

Then group your data with conditions you need and your file name. Read more here:https://help.qlik.com/en-US/qlikview/November2017/Subsystems/Client/Content/Scripting/ScriptRegularS...

Dont forget to drop tables and fields you dont need anymore.

Hope this will help)

AGB

marcus_sommer

Just try it with this approach:

load * from Path\*.xlsx where date(floor(monthend(DOJ)), 'DD-MMM-YY') = Month_Year;

- Marcus

arvind_patil
Partner - Specialist III
Partner - Specialist III

Hi ,

Kindly try Below:

FinalData:

LOAD

'03' as Source,

    Month_Year,

    EMPID,

    MonthStart(Date(DOJ)) as DOJ

FROM [lib://Bagic Master/201803.xlsx]

(ooxml, embedded labels, table is Sheet1) ;

Concatenate

LOAD

'02' as Source,

    Month_Year,

    EMPID,

    MonthStart(Date(DOJ)) as DOJ

FROM [lib://Bagic Master/201802.xlsx]

(ooxml, embedded labels, table is Sheet1);

Concatenate

LOAD

  '01' as Source,

    Month_Year,

    EMPID,

   MonthStart(Date(DOJ)) as DOJ

FROM [lib://Bagic Master/201801.xlsx]

(ooxml, embedded labels, table is Sheet1);

Right Join (FinalData)

LOAD Source,

  Max(DOJ) as DOJ

Resident FinalData

Group by Source;

Exit Script;

Thanks,

Arvind Patil

Anonymous
Not applicable
Author

Thanks Arvind.

Bur the requirement is what if we are dealing with multiple file if in case

i hv 10 files i vl have to do the same for 10 files.

I am looking for other alternatives.

Anonymous
Not applicable
Author

Hi Marcus,

Its but always DOJ might not be same as Month_Year

It could be that month year os 31-Mar-18 while for DOj max is 31-Jan-18 ..so we need to find max on basis of DOJ

manoranjan_d
Specialist
Specialist

may be like this

for each vFilename in filelist('path.filename.xls')

temp:

load

max(DOJ),

EMPID,

Monthyear

from$(vFilename)(biff...)

group by EMPID,MonthYear;

Next vFilename

store tablename into  path.qvd

marcus_sommer

Then maybe with an inner join filter like:

excel:

load *, date(floor(monthend(DOJ)), 'DD-MMM-YY') as Filter, filebasename() as Source

from Path\*.xlsx;

inner join(excel)

load Source, max(Filter) as Filter resident excel group by Source;

- Marcus

manoranjan_d
Specialist
Specialist

may be this can help you hope so

for each vFilename in filelist('path.filename.xls')

temp1:

load

date(DOJ,'MMM-YY)) as DOJ1,

ID,

Month_Year

DOJ

from$(vFilename)(biff...)

Next vFilename

inner join

temp1:

load

max(date(DOJ)'MMM-YY)) as DOJ1,

from$(vFilename)(biff...)

Next vFilename

step1: retrieveall the record from path

step2: retrieve only the max(doj)month-year and make inner join from path