10 Replies Latest reply: Jul 16, 2014 9:17 AM by Nisha Nangalia RSS

    Vlookup

    Nisha Nangalia

      Hello,

       

      I have two tables, one with 2 columns and other with 3 coulmns. In second table 1 coulmn in merger of columns of first table. We want to combine the  two tables in a way that first table-two columns and second tables 2 two columns come together. The column which is merger of two columns of will not be in the output but the data maps correctly.

       

      We have tried to do this with help of two join. However is there any other optimal solution ?

       

      Please find attached example for same.

       

      Thanks,

      Nish

        • Re: Vlookup
          Tresesco B

          Read about Applymap() in qv.

          • Re: Vlookup
            Deepak Tibhe

            Hi,

             

            You can chk applymap function along with mapping load in qlikview.

            It works as lookup function in SQL.

             

             

            Thanks,

            Deepak

            • Re: Vlookup
              Deepak Tibhe

              please tell ,what is your requirement

               

              Thanks

              • Re: Vlookup
                Mohit Sharma

                Hi

                Try this code in your application and reload it

                Table1:

                LOAD * Inline [

                TID, SID

                1, 10

                2, 20

                3, 30

                ];

                 

                 

                Table2:

                LOAD if(Exists(TID,FID),FID,'') as TID,

                if(Exists(SID,FID),FID,'') as SID, * Inline [

                FID, Country, Pin

                1, abc, 100

                2, efg, 100

                10, def, 200

                30, abc, 200

                3, efg, 300

                20, def, 300

                ];

                 

                 

                 

                 

                DROP Table Table1;

                DROP Field FID;

                 

                 

                See attached file Also

                  • Re: Vlookup
                    Deepak Tibhe

                    Hi mohit,

                     

                    Can you please tell me how

                    LOAD if(Exists(TID,FID),FID,'') as TID,

                    if(Exists(SID,FID),FID,'') as SID,

                     

                    Will work as  you are not using any resident load here.

                     

                    thanks,

                      • Re: Vlookup
                        Mohit Sharma

                        Hi

                        Read in help about exist function briefly

                        This function works with previous loaded  table field and on basis of that i match the FID value to call one by one as per requirement.

                        Here's definition

                        exists(field [ , expression ] )

                        Determines whether a specific field value exists in a specified field of the data loaded so far. Field is a name or a string expression evaluating to a field name. The field must exist in the data loaded so far by the script. Expr is an expression evaluating to the field value to look for in the specified field. If omitted, the current record’s value in the specified field will be assumed.

                        Examples:

                        exists(Month, 'Jan') returns -1 (true) if the field value 'Jan' is found in the current content of the field Month.

                        exists(IDnr, IDnr) returns -1 (true) if the value of the field IDnr in the current record already exists in any previously read record containing that field.

                        exists (IDnr) is identical to the previous example.

                        Load Employee, ID, Salary from Employees.csv;
                        Load FirstName& ' ' &LastName as Employee, Comment from Citizens.csv where exists (Employee, FirstName& ' ' &LastName);
                        Only comments regarding those citizens who are employees are read.

                        Load A, B, C, from Employees.csv where not exists (A);
                        This is equivalent to performing a distinct load on field A.

                    • Re: Vlookup
                      Martyn Lloyd

                      My solution, paste into new doc to test, then simply change the residents to point at your tables:

                       

                      // create test data

                      Table1:
                      LOAD * Inline [
                      TID, SID
                      1, 10
                      2, 20
                      3, 30
                      ];

                       

                      Table2:
                      LOAD * Inline [
                      FID, Country, Pin
                      1, abc, 100
                      2, efg, 100
                      10, def, 200
                      30, abc, 200
                      3, efg, 300
                      20, def, 300
                      ];

                      // end test data


                      Output:
                      LOAD
                      TID as KEY,
                      TID
                      Resident Table1;

                       

                      Concatenate
                      LOAD
                      SID as KEY,
                      SID
                      Resident Table1;

                       

                      Left join (Output)
                      LOAD
                      FID as KEY,
                      Country,
                      Pin
                      Resident Table2;

                       

                      Drop Tables Table1, Table2;