Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
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