The code below has the filename in the code but it could be loaded into the QlikView document by including the filename as a variable in the command line execution of QlikView (for an example, search on "qlikview maven command line and automation"). Other options include building a loop and loading each of files in a folder (search on “qlikview maven loading all of the files from a folder”); or, if you are comfortable with macro module code, you could use a browse-for-file technique to make it easy to find and load a filename (search on “qlikview maven browse-for-file macro button”).
Here’s the loadscript example code: (some of the long lines are wrapped around as you view the code in the blog window but they will go back to normal if you copy and paste the code into a text file or loadscript edit window)
Set xfile='customer_data_12.csv'; //file pathname
Let xfile=Upper('$(xfile)'); //optional convert to upper case
FIELDDAY: //load first record only
Load * from $(xfile)
(txt, no labels, delimiter is '|')
where recno()=1; //note "no labels"
Set loadstatement='Load '; //now, build the Load statement
For i=1 to 100
if '$(fn)'='' then
if $(i)=1 then
Let loadstatement='$(loadstatement) @$(i) as [$(fn)]';
Let loadstatement='$(loadstatement), @$(i) as [$(fn)]';
$(xfile): //QlikView table name
(txt, no labels, header is 1 line, delimiter is '|'); //change delimiter character as needed
Drop table FIELDDAY;
Store $(xfile) into $(xfile).qvd (qvd); //optional save as qvd
//Drop table $(xfile); //optional drop table
Change the file attributes as needed for your situation: for example, Excel files, skip over unneeded header records, different delimiter, etc.
There are two important ideas illustrated in the example: first, the idea of loading the header record of a file and building a custom load statement on the spot; second, the idea that you can construct any loadscript statement or part of a statement in a variable and execute it just by putting the variable in the right place in the loadscript.
This technique helped me in a recent project where the data files were supplied with field names in the header record but all of the field names needed a little modification in order to use them. Some of them I converted to upper case and some of them needed to have special characters removed. It was easy to add the necessary text functions to edit the field names as the code assembled the load statement.
It will help you debug and validate this technique if you set the document properties option to write out a loadscript log file when the loadscript runs. The log file will show all of the lines in the loadscript as they were executed with variables fully expanded.