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: 
Not applicable

Join tables from an excel file and from SQL Server:

Tried to do this the traditional way (just load the 2 tables and fields with the same name will be automatically joined) but the fields I load in second place from the excel file are not available after loading.

Maybe I should save the 2 tables first to a qvd and then load the qvd's again so I can join them?

1 Solution

Accepted Solutions
Not applicable
Author

My previous answer just had a small bug: I was using the + sign instead of the & sign to concatenate strings.

Here's the final solution:

TEMP_BILLING_FREQUENCY:

SQL SELECT  CSI.dbo."IN_Contracts"."Client_Code" as Client_Code,

     "Contract_Name",

     "StartDate",

     "EndDate",

     "Region",

     "BillingFrequency",

     "Consumption_Type",

     "Billing_Type",

     "RU_Name",

     "BillingFrequency_Description",

     "BillingFrequency" as Source

FROM CSI.dbo."IN_ResourceUnits"

INNER JOIN CSI.dbo."IN_Contracts" ON CSI.dbo."IN_Contracts"."Snapshot_Date" = CSI.dbo."IN_ResourceUnits"."Snapshot_Date"

AND CSI.dbo."IN_Contracts"."Client_Code" = CSI.dbo."IN_ResourceUnits"."Client_Code";

BILLING_FREQUENCY_MAPPING:

Mapping LOAD

     BillingFrequency & '_' & BillingFrequency_Description, BILLING_FREQUENCY_LEVEL1

FROM

[..\..\..\Data\WW\CSI_Dashboard\CSI Reporting_w3_BILLING FREQUENCY_MAPPING.xlsx]

(ooxml, embedded labels, table is [CSI Data]);

BILLING_FREQUENCY:

load

  0.3 as [WEIGHTED RECORD_CONTRACT COUNT],

  ApplyMap('BILLING_FREQUENCY_MAPPING' , TEMP_BILLING_FREQUENCY.BillingFrequency & '_' & TEMP_BILLING_FREQUENCY.BillingFrequency_Description, 'UNKNOWN' ) as BILLING_FREQUENCY_LEVEL1,

  TEMP_BILLING_FREQUENCY.Client_Code as Client_Code,

    TEMP_BILLING_FREQUENCY.Contract_Name as Contract_Name,

    TEMP_BILLING_FREQUENCY.StartDate as StartDate,

    TEMP_BILLING_FREQUENCY.EndDate as EndDate,

    TEMP_BILLING_FREQUENCY.Region as Region,

    TEMP_BILLING_FREQUENCY.BillingFrequency as BillingFrequency,

    TEMP_BILLING_FREQUENCY.Consumption_Type as Consumption_Type,

    TEMP_BILLING_FREQUENCY.Billing_Type as Billing_Type,

    TEMP_BILLING_FREQUENCY.RU_Name as RU_Name,

    TEMP_BILLING_FREQUENCY.BillingFrequency_Description as BillingFrequency_Description,

    TEMP_BILLING_FREQUENCY.Source as Source

resident TEMP_BILLING_FREQUENCY;

STORE BILLING_FREQUENCY into  [..\..\..\QVD\WW\CSI_Dashboard\BILLING_FREQUENCY.qvd](qvd);

View solution in original post

9 Replies
Anonymous
Not applicable
Author

Miguel

Could you share your load script ?

Best Regards,     Bill

Not applicable
Author

First Attempt:

TEMP_BILLING_FREQUENCY:

SQL SELECT  CSI.dbo."IN_Contracts"."Client_Code",

     "Contract_Name",

     "StartDate",

     "EndDate",

     "Region",

     "BillingFrequency",

     "Consumption_Type",

     //"BILLING_FREQUENCY_LEVEL1",

     "Billing_Type",

     "RU_Name",

     "BillingFrequency_Description",

     "BillingFrequency" as Source

FROM CSI.dbo."IN_ResourceUnits"

INNER JOIN CSI.dbo."IN_Contracts" ON CSI.dbo."IN_Contracts"."Snapshot_Date" = CSI.dbo."IN_ResourceUnits"."Snapshot_Date"

