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

Announcements
See why IDC MarketScape names Qlik a 2025 Leader! Read more
cancel
Showing results for 
Search instead for 
Did you mean: 
ms_12
Partner - Contributor III
Partner - Contributor III

Create status using two different fields

Hi All,

I have attached excel file which contains data and requirement. I want to create a report with status and there is logic to create status in attached file. I have also attached screenshot 

Screenshot 2024-11-08 at 16.12.39.png

1 Solution

Accepted Solutions
Kushal_Chawda

@ms_12  try below. Assuming your Item are aa,ab,ac & ad. You have two ac which looks odd

Data:
Load *
Inline [
Country	Item 	Amount
ABC	aa	50
ABC	ab	15
ABC	ac	12
ABC	ad	12	
DEF	aa	25
DEF	ab	10
DEF	ac	8
DEF	ad	7	
PQR	aa	10
PQR	ab	7
PQR	ac	5
PQR	ad	3	
XYZ	aa	4
XYZ	ab	3
XYZ	ac	2
XYZ	ad	1
](delimiter is '\t');

Country:
Load Distinct Country,
     Window(sum(Amount),Country)/Window(sum(Amount)) as perc_by_country
Resident Data;

Left Join(Data)
Load *,
     RangeSum(peek('accum_perc_by_country'),perc_by_country) as accum_perc_by_country
Resident Country
Order by perc_by_country desc;

Drop Table Country;

Item:
Load Distinct Item,
     Window(sum(Amount),Item)/Window(sum(Amount)) as perc_by_Item
Resident Data;

Left Join(Data)
Load *,
     RangeSum(peek('accum_perc_by_Item'),perc_by_Item) as accum_perc_by_Item
Resident Item
Order by perc_by_Item desc;

Drop Table Item;

Final:
Load *,
     if(accum_perc_by_country<=0.8,'A','B') & if(accum_perc_by_Item<=0.8,'A','B') as Combined_status
Resident Data;

Drop Table Data;

 

Kushal_Chawda_0-1731264588209.png

 

View solution in original post

5 Replies
Qrishna
Master
Master

 

1st table:
Dim: Country
Measures1: Amount =sum(Amount)
Measures2: Amount_Sum =Num(sum(Amount)/sum(total Amount), '##.##%')
Measures3: Accum =Num(Rangesum(Above(Amount_Sum,0,RowNo())), '##.##%')

2nd table:
Dim: Item
Measures1: Amount =sum(Amount)
Measures2: Amount_Sum =Num(sum(Amount)/sum(total Amount), '##.##%')
Measures3: Accum =Num(Rangesum(Above(Amount_Sum,0,RowNo())), '##.##%')

3rd table:
Dim: Combined
Measure: Amount =sum(Amount)

2491777 - Create status using two different fields (1).PNG

ms_12
Partner - Contributor III
Partner - Contributor III
Author

@Qrishna Thanks.Let me clarify. In data I have only 3 columns Country, Item and Amount.  Then I need to create 3 status field for which I have explained the logic. My end goal is to create Report highlighted for which I need to create status field

Qrishna
Master
Master

put this in your load editor to create new fields and on the UI everything remains same as from my above post:

Directory;
LOAD *, [Group By Country Status] & [Group By Item Status] as Combined;
LOAD
Country,
Item,
Amount
, pick(match(Country, 'ABC', 'DEF', 'PQR', 'XYZ'), 'A', 'A', 'B', 'B') as [Group By Country Status] //use when you want to explicitly assign
, pick(match(Item, 'aa', 'ab', 'ac'), 'A', 'A', 'B') as [Group By Item Status]

// , if(match(Country, 'ABC', 'DEF'), 'A', 'B') as [Group By Country Status]
// , if(match(Item, 'aa', 'ab')), 'A', 'B') as [Group By Item Status] //use when you have few values, this can used fr many assignments too, use at your own methodoly

// ,[Group By Country Status]
// ,[Group By Item Status]
// ,Combined
FROM
[2491777 - Create status using two different fields (1).xlsx]
(ooxml, embedded labels, table is Sheet1)
where not isnull(Country);

Kushal_Chawda

@ms_12  try below. Assuming your Item are aa,ab,ac & ad. You have two ac which looks odd

Data:
Load *
Inline [
Country	Item 	Amount
ABC	aa	50
ABC	ab	15
ABC	ac	12
ABC	ad	12	
DEF	aa	25
DEF	ab	10
DEF	ac	8
DEF	ad	7	
PQR	aa	10
PQR	ab	7
PQR	ac	5
PQR	ad	3	
XYZ	aa	4
XYZ	ab	3
XYZ	ac	2
XYZ	ad	1
](delimiter is '\t');

Country:
Load Distinct Country,
     Window(sum(Amount),Country)/Window(sum(Amount)) as perc_by_country
Resident Data;

Left Join(Data)
Load *,
     RangeSum(peek('accum_perc_by_country'),perc_by_country) as accum_perc_by_country
Resident Country
Order by perc_by_country desc;

Drop Table Country;

Item:
Load Distinct Item,
     Window(sum(Amount),Item)/Window(sum(Amount)) as perc_by_Item
Resident Data;

Left Join(Data)
Load *,
     RangeSum(peek('accum_perc_by_Item'),perc_by_Item) as accum_perc_by_Item
Resident Item
Order by perc_by_Item desc;

Drop Table Item;

Final:
Load *,
     if(accum_perc_by_country<=0.8,'A','B') & if(accum_perc_by_Item<=0.8,'A','B') as Combined_status
Resident Data;

Drop Table Data;

 

Kushal_Chawda_0-1731264588209.png

 

ms_12
Partner - Contributor III
Partner - Contributor III
Author

@Kushal_Chawda  Indeed it was four different Item. Just a typo. Thanks