<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LWTD - Qlik Sense - Обучение, учебник, онлайн курс</title>
	<atom:link href="https://qliksense.ivan-shamaev.ru/tag/lwtd/feed/" rel="self" type="application/rss+xml" />
	<link>https://qliksense.ivan-shamaev.ru/tag/lwtd/</link>
	<description>Qlik Sense на русском языке. Пошаговые уроки для изучения Клик Сенс</description>
	<lastBuildDate>Tue, 02 Jun 2020 13:10:02 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>

<image>
	<url>https://qliksense.ivan-shamaev.ru/wp-content/uploads/2018/07/QlikSense_ICON2-150x150.png</url>
	<title>LWTD - Qlik Sense - Обучение, учебник, онлайн курс</title>
	<link>https://qliksense.ivan-shamaev.ru/tag/lwtd/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>LFL Календарь. Накопительный календарь Qlik. The As-Of Table. YTD, MTD, WTD, QTD / LYTQ, LQTD, LMTD, LWTD</title>
		<link>https://qliksense.ivan-shamaev.ru/lfl-cumulative-calendar-qlik-sense-ytd-mtd-wtd-qtd-as-of-table/</link>
					<comments>https://qliksense.ivan-shamaev.ru/lfl-cumulative-calendar-qlik-sense-ytd-mtd-wtd-qtd-as-of-table/#respond</comments>
		
		<dc:creator><![CDATA[qliksense-expert]]></dc:creator>
		<pubDate>Fri, 14 Jun 2019 20:54:50 +0000</pubDate>
				<category><![CDATA[Уровень 1]]></category>
		<category><![CDATA[LFL Календарь]]></category>
		<category><![CDATA[LMTD]]></category>
		<category><![CDATA[LQTD]]></category>
		<category><![CDATA[LWTD]]></category>
		<category><![CDATA[LYTQ]]></category>
		<category><![CDATA[MTD]]></category>
		<category><![CDATA[QTD]]></category>
		<category><![CDATA[The As-Of Table]]></category>
		<category><![CDATA[WTD]]></category>
		<category><![CDATA[YTD]]></category>
		<category><![CDATA[Накопительный календарь]]></category>
		<guid isPermaLink="false">https://qliksense.ivan-shamaev.ru/?p=1130</guid>

					<description><![CDATA[<p>В этой статье речь пойдет про накопительный календарь и календарь с флагами для расчета LFL показателей, например, продажи за последние 90 дней текущего месяца к продажам за аналогичный период предыдущего года (т.е. 90 дней прошлого года). Для начала рассмотрим упрощенный пример LFL Календаря. LFL Календарь Qlik Sense (для расчета показателей<a class="moretag" href="https://qliksense.ivan-shamaev.ru/lfl-cumulative-calendar-qlik-sense-ytd-mtd-wtd-qtd-as-of-table/"> Читать дальше&#8230;</a></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/lfl-cumulative-calendar-qlik-sense-ytd-mtd-wtd-qtd-as-of-table/">LFL Календарь. Накопительный календарь Qlik. The As-Of Table. YTD, MTD, WTD, QTD / LYTQ, LQTD, LMTD, LWTD</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>В этой статье речь пойдет про накопительный календарь и календарь с флагами для расчета LFL показателей, например, продажи за последние 90 дней текущего месяца к продажам за аналогичный период предыдущего года (т.е. 90 дней прошлого года).</p>



<p>Для начала рассмотрим упрощенный пример LFL Календаря.</p>



<h2 class="wp-block-heading">LFL Календарь Qlik Sense (для расчета показателей год к году)</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">//===========================================================================
// Автор &amp; Дата: Шамаев Иван 2019.06.01
// Описание: Создание календаря на основе максимальной и минимальной дате
// **************************************************************************
// Изменение:
// &lt;номер изменения, дата, автор> - &lt;описание>
//===========================================================================

// Получаем из поля Дата минимальное и максимальное значения
[TEMP Максимальная Минимальная Дата]:
LOAD
     Min(FieldValue('Дата',RecNo())) 	As [Минимальная Дата],
     Max(FieldValue('Дата',RecNo())) 	As [Максимальная Дата]
AutoGenerate FieldValueCount('Дата');

// Минимальную и максимальную даты помещаем в переменные, 
// для того, чтобы использовать их в условии While
Let пНачалоКалендаря_Число 	  = Num(Peek('Минимальная Дата', 0, 'TEMP Максимальная Минимальная Дата'));
Let пОкончаниеКалендаря_Число = Num(Peek('Максимальная Дата', 0, 'TEMP Максимальная Минимальная Дата'));
Let пСегодняДата_Число        = Num(Today());

// Удаляем временную таблицу
DROP Table [TEMP Максимальная Минимальная Дата];  

// Создаем набор дат в промежутке от минимальной до максимальной даты
[TEMP Набор дат в интервале MinDate - MaxDate]:  
LOAD 
     Date($(пНачалоКалендаря_Число) + IterNo() - 1) as [TEMP Дата]
AutoGenerate 1
While $(пНачалоКалендаря_Число) + IterNo() -1 &lt;= $(пОкончаниеКалендаря_Число);  

// Формируем таблицу с календарем LFL в моделе Qlik Sense
[Календарь]:
Load *,
     if(Дата&lt;=Date($(пСегодняДата_Число)) 
     	and Дата>=AddMonths(Date($(пСегодняДата_Число)),-6),1)					As [Текущий год 180 Дней],
     if(Дата&lt;=AddYears(Date($(пСегодняДата_Число)),-1)
		and Дата>=AddMonths(AddYears(Date($(пСегодняДата_Число)),-1),-6),1) 	As [Предыдущий год 180 Дней],
     if(Дата&lt;=Date($(пСегодняДата_Число))
		and Дата>=AddMonths(Date($(пСегодняДата_Число)),-3),1) 					As [Текущий год 90 Дней],
     if(Дата&lt;=AddYears(Date($(пСегодняДата_Число)),-1)
		and Дата>=AddMonths(AddYears(Date($(пСегодняДата_Число)),-1),-3),1) 	As [Предыдущий год 90 Дней],
     if(Дата&lt;=Date($(пСегодняДата_Число)) 
     	and Дата>=AddMonths(Date($(пСегодняДата_Число)),-1),1)					As [Текущий год 30 Дней],
     if(Дата&lt;=AddYears(Date($(пСегодняДата_Число)),-1)
     	and Дата>=AddMonths(AddYears(Date($(пСегодняДата_Число)),-1),-1),1)		As [Предыдущий год 30 Дней],
     if(Дата&lt;=Date($(пСегодняДата_Число))
		and Дата>=Date($(пСегодняДата_Число)-7),1)								As [Текущий год 7 Дней],
     if(Дата&lt;=Date($(пСегодняДата_Число)-7)
     	and Дата>=Date($(пСегодняДата_Число)-14),1)								As [Предыдущие 7 Дней],
     if(Дата&lt;=Date($(пСегодняДата_Число))
     	and Дата>=MakeDate(Year(Date($(пСегодняДата_Число)))),1)				As [Текущий год],
     if(Дата&lt;=AddYears(Date($(пСегодняДата_Число)),-1)
     	and Дата>=MakeDate(Year(AddYears(Date($(пСегодняДата_Число)),-1))),1)	As [Прошлый год]
     ;
Load 
     Date([TEMP Дата]) 													As Дата,
     Date([TEMP Дата],'DD MMMM YYYY')									As [Дата длинный месяц],
     Text(Date([TEMP Дата],'WWWW MMM YYYY'))							As [День недели МесяцГод],
     'Кв'&amp; Ceil(Num(Month([TEMP Дата]))/3)								As Квартал,
     'Кв'&amp; Ceil(Num(Month([TEMP Дата]))/3) &amp; '-' &amp; Year([TEMP Дата]) 	As КварталГод,
     Text(Date([TEMP Дата],'YYYY.MM')) 									As [Год Месяц],
     Text(Date([TEMP Дата],'MMM YYYY')) 								As [Месяц Год],
     Year([TEMP Дата]) 													As Год,
     Year([TEMP Дата])&amp;'.'&amp;Week([TEMP Дата])							As [Год Неделя],
     Week([TEMP Дата])													As Неделя,
     Day([TEMP Дата])													As День
Resident [TEMP Набор дат в интервале MinDate - MaxDate];

Drop Table [TEMP Набор дат в интервале MinDate - MaxDate];</pre>



<p><strong>Принскрин скрипта LFL календаря Qlik Sense (Календарь с флагами на даты):</strong></p>



<figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="844" height="1199" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/QlikSense_Qlik_Sense_LFL_Calendar_Script_Example_Free_Download.png" alt="" class="wp-image-1133" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/QlikSense_Qlik_Sense_LFL_Calendar_Script_Example_Free_Download.png 844w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/QlikSense_Qlik_Sense_LFL_Calendar_Script_Example_Free_Download-211x300.png 211w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/QlikSense_Qlik_Sense_LFL_Calendar_Script_Example_Free_Download-768x1091.png 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/QlikSense_Qlik_Sense_LFL_Calendar_Script_Example_Free_Download-721x1024.png 721w" sizes="(max-width: 844px) 100vw, 844px" /><figcaption><strong>Пример LFL календаря Qlik Sense</strong> с флагами: Текущий год 180 дней, Прошлый год 180 дней, Последние 7 дней, 7 дней на прошлой неделе и т.п.</figcaption></figure>



<p>Теперь для того, чтобы отобразить продажи за период можно использовать в Set Analysis предварительно рассчитанные флаги. Следующие примеры будут использовать модификатор <strong>1</strong> для того, чтобы исключить установленные в модели фильтры (т.е. на полном множестве данных):</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">//Продажи за 180 дней в текущем году:
sum({1&lt;[Текущий год 180 Дней]={1}>} [Продажи руб])

//Продажи за 180 дней в прошлом году (аналогичный период годом ранее):
sum({1&lt;[Предыдущий год 180 Дней]={1}>} [Продажи руб])</pre>



<p>Если Вам нужно учитывать выборки модели, то рекомендуется проигнорировать выборки по полям календаря. Делается это следующим образом (через запятую перечисляются поля календаря и ставится знак равно, это означает, что по этому полю мы игнорируем установленные выборки):</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">//Продажи за 180 дней в текущем году:
sum({&lt;[Текущий год 180 Дней]={1},[Дата длинный месяц]=,Дата=,[День недели МесяцГод]=,Квартал=,КварталГод=,[Год Месяц]=,[Месяц Год]=,Год=,[Год Неделя]=,Неделя=,День=>} [Продажи руб])

//Продажи за 180 дней в прошлом году (аналогичный период годом ранее):
sum({&lt;[Предыдущий год 180 Дней]={1},[Дата длинный месяц]=,Дата=,[День недели МесяцГод]=,Квартал=,КварталГод=,[Год Месяц]=,[Месяц Год]=,Год=,[Год Неделя]=,Неделя=,День=>} [Продажи руб])</pre>



<h2><strong>Еще один вариант календаря Qlik Sense (поправил первый вариант)</strong></h2>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">//===========================================================================
// Автор &amp; Дата: Шамаев Иван 2020.05.01
// Описание: Создание календаря на основе максимальной и минимальной дате
// **************************************************************************
// Изменение:
// &lt;номер изменения, дата, автор&gt; - &lt;описание&gt;
//===========================================================================

// Получаем из поля Дата минимальное и максимальное значения
[TEMP Максимальная Минимальная Дата]:
LOAD
     Min(FieldValue('Дата',RecNo())) 	As [Минимальная Дата],
     Max(FieldValue('Дата',RecNo())) 	As [Максимальная Дата]
AutoGenerate FieldValueCount('Дата');

// Минимальную и максимальную даты помещаем в переменные, 
// для того, чтобы использовать их в условии While
Let пНачалоКалендаря_Число 	  = Num(Peek('Минимальная Дата', 0, 'TEMP Максимальная Минимальная Дата'));
Let пОкончаниеКалендаря_Число = Num(Peek('Максимальная Дата', 0, 'TEMP Максимальная Минимальная Дата'));
Let пСегодняДата_Число        = Num(Today());

// Удаляем временную таблицу
DROP Table [TEMP Максимальная Минимальная Дата];  

// Создаем набор дат в промежутке от минимальной до максимальной даты
[TEMP Набор дат в интервале MinDate - MaxDate]:  
LOAD 
     Date($(пНачалоКалендаря_Число) + IterNo() - 1) as [TEMP Дата]
AutoGenerate 1
While $(пНачалоКалендаря_Число) + IterNo() -1 &lt;= $(пОкончаниеКалендаря_Число);  

// Формируем таблицу с календарем LFL в моделе Qlik Sense
[Календарь]:
Load *,
     //Генерация флагов для более простого сравнительного анализа по периодам
        if(Дата&lt;=Date($(пСегодняДата_Число)) 
            and Дата&gt;Date($(пСегодняДата_Число)-360),1)                              As [Флаг Текущий год 360 Дней],
        if(Дата&lt;=AddYears(Date($(пСегодняДата_Число)),-1)
            and Дата&gt;Date(AddYears(Date($(пСегодняДата_Число)),-1)-360),1)           As [Флаг Предыдущий год 360 Дней],
        if(Дата&lt;=Date($(пСегодняДата_Число)) 
            and Дата&gt;Date($(пСегодняДата_Число)-180),1)                              As [Флаг Текущий год 180 Дней],
        if(Дата&lt;=AddYears(Date($(пСегодняДата_Число)),-1)
            and Дата&gt;Date(AddYears(Date($(пСегодняДата_Число)),-1)-180),1)           As [Флаг Предыдущий год 180 Дней],
        if(Дата&lt;=Date($(пСегодняДата_Число))
            and Дата&gt;Date($(пСегодняДата_Число)-90),1)                               As [Флаг Текущий год 90 Дней],
        if(Дата&lt;=AddYears(Date($(пСегодняДата_Число)),-1)
            and Дата&gt;Date(AddYears(Date($(пСегодняДата_Число)),-1)-90),1)            As [Флаг Предыдущий год 90 Дней],
        if(Дата&lt;=Date($(пСегодняДата_Число)) 
            and Дата&gt;Date($(пСегодняДата_Число)-30),1)                               As [Флаг Текущий год 30 Дней],
        if(Дата&lt;=AddYears(Date($(пСегодняДата_Число)),-1)
            and Дата&gt;Date(AddYears(Date($(пСегодняДата_Число)),-1)-30),1)            As [Флаг Предыдущий год 30 Дней],
        if(Дата&lt;=Date($(пСегодняДата_Число))
            and Дата&gt;Date($(пСегодняДата_Число)-7),1)                                As [Флаг Текущие 7 дней],
        if(Дата&lt;=Date($(пСегодняДата_Число)-7)
            and Дата&gt;Date($(пСегодняДата_Число)-14),1)                               As [Флаг Предыдущие 7 Дней],
        if(Дата&lt;=Date($(пСегодняДата_Число))
            and Дата&gt;=MakeDate(Year(Date($(пСегодняДата_Число)))),1)                 As [Флаг Текущий год],
        if(Дата&lt;=AddYears(Date($(пСегодняДата_Число)),-1)
            and Дата&gt;=MakeDate(Year(AddYears(Date($(пСегодняДата_Число)),-1))),1)    As [Флаг Прошлый год],
        if(Дата&gt;=MonthStart($(пСегодняДата_Число))
            and Дата&lt;=Date($(пСегодняДата_Число)),1)                                 As [Флаг Текущий MTD],
        if(Дата&gt;=AddMonths(MonthStart($(пСегодняДата_Число)),-1)
            and Дата&lt;=AddMonths(Date($(пСегодняДата_Число)),-1),1)                   As [Флаг Предыдущий MTD]
     ;
Load 
     Date([TEMP Дата]) 								      As Дата,
     Date([TEMP Дата],'DD MMMM YYYY')						      As [Дата длинный месяц],
     Text(Date([TEMP Дата],'WWWW MMM YYYY'))					      As [День недели МесяцГод],
     'Кв'&amp; Ceil(Num(Month([TEMP Дата]))/3)					      As Квартал,
     'Кв'&amp; Ceil(Num(Month([TEMP Дата]))/3) &amp; '-' &amp; Year([TEMP Дата]) 	              As КварталГод,
     Text(Date([TEMP Дата],'YYYY.MM')) 						      As [Год Месяц],
     Text(Date([TEMP Дата],'MMM YYYY')) 					      As [Месяц Год],
     Year([TEMP Дата]) 								      As Год,
     Year([TEMP Дата])&amp;'.'&amp;Week([TEMP Дата])					      As [Год Неделя],
     Week([TEMP Дата])								      As Неделя,
     Day([TEMP Дата])								      As День
Resident [TEMP Набор дат в интервале MinDate - MaxDate];

Drop Table [TEMP Набор дат в интервале MinDate - MaxDate];</pre>



<p><strong>Пример формулы с использованием флагов:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sum({&lt;[Флаг Текущие 7 дней]={1}&gt;} [Продажи, руб])
sum({&lt;[Флаг Предыдущие 7 Дней]={1}&gt;} [Продажи, руб])</pre>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/lfl-cumulative-calendar-qlik-sense-ytd-mtd-wtd-qtd-as-of-table/">LFL Календарь. Накопительный календарь Qlik. The As-Of Table. YTD, MTD, WTD, QTD / LYTQ, LQTD, LMTD, LWTD</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://qliksense.ivan-shamaev.ru/lfl-cumulative-calendar-qlik-sense-ytd-mtd-wtd-qtd-as-of-table/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