AND CSI.dbo."IN_Contracts"."Client_Code" = CSI.dbo."IN_ResourceUnits"."Client_Code";

BILLING_FREQUENCY_MAPPING:

LOAD BILLING_FREQUENCY_LEVEL1,

     BillingFrequency,

     BillingFrequency_Description

FROM

[..\..\..\Data\WW\CSI_Dashboard\CSI Reporting_w3_BILLING FREQUENCY_MAPPING.xlsx]

(ooxml, embedded labels, table is [CSI Data]);

Load *

resident TEMP_BILLING_FREQUENCY;

inner join(TEMP_BILLING_FREQUENCY)

BILLING_FREQUENCY:

load*

resident BILLING_FREQUENCY_MAPPING;

DROP TABLE BILLING_FREQUENCY_MAPPING;

DROP TABLE TEMP_BILLING_FREQUENCY;

STORE BILLING_FREQUENCY into  [..\..\..\QVD\WW\CSI_Dashboard\BILLING_FREQUENCY.qvd](qvd);

Second attempt:

TEMP_BILLING_FREQUENCY:

SQL SELECT  CSI.dbo."IN_Contracts"."Client_Code",

     "Contract_Name",

     "StartDate",

     "EndDate",

     "Region",

     BillingFrequency,

     "Consumption_Type",

     //"BILLING_FREQUENCY_LEVEL1",

     "Billing_Type",

     "RU_Name",

     BillingFrequency_Description,

     "BillingFrequency" as Source

FROM CSI.dbo."IN_ResourceUnits"

INNER JOIN CSI.dbo."IN_Contracts" ON CSI.dbo."IN_Contracts"."Snapshot_Date" = CSI.dbo."IN_ResourceUnits"."Snapshot_Date"

AND CSI.dbo."IN_Contracts"."Client_Code" = CSI.dbo."IN_ResourceUnits"."Client_Code";

STORE TEMP_BILLING_FREQUENCY into  [..\..\..\QVD\WW\CSI_Dashboard\TEMP_BILLING_FREQUENCY.qvd](qvd);

//DROP TABLE TEMP_BILLING_FREQUENCY;

Inner join (TEMP_BILLING_FREQUENCY)

LOAD BILLING_FREQUENCY_LEVEL1,

     BillingFrequency,

     BillingFrequency_Description

FROM

[..\..\..\Data\WW\CSI_Dashboard\CSI Reporting_w3_BILLING FREQUENCY_MAPPING.xlsx]

(ooxml, embedded labels, table is [CSI Data]);

Not applicable
Author

My last attempt also didn't work, saving on QVD files first:

QUALIFY *;

TEMP_BILLING_FREQUENCY:

SQL SELECT  CSI.dbo."IN_Contracts"."Client_Code",

     "Contract_Name",

     "StartDate",

     "EndDate",

     "Region",

     BillingFrequency,

     "Consumption_Type",

     //"BILLING_FREQUENCY_LEVEL1",

     "Billing_Type",

     "RU_Name",

     BillingFrequency_Description,

     'BILLING_FREQUENCY' as Source

FROM CSI.dbo."IN_ResourceUnits"

INNER JOIN CSI.dbo."IN_Contracts" ON CSI.dbo."IN_Contracts"."Snapshot_Date" = CSI.dbo."IN_ResourceUnits"."Snapshot_Date"

AND CSI.dbo."IN_Contracts"."Client_Code" = CSI.dbo."IN_ResourceUnits"."Client_Code";

STORE TEMP_BILLING_FREQUENCY into  [..\..\..\QVD\WW\CSI_Dashboard\TEMP_BILLING_FREQUENCY.qvd](qvd);

DROP TABLE TEMP_BILLING_FREQUENCY;

TEMP_BILLING_FREQUENCY_LEVEL1:

LOAD BILLING_FREQUENCY_LEVEL1,

     BillingFrequency,

     BillingFrequency_Description

FROM

[..\..\..\Data\WW\CSI_Dashboard\CSI Reporting_w3_BILLING FREQUENCY_MAPPING.xlsx]

(ooxml, embedded labels, table is [CSI Data]);

