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

Announcements
Qlik Connect 2026! Turn data into bold moves, April 13 -15: Learn More!
cancel
Showing results for 
Search instead for 
Did you mean: 
Rehan
Creator III
Creator III

Use only Overlapping Months

I have a requirements where I  have multiple extract dates in a single dataset and each extract date has multiple months .

For example :

Extract Date = May 2019 has Data for May 2019, June 2019, July 2019 up to Dec 2019

Extract Date = Mar 2019 has Data for Mar 2019, Apr 2019 ,May 2019, June 2019 up to Oct 2019

The requirement is I need data for only overlapping months between the 2 extract dates . In this case the overlapping months will be May 2019 Until Oct 2019.

How can I accomplish this ? Idealy I would like to create some sort of a flag in the script to get the overlapping months between 2 extract Dates.

37 Replies
Rehan
Creator III
Creator III
Author

I am not able to open the message you sent

Rehan
Creator III
Creator III
Author

The script I used:

//=== Extract the data Data: NoConcatenate LOAD date([Extract Date]) as [Extract Date], date([Forecast Date]) as [Forecast Date], Amount FROM [lib://Desktop/Sample_Data.xlsx] (ooxml, embedded labels, table is Data); //=== Create a table with all the possible Extract Months Extract_Months: NoConcatenate Load Distinct month([Extract Date]) as [Extract Month] Resident Data; //=== Loop over the Extract Months For i = 0 to (NoOfRows('Extract_Months') - 1); //=== Get the Extract Month Let vExtract_Month = Peek('Extract Month','$(i)','Extract_Months'); //=== Get all possible Forecast Months of the Extract Month Forecast_Months_tmp: NoConcatenate Load Distinct Month([Forecast Date]) as [Forecast Month] Resident [Data] Where month([Extract Date]) = '$(vExtract_Month)'; If i = 0 Then //=== Create a new table for all Forecast Months Rename Table Forecast_Months_tmp to Forecast_Months; Else //=== Add the new found Forecast Months to the table //=== We need the RowNo() to keep double values Concatenate(Forecast_Months) Load RowNo() as TempNr, * Resident Forecast_Months_tmp; Drop Table Forecast_Months_tmp; EndIf; Next i; Drop Table Extract_Months; //=== Count how many times we found a every Forecast Month in distinctive Extract Months Forecast_Months_Count: NoConcatenate Load [Forecast Month], Count([Forecast Month]) as Count Resident Forecast_Months Group by [Forecast Month]; Drop Table Forecast_Months; //=== Flag the Forecast Months that we found multiple times Month_Flag_map: Mapping Load [Forecast Month], '1' as Flag Resident Forecast_Months_Count Where Count >= '2'; Drop Table Forecast_Months_Count; //=== Flag the records of the multiple Forecast Months New_Data_tmp: NoConcatenate Load [Extract Date], [Forecast Date], [Amount], ApplyMap('Month_Flag_map',month([Forecast Date]),'0') as Flag Resident Data; Drop Table [Data]; //=== Filter all records with the multiple Forecast Months New_Data: NoConcatenate Load [Extract Date], [Forecast Date], [Amount] Resident New_Data_tmp Where Flag = '1'; Drop Table New_Data_tmp; Store New_Data into [lib://Desktop/Data.qvd];

 

TimvB
Creator II
Creator II

It took some scripting effort to get the desired result. The script below will work: You only need to change your data connection. Attached is the Test.qvf.

 

//=== Extract the data
Data:
NoConcatenate LOAD
    date([Extract Date]) as [Extract Date],
    date([Forecast Date]) as [Forecast Date],
    Amount
FROM [lib://Desktop/Sample_Data.xlsx]
(ooxml, embedded labels, table is Data);

//=== Create a table with all the possible Extract Months
Extract_Months:
NoConcatenate Load Distinct
	month([Extract Date]) as [Extract Month]
Resident Data;

//=== Loop over the Extract Months
For i = 0 to (NoOfRows('Extract_Months') - 1);
	
    //=== Get the Extract Month
    Let vExtract_Month = Peek('Extract Month','$(i)','Extract_Months');
    
    //=== Get all possible Forecast Months of the Extract Month
    Forecast_Months_tmp:
	NoConcatenate Load Distinct
        Month([Forecast Date]) as [Forecast Month]
    Resident [Data]
    Where month([Extract Date]) = '$(vExtract_Month)';
    
	If i = 0 Then
    	//=== Create a new table for all Forecast Months
    	Rename Table Forecast_Months_tmp to Forecast_Months;
    Else
    	//=== Add the new found Forecast Months to the table
        //=== We need the RowNo() to keep double values
    	Concatenate(Forecast_Months) Load RowNo() as TempNr, * Resident Forecast_Months_tmp;
    	Drop Table Forecast_Months_tmp;
   	EndIf;
    
Next i;

Drop Table Extract_Months;

//=== Count how many times we found a every Forecast Month in distinctive Extract Months
Forecast_Months_Count:
NoConcatenate Load
    [Forecast Month],
    Count([Forecast Month]) as Count
Resident Forecast_Months
Group by [Forecast Month];
Drop Table Forecast_Months;

//=== Flag the Forecast Months that we found multiple times
Month_Flag_map:
Mapping Load
    [Forecast Month],
	'1' as Flag
Resident Forecast_Months_Count
Where Count >= '2';
Drop Table Forecast_Months_Count;

//=== Flag the records of the multiple Forecast Months
New_Data_tmp:
NoConcatenate Load
	[Extract Date],
	[Forecast Date],
	[Amount],
    ApplyMap('Month_Flag_map',month([Forecast Date]),'0') as Flag
Resident Data;
Drop Table [Data];

//=== Filter all records with the multiple Forecast Months
New_Data:
NoConcatenate Load
	[Extract Date],
	[Forecast Date],
	[Amount]
Resident New_Data_tmp
Where Flag = '1';
Drop Table New_Data_tmp;

Store New_Data into [lib://Desktop/Data.qvd];

 

Hope it helps!

Rehan
Creator III
Creator III
Author

Can you pls attach the qvf again?

Rehan
Creator III
Creator III
Author

Question why we are starting with NOConcatenate ?

TimvB
Creator II
Creator II

The Test.qvf is attached to my most recent comment. I use NoConcatenate Load such that tables are never concatenated by accident. I do not know the rest of your script, so to be sure that this part won’t conflict with your script, I used NoConcatenate.

Rehan
Creator III
Creator III
Author

Attached please find  the sample data and sample QVF

Rehan
Creator III
Creator III
Author

Sample Data

sunny_talwar

Which rows do you expect to see flagged with duplicates?

Rehan
Creator III
Creator III
Author

If I select Any 2  Extract Dates on the fron t ends I expect to see only the common months between those 2 selected dates.