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

Load Multiple (only selected) Files, with condition

Hi,

I need help with this small problem. I have folder with list of qvd files:

dbf_pm201611

dbf_pm201612

dbf_pm201701

dbf_pm201702

dbf_pm201703

I usually use this code to trace all folder files and put them into one qvd file:

For Each vFile in FileList ('D:\DW\data_qvd\dbf_pm\dbf_pm*.qvd')

    TRACE $(vFile);   

   

    Files:

    LOAD

        '$(vFile)' as File

    AutoGenerate 1;   

NEXT vFile

LET vRows = NoOfRows('Files');

PM:

LOAD * INLINE [

    [REG]

];

For i = 0 to vRows - 1

    LET vFile = Peek('File', i, 'Files');

    TRACE $(vFile) ;

    Concatenate (PM)

    LOAD DATE(DATE#(DATUM,'DD/MM/YYYY'),'DD-MM-YYYY') as FDATUM,

    *

    FROM

    [$(vFile)](qvd);

Next i

STORE PM into D:\DW\poh.qvd(qvd);

   

//DROP Table Subory;

SET i = ;

SET vFile = ;

SET vRows = ;

And now I need condition wich can load only files from for example:

dbf_pm201701

dbf_pm201702

dbf_pm201703

1 Solution

Accepted Solutions
tamilarasu
Champion
Champion

Hi Ján,

Here is my version of code.

PM:

LOAD * INLINE [

    REG

];

For Each vFile in FileList ('D:\DW\data_qvd\dbf_pm\dbf_pm*.qvd')

IF '$(vFile)' like '*' & Year(Today()) & '*' THEN

    TRACE $(vFile) ;

    Concatenate (PM)

    LOAD DATE(DATE#(DATUM,'DD/MM/YYYY'),'DD-MM-YYYY') as FDATUM,

    *

    FROM

    [$(vFile)](qvd);

END IF

NEXT vFile

STORE PM into D:\DW\poh.qvd(qvd);

 

SET vFile = ;

View solution in original post

5 Replies
sunny_talwar

May be this

For Each vFile in FileList ('D:\DW\data_qvd\dbf_pm\dbf_pm*.qvd')

    TRACE $(vFile); 

 

    Files:

    LOAD

        '$(vFile)' as File,

       Date#(KeepChar('$(vFile)', ,0123456789'), 'YYYYMM') as Date

    AutoGenerate 1; 

NEXT vFile

FinalFiles:

LOAD File

Resident Files

Where Year(Date) = Year(Today());

DROP Table Files

LET vRows = NoOfRows('Files');

PM:

LOAD * INLINE [

    [REG]

];

.

.

.

adamdavi3s
Master
Master

Hi,


I leaned your code out a little for you, this is obviously an example which you can work from (hopefully) but if you want any changes then let me know?

For Each vFile in FileList ('D:\DW\data_qvd\dbf_pm\dbf_pm*.qvd')

  

   if WildMatch('$(vFile)','*2017*')>0 THEN

   TRACE loading: $(vFile); 

    PM:

LOAD DATE(DATE#(DATUM,'DD/MM/YYYY'),'DD-MM-YYYY') as FDATUM,

    *

    FROM

    [$(vFile)](qvd);

  ELSE

  TRACE ignoring: $(vFile); 

  endif

Next vFile

STORE PM into .\poh.qvd(qvd);

  

//DROP Table Subory;

SET i = ;

SET vFile = ;

SET vRows = ;

tamilarasu
Champion
Champion

Hi Ján,

Here is my version of code.

PM:

LOAD * INLINE [

    REG

];

For Each vFile in FileList ('D:\DW\data_qvd\dbf_pm\dbf_pm*.qvd')

IF '$(vFile)' like '*' & Year(Today()) & '*' THEN

    TRACE $(vFile) ;

    Concatenate (PM)

    LOAD DATE(DATE#(DATUM,'DD/MM/YYYY'),'DD-MM-YYYY') as FDATUM,

    *

    FROM

    [$(vFile)](qvd);

END IF

NEXT vFile

STORE PM into D:\DW\poh.qvd(qvd);

 

SET vFile = ;

vinieme12
Champion III
Champion III

Here is my version !

let vFiles = 'D:\DW\data_qvd\dbf_pm\dbf_pm'&Year(Today());

FACT:

Load *

From '$(vFiles)'*.QVD;

Vineeth Pujari
If a post helps to resolve your issue, please accept it as a Solution.
sunny_talwar

I like this