STORE TEMP_BILLING_FREQUENCY_LEVEL1 into  [..\..\..\QVD\WW\CSI_Dashboard\TEMP_BILLING_FREQUENCY_LEVEL1.qvd](qvd);

DROP TABLE TEMP_BILLING_FREQUENCY_LEVEL1;

BILLING_FREQUENCY:

LOAD TEMP_BILLING_FREQUENCY.Client_Code as Client_Code,

     TEMP_BILLING_FREQUENCY.Contract_Name as Contract_Name,

     TEMP_BILLING_FREQUENCY.StartDate as StartDate,

     TEMP_BILLING_FREQUENCY.EndDate as EndDate,

     TEMP_BILLING_FREQUENCY.Region as Region,

     TEMP_BILLING_FREQUENCY.BillingFrequency as BillingFrequency,

     TEMP_BILLING_FREQUENCY.Consumption_Type as Consumption_Type,

     TEMP_BILLING_FREQUENCY.Billing_Type as Billing_Type,

     TEMP_BILLING_FREQUENCY.RU_Name as RU_Name,

     TEMP_BILLING_FREQUENCY.BillingFrequency_Description as BillingFrequency_Description,

     TEMP_BILLING_FREQUENCY.Source as Source

FROM

[..\..\..\QVD\WW\CSI_Dashboard\TEMP_BILLING_FREQUENCY.qvd]

(qvd);

inner join(BILLING_FREQUENCY)

LOAD TEMP_BILLING_FREQUENCY_LEVEL1.BILLING_FREQUENCY_LEVEL1 as BILLING_FREQUENCY_LEVEL1,

     TEMP_BILLING_FREQUENCY_LEVEL1.BillingFrequency as BillingFrequency,

     TEMP_BILLING_FREQUENCY_LEVEL1.BillingFrequency_Description as BillingFrequency_Description

FROM

(qvd);

Anonymous
Not applicable
Author

Miguel

I am guessing what you are trying but it looks like you wish to replace the BILLING_FREQUENCY_LEVEL1 held on your database with the value held in your xlsx.

If that is the case I'd suggest a Mapping Load and an ApplyMap() via a Preceding Load, as in something like this:

Level1Map :

Mapping LOAD

     BillingFrequency,

     BILLING_FREQUENCY_LEVEL1

FROM

[..\..\..\Data\WW\CSI_Dashboard\CSI Reporting_w3_BILLING FREQUENCY_MAPPING.xlsx]

(ooxml, embedded labels, table is [CSI Data]);

BILLING_FREQUENCY:

Load

  ApplyMap('Level1Map' , [BillingFrequency] ) as BILLING_FREQUENCY_LEVEL1

  *

;

SQL SELECT  CSI.dbo."IN_Contracts"."Client_Code",

     "Contract_Name",

     "StartDate",

     "EndDate",

     "Region",

     BillingFrequency,

     "Consumption_Type",

     //"BILLING_FREQUENCY_LEVEL1",

     "Billing_Type",

     "RU_Name",

     BillingFrequency_Description,

     'BILLING_FREQUENCY' as Source

FROM CSI.dbo."IN_ResourceUnits"

INNER JOIN CSI.dbo."IN_Contracts" ON CSI.dbo."IN_Contracts"."Snapshot_Date" = CSI.dbo."IN_ResourceUnits"."Snapshot_Date"

AND CSI.dbo."IN_Contracts"."Client_Code" = CSI.dbo."IN_ResourceUnits"."Client_Code";

I may badly guessed, in which case please clarify.

Best Regards,     Bill

Not applicable
Author

Almost.

I need to link  BillingFrequency + BillingFrequency_Description with BILLING_FREQUENCY_LEVEL1.

So my old script was:

BILLING_FREQUENCY:

LOAD [WEIGHTED RECORD_CONTRACT COUNT],

    Client_Code,

    Contract_Name,

    StartDate,

    EndDate,

    Region,

    BillingFrequency,

    Consumption_Type,

    BILLING_FREQUENCY_LEVEL1,

    Billing_Type,

    RU_Name,

    BillingFrequency_Description,

    'BILLING_FREQUENCY' as Source

FROM

[..\..\..\Data\WW\CSI_Dashboard\CSI Reporting_w3_BILLING FREQUENCY.xlsx]

