Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hello,
I am wondering if it is possible to use a variable to choose what field name is necessary. The problem is a vendor sends csv files and they have changed their field name from User_Name to Employee_Name. I set up a temporary table to read which field name is used for a certain file. I then store the correct field name into a variable and load the actual table. Problem is the variable is storing 'User_Name' or 'Employee_Name' as the value of the field. Is it possible to set the field name as the variable but load in the data from the file.
Here is my script:
For Each vFile in FileList('$(vUserTable_Source)') Tmp: First 1 Load if(SubStringCount( '|' & @1&'|' & '|' & @2& '|' & @3& '|' & @4& '|' & @5& '|' & @6& '|' & @7& '|' & @8& '|' & @9& '|' & @10& '|' & @11& '|' & @12& '|' & @13& '|' & @14& '|' & @15& '|' & @16& '|' & @17& '|' & @18& '|' & @19& '|' & @20& '|' & @21& '|' & @22& '|' & @23& '|' & @24& '|' & @25& '|' & @26& '|' & @27& '|' & @28& '|' & @29& '|' & @30& '|' & @31& '|' & @32& '|' & @33& '|' & @34& '|' & @35& '|' & @36& '|' & @37& '|' & @38& '|' & @39& '|' & @40& '|' & @41& '|' & @42& '|' & @43& '|' & @44& '|' & @45& '|' & @46& '|' & @47& '|' & @48& '|' & @49& '|' & @50& '|' ,'|User_Name |')>0,'User_Name','Employee_Name') as User_Name from [$(vFile)] (txt, codepage is 28591, no labels, delimiter is ',', msq); LET vUser_Name = PEEK('User_Name', 0, 'Tmp'); drop table Tmp; UserTable: LOAD FileTime() as File_Time, Email, "Recipient Name", "New/Repeat Reporter", "Reported Phish Timestamp", "Time to Report (in seconds)", "Remote IP", "GeoIP Country", "GeoIP City", $(vUser_Name) as User_Name, BUSINESS_GROUP, "USERID", EMPLID, DEPTID FROM [$(vFile)] (txt, codepage is 28591, embedded labels, delimiter is ',', msq); next vFile;
It may be easiest to solve this by using ALIAS. See https://qlikviewcookbook.com/2018/12/loading-varying-column-names/
-Rob
http://masterssummit.com
http://qlikviewcookbook.com
http://www.easyqlik.com
You could use REname here please check its functionality in the below link
So here you can have the Excel with Changed Field names and deal with it accordingly
Hi,
Maybe you can use this approach:
// Load the two data structures [UserTable]: LOAD * INLINE [ File_Time, Email, "Recipient Name", "New/Repeat Reporter","Reported Phish Timestamp","Time to Report (in seconds)","Remote IP","GeoIP Country","GeoIP City",User_Name,BUSINESS_GROUP,"USERID",EMPLID,DEPTID ]; [TempEmployeeTable]: LOAD * INLINE [ File_Time, Email, "Recipient Name", "New/Repeat Reporter","Reported Phish Timestamp","Time to Report (in seconds)","Remote IP","GeoIP Country","GeoIP City",Employee_Name,BUSINESS_GROUP,"USERID",EMPLID,DEPTID ]; // Load all your data files without specifying any field or table name // The data from the files will land automatically in one of the data structures loaded above For Each vFile In FileList('lib://TestData/*.csv') LOAD FileTime() AS File_Time, * FROM [$(vFile)] (txt, codepage is 28591, embedded labels, delimiter is ',', msq) ; Next vFile // Now rename the TempEmployeeTable in the way that you need and drop the TempEmployeeTable // Note you can't use RENAME FIELD [Employee_Name] TO [User_Name] in this case here because User_Name already exists CONCATENATE([UserTable]) LOAD File_Time, Email, "Recipient Name", "New/Repeat Reporter", "Reported Phish Timestamp", "Time to Report (in seconds)", "Remote IP", "GeoIP Country", "GeoIP City", Employee_Name AS User_Name, BUSINESS_GROUP, "USERID", EMPLID, DEPTID RESIDENT [TempEmployeeTable] ; DROP TABLE [TempEmployeeTable];
Regards,
Mark Costa
It may be easiest to solve this by using ALIAS. See https://qlikviewcookbook.com/2018/12/loading-varying-column-names/
-Rob
http://masterssummit.com
http://qlikviewcookbook.com
http://www.easyqlik.com
@rwunderlich that is awesome, I didn't know about the ALIAS statement.
Thank you,
Mark Costa