<?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: User Churn Chart in QlikView</title>
    <link>https://community.qlik.com/t5/QlikView/User-Churn-Chart/m-p/439211#M561124</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Gysbert,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks very much for the reply. Unfortunately I don't have the paid version of QlikView yet. I'm still waiting on approval and a budget to get it, which could take months. Could you please explain how you did it? Maybe with examples of the code?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry if it's a hassle, really appreciate it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Adam&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 10 Apr 2013 23:53:04 GMT</pubDate>
    <dc:creator />
    <dc:date>2013-04-10T23:53:04Z</dc:date>
    <item>
      <title>User Churn Chart</title>
      <link>https://community.qlik.com/t5/QlikView/User-Churn-Chart/m-p/439209#M561122</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;Hi everyone!&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm new to the QlikView Community, so forgive me if this subject has been covered. I can't seem to find the answer I'm looking for.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm trying to calculate a churn report by taking the amount of unique users that have logged on to our site during a 30 day period, and finding the amount of those that have logged on again in the next 30 day period. The catch is that I want to calculate this every week using WeekStart. For e.g.:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;5 unique users in the WeekStart-60 to WeekStart-30 range (a.k.a. "A"), 4 of those are still in the WeekStart-30 to WeekStart range (a.k.a. "B"), therefore churn would equal (A-B)/A or (5-4)/5 = 20%.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here's some test log in data to give you an idea of how the log file is structured:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="1" cellpadding="3" cellspacing="0" class="jiveBorder" height="373" style="width: 281px; border: 1px solid rgb(0, 0, 0); height: 359px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TH align="center" style="background-color: #6690bc;" valign="middle"&gt;&lt;SPAN style="color: #ffffff;"&gt;&lt;STRONG&gt;&lt;STRONG&gt;User_ID&lt;/STRONG&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TH&gt;&lt;TH align="center" style="background-color: #6690bc;" valign="middle"&gt;&lt;SPAN style="color: #ffffff;"&gt;&lt;STRONG&gt;&lt;STRONG&gt;Date_Logged_On&lt;/STRONG&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TH&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/01/13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/01/13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;01/01/13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;01/01/13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;5&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;01/01/13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;01/02/13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01/02/13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;01/02/13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01/02/13&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this make sense, it's been driving me crazy looking at ARRG() functions, Set Analysis, etc. Not sure what to use or how to use it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance for any help you can give me!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Adam&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Apr 2013 06:07:08 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/User-Churn-Chart/m-p/439209#M561122</guid>
      <dc:creator />
      <dc:date>2013-04-10T06:07:08Z</dc:date>
    </item>
    <item>
      <title>Re: User Churn Chart</title>
      <link>https://community.qlik.com/t5/QlikView/User-Churn-Chart/m-p/439210#M561123</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;See attached qvw&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Apr 2013 14:52:39 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/User-Churn-Chart/m-p/439210#M561123</guid>
      <dc:creator>Gysbert_Wassenaar</dc:creator>
      <dc:date>2013-04-10T14:52:39Z</dc:date>
    </item>
    <item>
      <title>Re: User Churn Chart</title>
      <link>https://community.qlik.com/t5/QlikView/User-Churn-Chart/m-p/439211#M561124</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Gysbert,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks very much for the reply. Unfortunately I don't have the paid version of QlikView yet. I'm still waiting on approval and a budget to get it, which could take months. Could you please explain how you did it? Maybe with examples of the code?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry if it's a hassle, really appreciate it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Adam&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Apr 2013 23:53:04 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/User-Churn-Chart/m-p/439211#M561124</guid>
      <dc:creator />
      <dc:date>2013-04-10T23:53:04Z</dc:date>
    </item>
    <item>
      <title>Re: User Churn Chart</title>
      <link>https://community.qlik.com/t5/QlikView/User-Churn-Chart/m-p/439212#M561125</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I think there might be an issue with the suggested approach, because it does check that group B is a subset of A, instead it just compares the distinct count of users in both periods.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example, if you replace your second last line with:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; 7, 01/02/13&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the distinct count won't change and the result is the same, -20%, while user 7 has not appeared in previous period yet and should be disregarded.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think you can potentially create a frontend only solution, but it will be probably very complex and resource extensive.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If possible, try creating a solution in the script, e.g. you can check for User appearance in the requested periods in script already.&lt;/P&gt;&lt;P&gt;Maybe like this (you can probably optimize this a lot):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SET DateFormat='DD/MM/YY';&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;T1:&lt;/P&gt;&lt;P&gt;LOAD * INLINE [&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; User_ID, Date_Logged_On&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1, 01/01/13&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2, 01/01/13&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3, 01/01/13&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4, 01/01/13&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5, 01/01/13&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2, 01/02/13&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3, 01/02/13&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1, 01/02/13&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5, 01/02/13&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2, 01/02/13&lt;/P&gt;&lt;P&gt;];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Let vStart&amp;nbsp; = num(makedate(2013,1,1));&lt;/P&gt;&lt;P&gt;Let vEnd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = num(makedate(2013,3,1));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Churn:&lt;/P&gt;&lt;P&gt;LOAD Date(weekstart($(vStart),iterno()-1)) as ChurnRateDate, &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date(weekstart($(vStart),iterno()-1)-30) as Date30, &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date(weekstart($(vStart),iterno()-1)-60) as Date60&lt;/P&gt;&lt;P&gt;AutoGenerate 1&lt;/P&gt;&lt;P&gt;while weekstart($(vStart),iterno()-1) &amp;lt;= weekstart($(vEnd));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;JOIN LOAD distinct User_ID Resident T1;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;Let vNumDates = NoOfRows('Churn');&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for i = 0 to vNumDates-1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TMP1:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOAD peek('ChurnRateDate',$(i),'Churn') as ChurnRateDate,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; peek('User_ID',$(i),'Churn') as User_ID,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(count(Date_Logged_On),1,0) as Flag30&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Resident T1 &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where User_ID = peek('User_ID',$(i),'Churn') &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and Date_Logged_On &amp;lt;= peek('ChurnRateDate',$(i),'Churn')&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and Date_Logged_On &amp;gt; peek('Date30',$(i),'Churn'); &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;TMP2:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOAD peek('ChurnRateDate',$(i),'Churn') as ChurnRateDate,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; peek('User_ID',$(i),'Churn') as User_ID,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(count(Date_Logged_On),1,0) as Flag60&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; resident T1 &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where User_ID = peek('User_ID',$(i),'Churn') &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and Date_Logged_On &amp;lt;= peek('Date30',$(i),'Churn') &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and Date_Logged_On &amp;gt; peek('Date60',$(i),'Churn');&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;next i&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Left Join (Churn) LOAD * Resident TMP1;&lt;/P&gt;&lt;P&gt;Left Join (Churn) LOAD * Resident TMP2;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;drop table TMP1;&lt;/P&gt;&lt;P&gt;drop table TMP2;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then, in the frontend, just create a straight table chart with dimension ChurnRateDate and as expression:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;= (count({&amp;lt;Flag30 = {1}, Flag60={1}&amp;gt;} User_ID) - count({&amp;lt;Flag60={1}&amp;gt;} User_ID)) &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; / count({&amp;lt;Flag60={1}&amp;gt;} User_ID)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps,&lt;/P&gt;&lt;P&gt;Stefan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 Apr 2013 13:19:16 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/User-Churn-Chart/m-p/439212#M561125</guid>
      <dc:creator>swuehl</dc:creator>
      <dc:date>2013-04-11T13:19:16Z</dc:date>
    </item>
    <item>
      <title>Re: Re: User Churn Chart</title>
      <link>https://community.qlik.com/t5/QlikView/User-Churn-Chart/m-p/439213#M561126</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi! I have a smiliar problem so i tag along here &lt;IMG src="https://community.qlik.com/legacyfs/online/emoticons/happy.png" /&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to look at month for when a customer "churned". I have used your example, &lt;A href="https://community.qlik.com/qlik-users/15823"&gt;swuehl&lt;/A&gt;, and changed it so that i can se customer that has not bought anything in the past 12 moths. My problem is that if a customer bought at two different dates, that customer will have 2 churn dates. i only want to established when that customer first (or maybe last(?)) churned according to my definiton when looking at a time period.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My problem is if i look at Orgno 1 you can se that it had activity 2012-01-04 and 2012-09-20 so when i look at a period of time this orgno "churns" at both 2013-01 and 2013-09 but since that customer has come back in a 12 month period the churn should only be at 2013-09. how can i solve this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Nov 2013 09:56:08 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/User-Churn-Chart/m-p/439213#M561126</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2013-11-15T09:56:08Z</dc:date>
    </item>
  </channel>
</rss>