(ooxml, embedded labels, table is [Raw Data]);

STORE BILLING_FREQUENCY into  [..\..\..\QVD\WW\CSI_Dashboard\BILLING_FREQUENCY.qvd](qvd);

And the new script is:

BILLING_FREQUENCY:
SQL SELECT CSI.dbo."IN_Contracts"."Client_Code",
"Contract_Name",
"StartDate",
"EndDate",
"Region",
"BillingFrequency",
"Consumption_Type",
//"BILLING_FREQUENCY_LEVEL1",
    "Billing_Type",
"RU_Name",
"BillingFrequency_Description",
"BillingFrequency" as Source
FROM CSI.dbo."IN_ResourceUnits"
INNER JOIN CSI.dbo."IN_Contracts" ON CSI.dbo."IN_Contracts"."Snapshot_Date" = CSI.dbo."IN_ResourceUnits"."Snapshot_Date"
AND CSI.dbo."IN_Contracts"."Client_Code" = CSI.dbo."IN_ResourceUnits"."Client_Code";


LOAD BILLING_FREQUENCY_LEVEL1,
BillingFrequency,
BillingFrequency_Description
FROM
[..\..\..\Data\WW\CSI_Dashboard\CSI Reporting_w3_BILLING FREQUENCY_MAPPING.xlsx]
(
ooxml, embedded labels, table is [CSI Data]);
STORE BILLING_FREQUENCY into  [..\..\..\QVD\WW\CSI_Dashboard\BILLING_FREQUENCY.qvd](qvd);


Does your ApplyMap maps 2 columns into 1 (like BillingFrequency + BillingFrequency_Description into BILLING_FREQUENCY_LEVEL1)?

Anonymous
Not applicable
Author

Miguel

Sorry if I am being stupid, could you clarify the end result you want when you say:

Does your ApplyMap maps 2 columns into 1 (likeBillingFrequency + BillingFrequency_Description intoBILLING_FREQUENCY_LEVEL1)?

Are you after :

    A concatenated key of BillingFrequency + BillingFrequency_Description for the link ?

    Or ending up with 2 separate fields for  BillingFrequency & BillingFrequency_Description ?

Best Regards,    Bill


Not applicable
Author

I want both.

So I'm after:


A concatenated key of BillingFrequency +BillingFrequency_Description for the link

And ending up with 3 separate fields in the final table for  BillingFrequency, BillingFrequency_Description, BILLING_FREQUENCY_LEVEL1.


Thanks,

Miguel

Not applicable
Author

This is my last attempt so far, but unfortunately it shows ANNUALLY in all rows for the column BILLING_FREQUENCY_LEVEL1:

TEMP_BILLING_FREQUENCY:

SQL SELECT  CSI.dbo."IN_Contracts"."Client_Code" as Client_Code,

     "Contract_Name",

     "StartDate",

     "EndDate",

     "Region",

     "BillingFrequency",

     "Consumption_Type",

     //"BILLING_FREQUENCY_LEVEL1",

     "Billing_Type",

     "RU_Name",

     "BillingFrequency_Description",

     "BillingFrequency" as Source

FROM CSI.dbo."IN_ResourceUnits"

INNER JOIN CSI.dbo."IN_Contracts" ON CSI.dbo."IN_Contracts"."Snapshot_Date" = CSI.dbo."IN_ResourceUnits"."Snapshot_Date"

AND CSI.dbo."IN_Contracts"."Client_Code" = CSI.dbo."IN_ResourceUnits"."Client_Code";

BILLING_FREQUENCY_MAPPING:

Mapping LOAD

     BillingFrequency + '_' + BillingFrequency_Description, BILLING_FREQUENCY_LEVEL1

FROM

[..\..\..\Data\WW\CSI_Dashboard\CSI Reporting_w3_BILLING FREQUENCY_MAPPING.xlsx]

(ooxml, embedded labels, table is [CSI Data]);

BILLING_FREQUENCY:

