<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Struggle with Data Joins in App Development</title>
    <link>https://community.qlik.com/t5/App-Development/Struggle-with-Data-Joins/m-p/1638118#M47569</link>
    <description>&lt;P&gt;This data load script should help you solve the difficult part:&amp;nbsp;&lt;/P&gt;&lt;P&gt;[RawData]:&lt;BR /&gt;LOAD&lt;BR /&gt;OrderNo,&lt;BR /&gt;if(MainOrderNo='NULL',0,MainOrderNo) as MainOrderNo,&lt;BR /&gt;Quantity,&lt;BR /&gt;State&lt;BR /&gt;FROM [lib://Desktop/Color.xlsx] (ooxml, embedded labels, table is Sheet2);&lt;/P&gt;&lt;P&gt;NoConcatenate&lt;BR /&gt;[Data]:&lt;BR /&gt;Load OrderNo, MainOrderNo, Quantity, State,&lt;BR /&gt;if (MainOrderNo &amp;gt; 0 and RealOrderNo = Peek(OrderNo), Peek(RealOrderNo), RealOrderNo) as RealOrderNo;&lt;BR /&gt;Load *,&lt;BR /&gt;if(MainOrderNo = 0, OrderNo, Peek(OrderNo)) as RealOrderNo&lt;BR /&gt;Resident RawData;&lt;/P&gt;&lt;P&gt;drop table RawData;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 22 Oct 2019 03:17:39 GMT</pubDate>
    <dc:creator>thi_pham</dc:creator>
    <dc:date>2019-10-22T03:17:39Z</dc:date>
    <item>
      <title>Struggle with Data Joins</title>
      <link>https://community.qlik.com/t5/App-Development/Struggle-with-Data-Joins/m-p/1637857#M47550</link>
      <description>&lt;P&gt;Hi everyone,&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have got a problem to solve, if you've any idea please write about it, i would be &lt;SPAN&gt;appreciate&lt;/SPAN&gt;.&lt;/P&gt;&lt;P&gt;I've a data set like table 1, if the company can not deliver all of order quantity, system will split. And make 2 new orders which have the same main order no. Like the row no 1,2,3. If still can not deliver the rest of the 2.step of no delivered order, again system split the quantity again. It can be go forever like this (: In my data set I saw 10 step split movement.&amp;nbsp;&lt;/P&gt;&lt;P&gt;What i need is in table 2. I need the main order in one raw and the delivered - not delivered in by columns. I thought the join the orders table by itself but i don't know the splitting count of each main order. I think I need to use something like while loop but at the same time it s not a small table, it s like 500 k rows so I need also performing thin. So thanks for now.&lt;/P&gt;&lt;P&gt;table 1:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Order No&lt;/TD&gt;&lt;TD&gt;Main Order No&lt;/TD&gt;&lt;TD&gt;Quantity&lt;/TD&gt;&lt;TD&gt;State&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;NULL&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;Not Delivered&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;Delivered&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;Not Delivered&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Delivered&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Not Delivered&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Delivered&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;NULL&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;Not Delivered&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Delivered&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;Not Delivered&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;table 2:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Main Order No&lt;/TD&gt;&lt;TD&gt;Delivered Order No 1&lt;/TD&gt;&lt;TD&gt;Not Del Order No 1&lt;/TD&gt;&lt;TD&gt;Delivered Order No 2&lt;/TD&gt;&lt;TD&gt;Not Del Order No 2&lt;/TD&gt;&lt;TD&gt;Delivered Order No 3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;NULL&lt;/TD&gt;&lt;TD&gt;NULL&lt;/TD&gt;&lt;TD&gt;NULL&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Sat, 16 Nov 2024 19:51:07 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Struggle-with-Data-Joins/m-p/1637857#M47550</guid>
      <dc:creator>berkarmagan</dc:creator>
      <dc:date>2024-11-16T19:51:07Z</dc:date>
    </item>
    <item>
      <title>Re: Struggle with Data Joins</title>
      <link>https://community.qlik.com/t5/App-Development/Struggle-with-Data-Joins/m-p/1638118#M47569</link>
      <description>&lt;P&gt;This data load script should help you solve the difficult part:&amp;nbsp;&lt;/P&gt;&lt;P&gt;[RawData]:&lt;BR /&gt;LOAD&lt;BR /&gt;OrderNo,&lt;BR /&gt;if(MainOrderNo='NULL',0,MainOrderNo) as MainOrderNo,&lt;BR /&gt;Quantity,&lt;BR /&gt;State&lt;BR /&gt;FROM [lib://Desktop/Color.xlsx] (ooxml, embedded labels, table is Sheet2);&lt;/P&gt;&lt;P&gt;NoConcatenate&lt;BR /&gt;[Data]:&lt;BR /&gt;Load OrderNo, MainOrderNo, Quantity, State,&lt;BR /&gt;if (MainOrderNo &amp;gt; 0 and RealOrderNo = Peek(OrderNo), Peek(RealOrderNo), RealOrderNo) as RealOrderNo;&lt;BR /&gt;Load *,&lt;BR /&gt;if(MainOrderNo = 0, OrderNo, Peek(OrderNo)) as RealOrderNo&lt;BR /&gt;Resident RawData;&lt;/P&gt;&lt;P&gt;drop table RawData;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2019 03:17:39 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Struggle-with-Data-Joins/m-p/1638118#M47569</guid>
      <dc:creator>thi_pham</dc:creator>
      <dc:date>2019-10-22T03:17:39Z</dc:date>
    </item>
    <item>
      <title>Re: Struggle with Data Joins</title>
      <link>https://community.qlik.com/t5/App-Development/Struggle-with-Data-Joins/m-p/1638125#M47571</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Try the below script, it's a bit complex but could achieve exact what you want. You can add Exit Script;&amp;nbsp; after each transform to understand the logic.&lt;/P&gt;&lt;P&gt;I haven't tested with large data set &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;Source:
Load * INLINE [
Order, Main,Quantity,State
1,NULL,10,Not Delivered
2,1,5,Delivered
3,1,5,Not Delivered
4,3,3,Delivered
5,3,2,Not Delivered
6,5,2,Delivered
7,NULL,5,Not Delivered
8,7,1,Delivered
9,7,6,Not Delivered];

HierarchyTable:
Hierarchy(Order, Main, Node, ParentName, NodeName, PathName, '\', Depth) 
Load Order, Main,Order as Node
Resident Source;

_tmp:
Load Order, Node1 As MainOrder, Depth
Resident HierarchyTable;
Left Join 
Load Order, State Resident Source;
Drop Table Source, HierarchyTable;

MainTable:
Load Order, State&amp;amp;' No '&amp;amp;(Depth-1) as FieldName, MainOrder
Resident _tmp;
Drop Table _tmp;

GenericLabel:
Generic Load MainOrder,FieldName, Order Resident MainTable;

Set vListOfTables = ;
For vTableNo = 0 to NoOfTables()
	Let vTableName = TableName($(vTableNo)) ;
	If Subfield(vTableName,'.',1)='GenericLabel' Then
		Let vListOfTables = vListOfTables &amp;amp; If(Len(vListOfTables)&amp;gt;0,',') &amp;amp; Chr(39) &amp;amp; vTableName &amp;amp; Chr(39) ;
	End If
Next vTableNo

CombinedGenericTable:
Load Distinct MainOrder Resident MainTable;
Drop Table MainTable;

For each vTableName in $(vListOfTables)
	Left Join (CombinedGenericTable) Load * Resident [$(vTableName)];
	Drop Table [$(vTableName)];
Next vTableName;

Drop Field MainOrder;
Rename Field [Not Delivered No 0] to [Main Order No];&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2019 04:57:03 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Struggle-with-Data-Joins/m-p/1638125#M47571</guid>
      <dc:creator>Quy_Nguyen</dc:creator>
      <dc:date>2019-10-22T04:57:03Z</dc:date>
    </item>
    <item>
      <title>Re: Struggle with Data Joins</title>
      <link>https://community.qlik.com/t5/App-Development/Struggle-with-Data-Joins/m-p/1638131#M47575</link>
      <description>&lt;P&gt;Hi &lt;SPAN&gt;berkarmagan&lt;/SPAN&gt;,&lt;/P&gt;&lt;P&gt;May be like this: easy approach&lt;/P&gt;&lt;P&gt;Source:&lt;BR /&gt;Load * INLINE [&lt;BR /&gt;Order, Main,Quantity,State&lt;BR /&gt;1,NULL,10,Not Delivered&lt;BR /&gt;2,1,5,Delivered&lt;BR /&gt;3,1,5,Not Delivered&lt;BR /&gt;4,3,3,Delivered&lt;BR /&gt;5,3,2,Not Delivered&lt;BR /&gt;6,5,2,Delivered&lt;BR /&gt;7,NULL,5,Not Delivered&lt;BR /&gt;8,7,1,Delivered&lt;BR /&gt;9,7,6,Not Delivered];&lt;/P&gt;&lt;P&gt;NoConcatenate&lt;BR /&gt;Fact:&lt;BR /&gt;LOAD&lt;BR /&gt;Order,&lt;BR /&gt;Main,&lt;BR /&gt;Quantity,&lt;BR /&gt;State,&lt;BR /&gt;if(Main='NULL',0,if(State='Delivered' and Previous(Main)='NULL',1,peek(Count)+1)) as Count&lt;BR /&gt;Resident Source where State='Delivered'or Main='NULL'&lt;BR /&gt;order by Order;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Concatenate&lt;/P&gt;&lt;P&gt;LOAD&lt;BR /&gt;Order,&lt;BR /&gt;Main,&lt;BR /&gt;Quantity,&lt;BR /&gt;State,&lt;BR /&gt;if(Main='NULL',0,if(State='Not Delivered' and Previous(Main)='NULL',1,peek(Count)+1)) as Count&lt;BR /&gt;Resident Source where State='Not Delivered'or Main='NULL'&lt;BR /&gt;order by Order;&lt;/P&gt;&lt;P&gt;Drop table Source;&lt;/P&gt;&lt;P&gt;NoConcatenate&lt;/P&gt;&lt;P&gt;Final_Fact:&lt;/P&gt;&lt;P&gt;LOAD&lt;BR /&gt;Distinct&lt;BR /&gt;*&lt;BR /&gt;Resident Fact;&lt;/P&gt;&lt;P&gt;Drop table Fact;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dim:&lt;/P&gt;&lt;P&gt;Load&lt;BR /&gt;Distinct&lt;BR /&gt;Order,&lt;BR /&gt;if(Main='NULL',Order,peek([Main Order No])) as [Main Order No]&lt;BR /&gt;Resident Final_Fact&lt;BR /&gt;order by Order;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Br,&lt;/P&gt;&lt;P&gt;KC&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2019 06:10:01 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Struggle-with-Data-Joins/m-p/1638131#M47575</guid>
      <dc:creator>jyothish8807</dc:creator>
      <dc:date>2019-10-22T06:10:01Z</dc:date>
    </item>
    <item>
      <title>Re: Struggle with Data Joins</title>
      <link>https://community.qlik.com/t5/App-Development/Struggle-with-Data-Joins/m-p/1638269#M47585</link>
      <description>&lt;P&gt;Thanks, i did not know that Hierarchy function, i like that (: and it worked perfectly with little changes on code. Thank you..&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2019 10:58:19 GMT</pubDate>
      <guid>https://community.qlik.com/t5/App-Development/Struggle-with-Data-Joins/m-p/1638269#M47585</guid>
      <dc:creator>berkarmagan</dc:creator>
      <dc:date>2019-10-22T10:58:19Z</dc:date>
    </item>
  </channel>
</rss>