load

  0.3 as [WEIGHTED RECORD_CONTRACT COUNT],

  ApplyMap('BILLING_FREQUENCY_MAPPING' , TEMP_BILLING_FREQUENCY.BillingFrequency + '_' + TEMP_BILLING_FREQUENCY.BillingFrequency_Description, ' ' ) as BILLING_FREQUENCY_LEVEL1,

  TEMP_BILLING_FREQUENCY.Client_Code as Client_Code,

    TEMP_BILLING_FREQUENCY.Contract_Name as Contract_Name,

    TEMP_BILLING_FREQUENCY.StartDate as StartDate,

    TEMP_BILLING_FREQUENCY.EndDate as EndDate,

    TEMP_BILLING_FREQUENCY.Region as Region,

    TEMP_BILLING_FREQUENCY.BillingFrequency as BillingFrequency,

    TEMP_BILLING_FREQUENCY.Consumption_Type as Consumption_Type,

    TEMP_BILLING_FREQUENCY.Billing_Type as Billing_Type,

    TEMP_BILLING_FREQUENCY.RU_Name as RU_Name,

    TEMP_BILLING_FREQUENCY.BillingFrequency_Description as BillingFrequency_Description,

    TEMP_BILLING_FREQUENCY.Source as Source

resident TEMP_BILLING_FREQUENCY;

STORE BILLING_FREQUENCY into  [..\..\..\QVD\WW\CSI_Dashboard\BILLING_FREQUENCY.qvd](qvd);

Not applicable
Author

My previous answer just had a small bug: I was using the + sign instead of the & sign to concatenate strings.

Here's the final solution:

TEMP_BILLING_FREQUENCY:

SQL SELECT  CSI.dbo."IN_Contracts"."Client_Code" as Client_Code,

     "Contract_Name",

     "StartDate",

     "EndDate",

     "Region",

     "BillingFrequency",

     "Consumption_Type",

     "Billing_Type",

     "RU_Name",

     "BillingFrequency_Description",

     "BillingFrequency" as Source

FROM CSI.dbo."IN_ResourceUnits"

INNER JOIN CSI.dbo."IN_Contracts" ON CSI.dbo."IN_Contracts"."Snapshot_Date" = CSI.dbo."IN_ResourceUnits"."Snapshot_Date"

AND CSI.dbo."IN_Contracts"."Client_Code" = CSI.dbo."IN_ResourceUnits"."Client_Code";

BILLING_FREQUENCY_MAPPING:

Mapping LOAD

     BillingFrequency & '_' & BillingFrequency_Description, BILLING_FREQUENCY_LEVEL1

FROM

[..\..\..\Data\WW\CSI_Dashboard\CSI Reporting_w3_BILLING FREQUENCY_MAPPING.xlsx]

(ooxml, embedded labels, table is [CSI Data]);

BILLING_FREQUENCY:

load

  0.3 as [WEIGHTED RECORD_CONTRACT COUNT],

  ApplyMap('BILLING_FREQUENCY_MAPPING' , TEMP_BILLING_FREQUENCY.BillingFrequency & '_' & TEMP_BILLING_FREQUENCY.BillingFrequency_Description, 'UNKNOWN' ) as BILLING_FREQUENCY_LEVEL1,

  TEMP_BILLING_FREQUENCY.Client_Code as Client_Code,

    TEMP_BILLING_FREQUENCY.Contract_Name as Contract_Name,

    TEMP_BILLING_FREQUENCY.StartDate as StartDate,

    TEMP_BILLING_FREQUENCY.EndDate as EndDate,

    TEMP_BILLING_FREQUENCY.Region as Region,

    TEMP_BILLING_FREQUENCY.BillingFrequency as BillingFrequency,

    TEMP_BILLING_FREQUENCY.Consumption_Type as Consumption_Type,

    TEMP_BILLING_FREQUENCY.Billing_Type as Billing_Type,

    TEMP_BILLING_FREQUENCY.RU_Name as RU_Name,

    TEMP_BILLING_FREQUENCY.BillingFrequency_Description as BillingFrequency_Description,

    TEMP_BILLING_FREQUENCY.Source as Source

resident TEMP_BILLING_FREQUENCY;

STORE BILLING_FREQUENCY into  [..\..\..\QVD\WW\CSI_Dashboard\BILLING_FREQUENCY.qvd](qvd);