<?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>Уровень 1 - Qlik Sense - Обучение, учебник, онлайн курс</title>
	<atom:link href="https://qliksense.ivan-shamaev.ru/category/qlik-level-1/feed/" rel="self" type="application/rss+xml" />
	<link>https://qliksense.ivan-shamaev.ru/category/qlik-level-1/</link>
	<description>Qlik Sense на русском языке. Пошаговые уроки для изучения Клик Сенс</description>
	<lastBuildDate>Mon, 12 Oct 2020 20:28:34 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>

<image>
	<url>https://qliksense.ivan-shamaev.ru/wp-content/uploads/2018/07/QlikSense_ICON2-150x150.png</url>
	<title>Уровень 1 - Qlik Sense - Обучение, учебник, онлайн курс</title>
	<link>https://qliksense.ivan-shamaev.ru/category/qlik-level-1/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Урок 1. Регистрация в Qlik Sense Business Cloud. Как начать работать с Qlik в облачном сервисе?</title>
		<link>https://qliksense.ivan-shamaev.ru/registering-with-qlik-sense-business-cloud-how-start-with-qlik/</link>
					<comments>https://qliksense.ivan-shamaev.ru/registering-with-qlik-sense-business-cloud-how-start-with-qlik/#respond</comments>
		
		<dc:creator><![CDATA[qliksense-expert]]></dc:creator>
		<pubDate>Mon, 12 Oct 2020 20:15:52 +0000</pubDate>
				<category><![CDATA[Уровень 1]]></category>
		<category><![CDATA[Qlik]]></category>
		<category><![CDATA[QlikNews]]></category>
		<category><![CDATA[qliksense]]></category>
		<category><![CDATA[QlikSenseTutorial]]></category>
		<category><![CDATA[QlikTech]]></category>
		<category><![CDATA[QlikВидеоНаРусском]]></category>
		<category><![CDATA[QlikОбучение]]></category>
		<category><![CDATA[QlikУчебник]]></category>
		<category><![CDATA[кликсенс]]></category>
		<guid isPermaLink="false">https://qliksense.ivan-shamaev.ru/?p=2421</guid>

					<description><![CDATA[<p>Урок 1. Регистрация в Qlik Sense Business Cloud. Как начать работать с Qlik в облачном сервисе? В этом уроке будет описан процесс создания аккаунта в облачном сервисе Qlik Sense Business Cloud. https://t.me/qlik_insight &#8211; telegram канал &#8211; пишу про Qlik Sense как есть на самом деле, что-то критикую, что-то хвалю, делюсь<a class="moretag" href="https://qliksense.ivan-shamaev.ru/registering-with-qlik-sense-business-cloud-how-start-with-qlik/"> Читать дальше&#8230;</a></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/registering-with-qlik-sense-business-cloud-how-start-with-qlik/">Урок 1. Регистрация в Qlik Sense Business Cloud. Как начать работать с Qlik в облачном сервисе?</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>Урок 1. Регистрация в Qlik Sense Business Cloud. Как начать работать с Qlik в облачном сервисе?</strong></p>
<p><span dir="auto" class="style-scope yt-formatted-string">В этом уроке будет описан процесс создания аккаунта в облачном сервисе Qlik Sense Business Cloud. </span></p>
<p><span style="color: #339966;"><strong><a href="https://t.me/qlik_insight" style="color: #339966;">https://t.me/qlik_insight</a></strong></span><span dir="auto" class="style-scope yt-formatted-string"> &#8211; telegram канал &#8211; пишу про Qlik Sense как есть на самом деле, что-то критикую, что-то хвалю, делюсь обучающими материалами. </span></p>
<p><iframe width="560" height="315" src="//www.youtube.com/embed/G_rflkDEn_4" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="allowfullscreen"></iframe></p>
<p>&nbsp;</p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/registering-with-qlik-sense-business-cloud-how-start-with-qlik/">Урок 1. Регистрация в Qlik Sense Business Cloud. Как начать работать с Qlik в облачном сервисе?</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://qliksense.ivan-shamaev.ru/registering-with-qlik-sense-business-cloud-how-start-with-qlik/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Связать данные по интервалам. Пример IntervalMatch Qlik Sense</title>
		<link>https://qliksense.ivan-shamaev.ru/link-data-at-intervals-intervalmatch-qlik-sense-example/</link>
					<comments>https://qliksense.ivan-shamaev.ru/link-data-at-intervals-intervalmatch-qlik-sense-example/#respond</comments>
		
		<dc:creator><![CDATA[qliksense-expert]]></dc:creator>
		<pubDate>Sun, 17 Nov 2019 04:35:50 +0000</pubDate>
				<category><![CDATA[Уровень 1]]></category>
		<category><![CDATA[IntervalMatch Qlik Sense]]></category>
		<category><![CDATA[Пример IntervalMatch]]></category>
		<guid isPermaLink="false">https://qliksense.ivan-shamaev.ru/?p=2123</guid>

					<description><![CDATA[<p>В этой статье будет рассмотрены примеры использования функции IntervalMatch. Рассмотрим пример [tester_signal]: LOAD Signal_datetime, Signal_symbol, "symbol", indicator, "1d", "6h", "1h" FROM [lib://DataFiles/tester_signal.qvd] (qvd); NoConcatenate [TEMP tester_price_changes]: LOAD datetime, "symbol", last_price, price_change, price_change_percent, high_price, low_price, volume, weighted_avg_price, quote_volume FROM [lib://DataFiles/tester_price_changes.qvd] (qvd); [TEMP max_datetime]: Load max(datetime) as max_datetime Resident [TEMP tester_price_changes]; LET<a class="moretag" href="https://qliksense.ivan-shamaev.ru/link-data-at-intervals-intervalmatch-qlik-sense-example/"> Читать дальше&#8230;</a></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/link-data-at-intervals-intervalmatch-qlik-sense-example/">Связать данные по интервалам. Пример IntervalMatch Qlik Sense</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>В этой статье будет рассмотрены примеры использования функции IntervalMatch.</p>
<p>Рассмотрим пример</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">[tester_signal]:
LOAD
    Signal_datetime,
    Signal_symbol,
    "symbol",
    indicator,
    "1d",
    "6h",
    "1h"
FROM [lib://DataFiles/tester_signal.qvd] (qvd);

NoConcatenate
[TEMP tester_price_changes]:
LOAD
    datetime,
    "symbol",
    last_price,
    price_change,
    price_change_percent,
    high_price,
    low_price,
    volume,
    weighted_avg_price,
    quote_volume
FROM [lib://DataFiles/tester_price_changes.qvd] (qvd);

[TEMP max_datetime]:
Load max(datetime) as max_datetime
Resident [TEMP tester_price_changes];

LET vMaxDatetime = Timestamp(Num#(Peek('max_datetime',0,'TEMP max_datetime'))+Frac(MakeTime(0,30)));

NoConcatenate
[tester_price_changes]:
LOAD datetime, 
  Timestamp(datetime,'DD.MM.YYYY h:mm')											As [Дата Время Начало],
    If(symbol=Previous(symbol) and symbol&lt;&gt;'' and not IsNull(symbol),
    	Timestamp(Peek('datetime'),'DD.MM.YYYY h:mm'),
        Timestamp('$(vMaxDatetime)','DD.MM.YYYY h:mm')
    ) 																				As [Дата Время Конец],
    symbol,
    Timestamp(datetime,'DD.MM.YYYY h:mm')											As [ДатаВремя Цен],
    symbol&amp;'|'&amp;(Num(time(frac(floor(datetime,1/1440)),'hh:mm'))+floor(datetime))	As %ID,
  last_price, 
  price_change, 
  price_change_percent, 
  high_price, 
  low_price, 
  volume, 
  weighted_avg_price, 
  quote_volume
Resident [TEMP tester_price_changes]
Order By symbol,datetime desc
;

Drop Tables [TEMP tester_price_changes];


Left Join([tester_signal])
intervalmatch (Signal_datetime,symbol) 
LOAD  
     [Дата Время Начало], 
     [Дата Время Конец],
     symbol
RESIDENT tester_price_changes;

Left Join(tester_signal)
Load
     [Дата Время Начало], 
     [Дата Время Конец],
     symbol,
     %ID
RESIDENT tester_price_changes;

DROP Fields [Дата Время Начало], [Дата Время Конец], symbol From [tester_signal];</pre>
<p>___</p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/link-data-at-intervals-intervalmatch-qlik-sense-example/">Связать данные по интервалам. Пример IntervalMatch Qlik Sense</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://qliksense.ivan-shamaev.ru/link-data-at-intervals-intervalmatch-qlik-sense-example/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Дизайн дашборда Qlik Sense. Проектирование, разработка, MAD (DAR) концепции</title>
		<link>https://qliksense.ivan-shamaev.ru/dashboard-design-development-mad-dar-concepts/</link>
					<comments>https://qliksense.ivan-shamaev.ru/dashboard-design-development-mad-dar-concepts/#respond</comments>
		
		<dc:creator><![CDATA[qliksense-expert]]></dc:creator>
		<pubDate>Mon, 14 Oct 2019 06:05:32 +0000</pubDate>
				<category><![CDATA[Уровень 1]]></category>
		<category><![CDATA[dashboard qlik sense]]></category>
		<category><![CDATA[MAD DAR концепция]]></category>
		<category><![CDATA[дашборд qlik sense]]></category>
		<category><![CDATA[дизайн дашборда]]></category>
		<category><![CDATA[дизайн дашборда qlik sense]]></category>
		<category><![CDATA[Проектирование дашборда qlik sense]]></category>
		<category><![CDATA[разработка дашборда qlik sense]]></category>
		<guid isPermaLink="false">https://qliksense.ivan-shamaev.ru/?p=1824</guid>

					<description><![CDATA[<p>В этой статье будут рассмотрены основные подходы, методы дизайна дашборда Qlik Sense. Из каких элементов состоит дашборд Qlik Sense, концепция DAR (Dashboard &#8211; Analysis &#8211; Report). Qlik Sense Expert &#8211; Дизайн дашборда Qlik Sense Что такое дашборд? Вот ряд определений, что же такое дашборд: Дашборд (информационная панель, панель мониторинга для<a class="moretag" href="https://qliksense.ivan-shamaev.ru/dashboard-design-development-mad-dar-concepts/"> Читать дальше&#8230;</a></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/dashboard-design-development-mad-dar-concepts/">Дизайн дашборда Qlik Sense. Проектирование, разработка, MAD (DAR) концепции</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>В этой статье будут рассмотрены основные подходы, методы дизайна дашборда Qlik Sense. Из каких элементов состоит дашборд Qlik Sense, концепция DAR (Dashboard &#8211; Analysis &#8211; Report).</p><cite>Qlik Sense Expert &#8211; Дизайн дашборда Qlik Sense</cite></blockquote>



<h2>Что такое дашборд?</h2>
<p><strong>Вот ряд определений, что же такое дашборд:</strong></p>
<ul>
<li><strong>Дашборд (информационная панель, панель мониторинга для топ-менеджмента)</strong> &#8211; тип пользовательского интерфейса, на котором представлена критически важная информация в упорядоченном и удобном для чтения виде.</li>
<li><strong>Дашборд (Dashboard)</strong> &#8211; это визуальное отображение наиболее важной информации, необходимой для достижения одной или нескольких целей; вся информация (KPI, графики, таблицы и т.п.) объединена и размещена на одном экране, чтобы можно было легко ее прочитать.</li>
<li><strong>Dashboard</strong> — это наглядное представление информации о бизнес-процессах, о состоянии какого-то объекта. С помощью дашборда можно увидеть значения конкретных показателей, как они изменяются, к чему это приводит.</li>
<li><strong>Dashboard</strong> – инструмент оперативного контроля работы / бизнес-процессов. Единое информационное поле, в котором собраны все данные о работе департамента, позволяет быстро получить информацию о статусе всех процессов, предотвратить риски и выстроить работу по повышению эффективности бизнес-процессов.</li>
</ul>
<p><strong>Главная цель дашборда &#8211; спровоцировать действие! </strong>Дашборд предоставляет агрегированную информацию, которая:</p>
<ul>
<li>поможет выработать то или иное управленческое решение;</li>
<li>поможет получить ответы на критические вопросы бизнеса;</li>
<li>поможет выявить проблемы бизнеса, негативные тенденции, неэффективные процессы;</li>
<li>поможет предотвратить риски;</li>
<li>поможет понять, насколько текущая деятельность компании соответствует принятой стратегии развития (например, показатели план-факт анализа);</li>
<li>поможет выявить мошейничество, разные схемы, из-за которых компания может нести убытки.</li>
</ul>
<p><strong>Дашборд</strong> должен предоставлять возможность углубиться в конкретные участки информации (связанные с тем или иным показателем эффективности &#8211; KPI).</p>
<p>Уэйн Эккерсон в своей книге <strong>&#8220;Панель индикаторов&#8221;</strong> выделяет три основные функции панелей индикаторов в организации.</p>
<p><strong>Они позволяют сотрудникам организации:</strong></p>
<ol>
<li>Отслеживать критически важные бизнес-процессы и виды деятельности, используя показатели эффективности бизнеса, обеспечивающие подачу предупреждающих сигналов при возникновении потенциальных проблем;</li>
<li>Выявлять первопричины проблем путем анализа релевантной и актуальной информации под разными углами и с разными уровнями детализации;</li>
<li>Управлять людьми и процессами, с тем, чтобы находить оптимальные решения, максимизировать эффективность и в целом вести организацию в правильном направлении.</li>
</ol>
<p><strong>Панель индикаторов</strong> – это инструмент для осуществления организационных изменений. При условии правильного использования она способна превратить слабую организацию в высокоэффективную.</p>
<p>Она позволяет фокусировать внимание сотрудников организации на важнейших операциях при осуществлении контроля текущих бизнес-процессов.</p>
<p><strong>Панель индикаторов</strong> применяется на оперативном уровне для отслеживания продвижения организации к своим краткосрочным и долгосрочным целям, а на тактическом и стратегическом уровнях применяют <strong>Систему сбалансированных показателей</strong>.</p>
<p><strong>Сравнение панелей индикаторов со сбалансированными системами показателей</strong></p>
<table width="716">
<tbody>
<tr>
<td width="187"><strong>Критерий</strong></td>
<td width="250"><strong>Панели индикаторов</strong></td>
<td width="279"><strong>Сбалансированные системы показателей</strong></td>
</tr>
<tr>
<td width="187">Назначение</td>
<td width="250">Измерение эффективности</td>
<td width="279">Отслеживание продвижения вперед</td>
</tr>
<tr>
<td width="187">Пользователи</td>
<td width="250">Инспекторы, контролеры, специалисты</td>
<td width="279">Старшие руководители, менеджеры, рядовые сотрудники</td>
</tr>
<tr>
<td width="187">Обновления</td>
<td width="250">Представление информации в нужное время</td>
<td width="279">Периодические «мгновенные снимки» ситуации</td>
</tr>
<tr>
<td width="187">Данные</td>
<td width="250">События</td>
<td width="279">Сводки</td>
</tr>
<tr>
<td width="187">Визуальное представление</td>
<td width="250">Графические изображения, необработанные данные</td>
<td width="279">Графические изображения, текстовые комментарии</td>
</tr>
</tbody>
</table>
<p><strong>Панели индикаторов и сбалансированные системы показателей</strong> – это механизмы визуализации в системе управления эффективностью, позволяющие мгновенно представлять критически важную информацию в наглядной форме.</p>
<p>С одной стороны, панели индикаторов и сбалансированные системы показателей имеют много общих особенностей, и эти термины часто считают взаимозаменяемыми, но с другой стороны и те и другие обладают некоторыми уникальными характеристиками.</p>
<p>Из таблицы видно, что в сравниваемых инструментах для представления текущего состояния, тенденций и отклонений от поставленных целей используются визуальные инструменты представления данных (диаграммы, графические изображения). Поэтому при выборе инструмента, главное сфокусировать внимание сотрудников организации на том, что для неё действительно имеет наиболее важное значение. Для повышения эффективности продвижения к стратегическим целям целесообразно применять эти инструменты в совокупности.</p>
<h2>Типы дашбордов</h2>
<ul>
<li>
<p><strong>Операционная панель мониторинга</strong> &#8211; это инструмент отчетности, который используется для мониторинга бизнес-процессов, которые часто меняются, а также для отслеживания текущих KPI. По сравнению с другими типами информационных панелей данные обновляются очень часто, иногда даже поминутно. Операционные панели предназначены для просмотра несколько раз в течение дня. Они часто используются для мониторинга прогресса достижения цели.</p>
</li>
<li>
<p><strong>Стратегическая панель мониторинга</strong> &#8211; это инструмент отчетности, который используется для мониторинга состояния ключевых показателей эффективности (KPI) и обычно используется руководителями. Данные для стратегической панели обновляются 1 или 2 раза в день. Стратегические инструментальные панели можно просматривать один раз в день, и они помогают руководителям не отставать от ключевых показателей эффективности в рамках всего бизнеса.</p>
</li>
<li>
<p><strong>Аналитическая панель мониторинга</strong> &#8211; это инструмент отчетности, который используется для анализа больших объемов данных, что позволяет пользователям исследовать тенденции, строить прогнозы и получать детальную информацию (например, выгрузки Excel). Аналитические информационные панели более распространены в инструментах бизнес-аналитики, поскольку они обычно разрабатываются для аналитиков. Данные для аналитической информационной панели, должны быть точными и актуальными, обычно обновляются 1 раз в день. Аналитические панели мониторинга часто включают в себя расширенные функции BI, такие как детализация и AdHoc отчеты.</p>
</li>
</ul>
<p><strong>Аналитические панели</strong> предназначены для того, чтобы помочь организации установить цели на основе понимания исторических данных.<br /><strong>Операционные инструментальные панели</strong> управляют ежедневными бизнес-процессами &#8211; часто меняющимися и текущими показателями производительности или ключевыми показателями эффективности (KPI).</p>
<h3>Какие бизнес-проблемы мы пытаемся решить?</h3>
<ul>
<li><strong>Операционные панели:</strong> Осведомленность о данных и данные, быстро меняются во времени (каждый час, каждые 3 часа и т.п.)</li>
<li><strong>Стратегические панели:</strong> Основные организационные KPI</li>
<li><strong>Аналитические панели:</strong> Тенденции или более глубокое понимание процессов, основанное на данных</li>
</ul>
<h3 class="strong gap-south-0 gap-north-0"><span>Кто будет использовать дашборды?</span></h3>
<ul>
<li><strong>Операционные панели (Operational Dashboards):</strong> Линия бизнес-менеджеров, бизнес-пользователи</li>
<li><strong>Стратегические панели (Strategic Dashboards):</strong> Руководители, Владельцы бизнеса</li>
<li><strong>Аналитические панели (Anayltical Dashboards):</strong> Бизнес-аналитики, Аналитики данных, Руководство</li>
</ul>
<p><img fetchpriority="high" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/comparison_of_dashboards.png" alt="" width="1033" height="131" class="aligncenter size-full wp-image-1853" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/comparison_of_dashboards.png 1033w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/comparison_of_dashboards-300x38.png 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/comparison_of_dashboards-768x97.png 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/comparison_of_dashboards-1024x130.png 1024w" sizes="(max-width: 1033px) 100vw, 1033px" /></p>
<p><strong>Отчеты, как процессы менеджмента, можно разделить на три уровня:</strong></p>
<ul>
<li><strong>ТОП</strong> – уровень директоров, акционеров компании. Их обычно интересуют стратегические показатели, тренды. Для них делают квартальные, годовые отчеты по компании в целом.</li>
<li><strong>Линейные менеджеры</strong> – им нужна более глубокая детализация, динамика, структура показателей, из которых складываются стратегические KPI в рамках направления, продукта.</li>
<li><strong>Исполнители</strong> – они делают или получают отчеты, основанные на первичных данных – статус проекта, справка о движении средств за период. Сюда же попадают и руководители проектов, занимающиеся оперативной работой.</li>
</ul>
<h3>Какова основная цель дашбордов?</h3>
<ul>
<li>Операционные панели: Осведомленность сотрудников и отслеживание операционных целей</li>
<li>Стратегические панели: Достижение целей KPI</li>
<li>Аналитические панели: Анализ ключевых процессов</li>
</ul>
<h2>17 вопросов/советов для создания дашборда</h2>
<ol>
<li>Почему создается приборная панель? Определите назначение приборной панели.</li>
<li>Для кого предназначена приборная панель? Решите, что нужно вашим пользователям на дашборде?
<ul>
<li>Кто целевая аудитория дашборда?</li>
<li>Каковы требования аудитории к дашборду?</li>
<li>Убедитесь, что данные актуальны для пользователей.</li>
</ul>
</li>
<li>На какие вопросы дашборд должен ответить?</li>
<li>Сколько времени требуется, чтобы просмотреть цифры дашборда, сделать какие-то выводы?</li>
<li>На каком языке должен быть представлен дашборд?</li>
<li>Какие метрики/показатели должны быть размещены на дашборде?</li>
<li>За какой период необходимо представить информацию?</li>
<li>Не скрывайте информацию и не слишком полагайтесь на взаимодействие.</li>
<li>Персонализация, а не настройка. Пользователи ожидают, что контент, который они видят, будет соответствовать их индивидуальным потребностям. Персонализация осуществляется самой системой. Система должна быть настроена так, чтобы идентифицировать пользователей и предоставлять им контент, опыт или функциональность, соответствующие их роли.</li>
<li>Будьте проще (Большой текст, Меньше виджетов, Меньше столбцов)</li>
<li>Логическая схема: перевернутая пирамида &#8211; Отобразите наиболее важные сведения в верхней части панели инструментов, тренды в середине и детализированные детали в нижней части.</li>
<li>Правило 5 секунд: Ваша информационная панель должна предоставить соответствующую информацию примерно за 5 секунд.</li>
<li>Минимализм: меньше значит больше &#8211; Каждая панель должна содержать не более 5-9 визуализаций.</li>
<li>Выбор правильной визуализации данных &#8211; Выберите соответствующий тип визуализации данных в соответствии с его назначением.</li>
<li>Выберите правильные цвета. Используйте согласованный язык дизайна и цветовую схему.</li>
<li>Показать контекст. Числа несут смысл только в своем контексте.</li>
<li>Найдите в интернете примеры дашбордов, просматривайте их для генерации новых идей.</li>
</ol>
<p><strong>Еще ряд рекомендаций по проектированию приложений:</strong></p>
<p>Первым шагом является определение ключевых показателей. Чем меньше, тем лучше. Не размещайте 50 ключевых показателей эффективности, чтобы попытаться охарактеризовать всю компанию в информационной панели, а скорее основные, которые наиболее важны. Выберите метрики, которые меняются каждый день, если приборная панель будет использоваться ежедневно.</p>
<p>Во-вторых, убедитесь, что все KPI имеют сравнение. Люди обучены сравнивать все 24/7. Если ваш объем продаж составляет 3 миллиона рублей за день, то что с того? Это лучше, чем вчерашние продажи? Вам нужно разместить показатель для сравнения, чтобы пользователь мог понять динамику (лучше это или хуже).</p>
<p><strong>Примеры того, что в KPI можно сравнить:</strong></p>
<ul>
<li>Текущий месяц vs Предыдущий месяц</li>
<li>Текущий месяц vs Тот же месяц предыдущего года</li>
<li>Текущий месяц факт vs Текущий месяц целевое значение</li>
<li>YTD &#8211; текущий год vs предыдущего года (аналогичный период)</li>
<li>YTD &#8211; Фактический vs Целевого</li>
</ul>
<p>Далее, не используйте зеленый цвет, когда что-то хорошо. Если у вас есть 4 ключевых показателя эффективности, и два из них зеленого цвета, а два других &#8211; красного цвета, то люди воспринимают как 50% хорошо, а как 50% плохо. Вам нужно, чтобы пользователи сосредоточились на «плохой» части, чтобы они могли действовать по ней. Только цветовой код, что плохо, то есть красный.</p>
<p>Сравните с приборной панелью в машине. Он не предупреждает вас, когда что-то идет хорошо, но предназначен для предупреждения Вас о плохих вещах. Подумайте о топливном свете. Он не горит зеленым, когда в вашей машине достаточно топлива. Вместо этого он предупреждает вас, когда топливо критически мало. Затем он загорается красным, и вы сразу это замечаете. Это привлекает ваше внимание, и лично я даже нервничаю, когда вижу это.</p>
<p>Рассмотрим дашборд (на первом скрине есть зеленый и красный цвет):</p>
<p><img decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/executive_dashboard_green_red_before.png" alt="" width="678" height="254" class="aligncenter size-full wp-image-1867" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/executive_dashboard_green_red_before.png 678w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/executive_dashboard_green_red_before-300x112.png 300w" sizes="(max-width: 678px) 100vw, 678px" /></p>
<p>На втором нет зеленых индикаторов &#8211; только красные. Они больше привлекают внимание:</p>
<p><img decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/executive_dashboard_green_red_after.png" alt="" width="678" height="254" class="aligncenter size-full wp-image-1868" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/executive_dashboard_green_red_after.png 678w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/executive_dashboard_green_red_after-300x112.png 300w" sizes="(max-width: 678px) 100vw, 678px" /></p>
<p>Хороший дашборд (не инфомасса!) проектируется <strong>под определенную пользовательскую роль</strong>. Соответственно, аналитика, которую отображает дашборд, отвечает на конечное число вопросов и имеет ряд ограничений по отображению и каскадированию. Иначе дашборд становится &#8220;для всех и ни для кого&#8221; и им просто перестают пользоваться. Дашборд отличается от инфомассы системностью &#8211; четкой структурой и продуманной User story. </p>
<p><strong>Еще ряд рекомендаций:</strong></p>
<ul>
<li>Система должна обращаться к пользователю на его языке: понятными ему словами, фразами и концепциями, а не системными терминами.</li>
<li>Информация должна появляться естественно и логично — как в реальном мире.</li>
<li>Пользователи часто выбирают некоторые функции системы по ошибке, и им нужен очевидный “аварийный выход” из ненужного состояния — без необходимости проходить через длинный диалог. Используйте кнопки отмены и повтора действия.</li>
<li>Не используйте для обозначения одних и тех же вещей разные слова, ситуации и действия. Придерживайтесь одних и тех же принятых для платформы правил.</li>
<li>Что может быть лучше хорошо проработанных сообщений об ошибках? Только дизайн, который вообще предотвратит их возникновение. Либо устраните ситуации, которые приводят к ошибкам, либо имейте в виду их вероятность и запрашивайте подтверждение от пользователя, прежде чем совершить действие.</li>
<li>Снизьте нагрузку на память пользователя, разместив объекты, действия и опции на виду. Пользователь не должен запоминать информацию, переходя из одного диалога в другой. Пусть все инструкции будут на виду или в ближайшей доступности.</li>
</ul>
<h3><span>Принцип пирамиды Минто в дашбордах </span></h3>
<p><span><strong>Источник:</strong> телеграм канал <a class="settings_modal_username_link" ng-click="shareLink($event)" ng-bind="'https://t.me/' + chatFull.chat.username" ng-href="https://t.me/dashboardets" target="_blank" href="https://t.me/dashboardets" rel="noopener noreferrer">@dashboardets</a></span><br /><span></span></p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/dashboard_piramida_minto.jpg" alt="" width="850" height="611" class="aligncenter size-full wp-image-1897" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/dashboard_piramida_minto.jpg 850w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/dashboard_piramida_minto-300x216.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/dashboard_piramida_minto-768x552.jpg 768w" sizes="(max-width: 850px) 100vw, 850px" /></p>
<ol>
<li><strong>Почему необходимо использовать? </strong>
<ul style="list-style-type: circle;">
<li><span style="font-size: inherit;">по мере поступления и восприятия информация автоматически сортируется сознанием в отчетливые пирамидальные структуры;</span></li>
<li>любая группа идей легче усваивается, если воспринимается выстроенной в виде пирамиды, горизонтальной или вертикальной;</li>
<li>в формате &#8220;пирамиды&#8221; сохраняется устойчивая логика &#8220;от частного к общему&#8221;.</li>
</ul>
</li>
<li><strong>Где учитывать в дашборде?</strong>
<ul style="list-style-type: circle;">
<li>при принятии решения о контенте дашборда с точки зрения ЦА;</li>
<li>при конструировании макета дашборда (от более агрегированной аналитики в левой части макета до детализации в правой части);</li>
<li>при построении диаграмм для демонстрации последовательных процессов (например, воронка продаж).</li>
</ul>
</li>
</ol>
<h3>Рекомендации для разработки дашборда в картинках</h3>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/dashboard_design_principles_best_practices.png" alt="" width="600" height="315" class="aligncenter size-full wp-image-1888" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/dashboard_design_principles_best_practices.png 600w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/dashboard_design_principles_best_practices-300x158.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p><strong>Why? Why? Why?</strong></p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/why_why_why_dashboard.jpg" alt="" width="1280" height="500" class="aligncenter size-full wp-image-1890" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/why_why_why_dashboard.jpg 1280w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/why_why_why_dashboard-300x117.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/why_why_why_dashboard-768x300.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/why_why_why_dashboard-1024x400.jpg 1024w" sizes="(max-width: 1280px) 100vw, 1280px" /></p>
<h3>Советы по Dashboard Design (Дизайн дашборда Qlik Sense)</h3>
<p><strong>1. Определите, целевую аудиторию дашборда</strong></p>
<ul>
<li><span>Спросите пользователей, как будет использоваться дашборд?</span></li>
<li><span>Какая информация нужна пользователю, чтобы дашборд был полезным?</span></li>
<li><span>Сколько детальных данных необходимо пользователю?</span></li>
<li><span>Какие действия с данными нужно выполнять (drill-down, изменение измерений, переключение срезов диаграмм, проваливаться к деталям KPI и т.п.)?</span></li>
<li><span>Как выделяются исключения или идеи (exceptions or insights), которые требуют принятия решений или действий?</span></li>
<li><span>Какие усвоенные или культурные предположения могут повлиять на выбор дизайна?</span></li>
<li><span>Что означают цвета и можно ли их визуально интерпретировать?</span></li>
<li><span>Примите во внимание тот факт, что 10% людей на земле страдают дальтонизмом. Поэтому рекомендуется использовать </span><span>иконки, которые так или иначе характеризуют данные. </span></li>
</ul>
<p><strong>2. Используйте лучшие практики Dashboard Designs</strong></p>
<ul>
<li><span>Хороший дизайн должен рассказать историю с данными, которые не перегружены слишком большим количеством информации, беспорядком или шумом. Ограничьте количество информации, чтобы дашборд полностью разместился на одном экране.</span></li>
<li><span>Начните с самого высокого уровня детализации в верхнем левом углу экрана и покажите больше деталей к правому нижнему углу (направление считывания информации). </span></li>
<li><span>Сделайте свою панель простой, используя только 3–5 ключевых показателей, диаграмм или таблиц. Старайтесь не размещать слишком много информации на приборной панели.</span></li>
<li><span>Не забудьте предоставить соответствующий контекст и держать связанные элементы рядом друг с другом.</span></li>
<li><span>Избегайте отображения «единичных чисел» без какого-либо другого контекста. Покажите степень изменения для быстрого сравнения.</span></li>
<li><span>Избегайте разнообразия визуализации данных.</span></li>
<li><span>Если необходимы подробные таблицы, разместите их в нижней части дашборда.</span></li>
</ul>
<p><strong>3. Избегайте распространенных проблем визуализации данных</strong></p>
<ul>
<li><span>Выберите соответствующие визуализации данных</span><span> . Не используйте диаграммы, которые искажают реальность, то есть трехмерные диаграммы. Имейте в виду, что человеческому мозгу трудно интерпретировать круглые формы. Круговые диаграммы, кольцевые диаграммы, датчики и другие типы круговых диаграмм могут выглядеть симпатично, но они не являются лучшей практикой визуализации данных. </span></li>
<li><span>Соответствуйте масштабам диаграммы на осях, порядку размеров диаграммы, а также цветам, используемым для значений измерений в диаграммах.</span></li>
<li><span>Обязательно кодируйте количественные данные красиво. Не превышайте трех или четырех цифр при отображении чисел. Отобразите меры до одной или двух цифр слева от десятичной запятой и масштабируйте их до тысяч или миллионов, т.е. 3,4 млн., а не 3 400 000.</span></li>
<li><span>Не смешивайте уровни точности и времени. Убедитесь, что временные рамки хорошо понятны. У вас не должно быть одного графика с прошлым месяцем рядом с отфильтрованными графиками за определенный месяц года. </span></li>
<li><span>Не смешивайте большие и маленькие меры в одном и том же масштабе, например на линейной или гистограмме. Например, одна мера может быть в миллионах, а другая мера в тысячах. При таком большом масштабе было бы трудно увидеть различия, которые исчисляется тысячами.</span></li>
<li><span>Не засоряйте свои диаграммы метками данных, которые не нужны. Значения в гистограммах обычно хорошо поняты без отображения фактического числа.</span></li>
</ul>
<h3>Короткая форма брифа из 6 пунктов для ТЗ на создание дашборда</h3>
<p><strong>Источник:</strong> <a href="https://www.litres.ru/aleksey-kolokolov-19475066/dashbord-dlya-direktora/" target="_blank" rel="noopener noreferrer">Книга &#8220;Дашборд для директора&#8221; Алексей Колоколов (рекомендую)</a></p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/brief_requirements_qlik_sense.jpg" alt="" width="1081" height="523" class="aligncenter size-full wp-image-1970" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/brief_requirements_qlik_sense.jpg 1081w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/brief_requirements_qlik_sense-300x145.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/brief_requirements_qlik_sense-768x372.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/brief_requirements_qlik_sense-1024x495.jpg 1024w" sizes="(max-width: 1081px) 100vw, 1081px" /></p>
<ul>
<li>В левой половине – <strong>логика, факты по существу:</strong> в каком формате будет представлен отчет, с какой периодичностью будут обновляться данные, какие ключевые количественные показатели и в каких разрезах (фильтрах, категориях) будут отображены.</li>
<li>Справа – <strong>творческое полушарие, ассоциативное мышление.</strong> Эти пункты находятся за рамками самого отчета: заказчик, его выводы и решения.</li>
</ul>
<p><strong>Пример заполнения:</strong></p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/brief_requirements_qlik_sense_example.jpg" alt="" width="980" height="473" class="aligncenter size-full wp-image-1971" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/brief_requirements_qlik_sense_example.jpg 980w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/brief_requirements_qlik_sense_example-300x145.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/brief_requirements_qlik_sense_example-768x371.jpg 768w" sizes="(max-width: 980px) 100vw, 980px" /></p>
<p><strong>Как написать подробное ТЗ &#8211; читайте здесь:</strong> <a href="https://qliksense.ivan-shamaev.ru/razrabotka-trebovanij-dlja-proekta-qlik-sense/">https://qliksense.ivan-shamaev.ru/razrabotka-trebovanij-dlja-proekta-qlik-sense/</a></p>
<h3>Принципы гештальта</h3>
<p>В начале 1900-х годов гештальт-школа психологии провела серию исследований человеческого восприятия, чтобы понять, как наш мозг интерпретирует формы и распознает паттерны. Понимание этих принципов может помочь вам создать лучшую структуру для панели мониторинга и упростить интерпретацию диаграмм.</p>
<ul>
<li><strong>Proximity (Близость):</strong> когда мы видим несколько элементов, расположенных рядом друг с другом, мы склонны видеть их как группу. Например, мы можем визуально различать кластеры на точечной диаграмме, группируя точки в соответствии с их положением.</li>
<li><strong>Similarity (Сходство):</strong> наш мозг связывает элементы, которые похожи друг на друга (форма, размер, цвет или ориентация). Например, рассмотрим диаграмму с цветовой кодировкой. Даже если они не сгруппированы, мы можем связать бары, которые имеют один и тот же цвет.</li>
<li><strong>Enclosure (Ограждение):</strong> если граница окружает ряд объектов, мы воспринимаем их как группу. Например, если точечная диаграмма содержит две опорные линии, охватывающие элементы в диапазоне от 20 до 30 процентов, мы автоматически рассматриваем их как кластер.</li>
<li><strong>Closure (Замкнутость):</strong> когда мы обнаруживаем фигуру, которая выглядит неполной, мы склонны воспринимать ее как замкнутую структуру. Например, даже если мы отбросим границы гистограммы, оси образуют область, которую наш мозг изолирует без необходимости дополнительных линий.</li>
<li><strong>Continuity (Непрерывность):</strong> если ряд объектов выровнен, мы обычно воспринимаем их как единый объект. Например, рассмотрим понятие различных блоков кода при отступе в скрипте Qlik Sense.</li>
<li><strong>Connection (Соединение):</strong> если набор объектов соединен линией, мы также видим их как группу. Например, точечная диаграмма с линиями и символами (точки, соединенные линиями).</li>
</ul>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/dashboard_gestalt_principles_qlik_sense.jpg" alt="" width="996" height="182" class="aligncenter size-full wp-image-1987" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/dashboard_gestalt_principles_qlik_sense.jpg 996w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/dashboard_gestalt_principles_qlik_sense-300x55.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/dashboard_gestalt_principles_qlik_sense-768x140.jpg 768w" sizes="(max-width: 996px) 100vw, 996px" /></p>
<h2>Концепция DAR (Dashboard &#8211; Analysis &#8211; Reporting)</h2>
<ul>
<li><strong>Dashbord</strong> &#8211; максимум важной информации; минимум интерактивности; за короткое время оценить текущую ситуацию; найти области требующие отдельного анализа и перейти к ним. Высокоуровневый обзор компании или бизнес-процесса.</li>
<li><strong>Analysis</strong> &#8211; более интерактивные листы, помогают пользователям изучить данные, найти ответы на вопросы, требуют больше времени и взаимодействия с отчетом. Интерактивные вкладки, позволяющие пользователю копаться в данных, предоставляя более широкий спектр фильтров, диаграмм и таблиц</li>
<li><strong>Reporting</strong> &#8211; дается наиболее детальная информация в плоть до фактов (отдельных документов, чеков, позиций в документах и т.п.), много данных в табличной форме, сортировка, фильтрация данных, выгрузка в excel. Наиболее приемлемым вариантом является разработка преднастроенных отчетов (фиксированные аналитики и показатели). Плюс разработка <a href="https://qliksense.ivan-shamaev.ru/qlik-sense-report-designer-adhoc-flexible-report-with-dimension-and-metrics/" target="_blank" rel="noopener noreferrer"><strong>AdHoc отчетности</strong></a> &#8211; когда пользователь сам определяет набор аналитик (измерений) и показателей, чтобы посмотреть детальные данные с <em><strong>&#8220;разных ракурсов&#8221;</strong></em>.</li>
</ul>
<p><strong>Концепция DAR (Dashboard -&gt; Analysis -&gt; Reporting)</strong> &#8211; методология, в рамках которой пользователю последовательно предоставляется информация по агрегированным данным, затем предоставляется аналитический интерфейс для анализа данных и затем пользователь может посмотреть детальные данные, т.е. от дашборда переходим в аналитическую панель, а затем в детальный отчет.</p>
<p><strong>Первая вкладка Qlik Sense</strong> &#8211; панель инструментов (дашборд), сообщает пользователям, что хорошо или что плохо.</p>
<ul>
<li>Только самая важная информация</li>
<li>Наименьшее количество интерактивности</li>
<li>Для пользователей, у которых мало времени на анализ данных</li>
</ul>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Dashboard_DAR_Qlik_Sense_Methodology.png" alt="" width="1069" height="551" class="aligncenter size-full wp-image-1955" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Dashboard_DAR_Qlik_Sense_Methodology.png 1069w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Dashboard_DAR_Qlik_Sense_Methodology-300x155.png 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Dashboard_DAR_Qlik_Sense_Methodology-768x396.png 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Dashboard_DAR_Qlik_Sense_Methodology-1024x528.png 1024w" sizes="(max-width: 1069px) 100vw, 1069px" /></p>
<p><strong>Следующая группа вкладок</strong> предназначена для анализа: содержит графики и таблицы, которые сообщают пользователям, «Что» и «Почему» все хорошо или плохо.</p>
<ul>
<li>Аналитические страницы более интерактивны</li>
<li>Аналитические страницы требуют больших временных затрат на взаимодействие для более глубокого понимания ситуации</li>
<li>Аналитической страницей может служить страница для сравнительного анализа</li>
</ul>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Analysis_DAR_Qlik_Sense_Methodology.jpg" alt="" width="1169" height="705" class="aligncenter size-full wp-image-1956" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Analysis_DAR_Qlik_Sense_Methodology.jpg 1169w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Analysis_DAR_Qlik_Sense_Methodology-300x181.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Analysis_DAR_Qlik_Sense_Methodology-768x463.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Analysis_DAR_Qlik_Sense_Methodology-1024x618.jpg 1024w" sizes="(max-width: 1169px) 100vw, 1169px" /></p>
<p><strong>Последняя часть</strong>, лист отчета, содержит более подробную информацию, такую ​​как детали чеки, документы, детали заказа, смены сотрудников и т.д., где пользователи могут идентифицировать конкретный элемент для последующей реакции.</p>
<ul>
<li>Страницы с детальными данными (таблицы) предоставляют наиболее подробную информацию с большим количеством данных.</li>
<li>Пользователь может потратить много времени на сортировку и фильтрацию деталей</li>
</ul>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Report_DAR_Qlik_Sense_Methodology.jpg" alt="" width="1125" height="543" class="aligncenter size-full wp-image-1957" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Report_DAR_Qlik_Sense_Methodology.jpg 1125w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Report_DAR_Qlik_Sense_Methodology-300x145.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Report_DAR_Qlik_Sense_Methodology-768x371.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Report_DAR_Qlik_Sense_Methodology-1024x494.jpg 1024w" sizes="(max-width: 1125px) 100vw, 1125px" /></p>
<h2>Пользовательский интерфейс</h2>
<h3>Дизайн</h3>
<p>Одну из важнейших ролей в пользовательском интерфейсе занимает дизайн. Дизайн влияет на темпы адаптации пользователя к новой системе, скорость анализа и варианты использования. Все это определяет, насколько эффективно возможно использовать Qlik Sense приложение. Принципы хорошего дизайна аналитических приложений сформулировали Стивен Фью и Эдвард Тафт, и являются основой для лучших практик компании QlikTech. Ниже в общих чертах представлены некоторые из примеров хорошего дизайна.</p>
<p>Необходимо использовать нейтральные, приглушенные цвета и контраст: приглушенные и нейтральные цвета гораздо более комфортны для глаз, улучшают восприятие. Использование контрастов помогает быстро определить точки интереса. Ниже представлены сочетания приглушенных цветов и контрастов.</p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/qliksense_design_colors.png"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/qliksense_design_colors.png" alt="" width="280" height="125" class="aligncenter size-full wp-image-2066" /></a></p>
<p>Необходимо использовать размеры, формы и интенсивность, чтобы привлечь внимание к данным. Формы могут использоваться для сегментирования данных на группы. Интенсивности цвета хорошо работают для диапазонов значений или выбросов.</p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/qliksense_design_razmeri_formi.png"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/qliksense_design_razmeri_formi.png" alt="" width="364" height="232" class="aligncenter size-full wp-image-2067" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/qliksense_design_razmeri_formi.png 364w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/qliksense_design_razmeri_formi-300x191.png 300w" sizes="(max-width: 364px) 100vw, 364px" /></a></p>
<p>Необходимо минимизировать <span>использование</span> 3D и световых эффектов. Простая столбчатая отображает историческую информацию лаконично и информативно. Кроме того 3D и световые эффекты могут стать причиной неверного восприятия информации.</p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/bad_practice_qliksense_design_colors.png"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/bad_practice_qliksense_design_colors.png" alt="" width="710" height="388" class="aligncenter wp-image-2068 size-full" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/bad_practice_qliksense_design_colors.png 710w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/bad_practice_qliksense_design_colors-300x164.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></a></p>
<h3>Эргономичность</h3>
<p>Другие требования для дизайна включают в себя:</p>
<ul>
<li>Логическое разделение контента на вкладки</li>
<li>Соответствие стандартам DAR (Dashboard-Analysis-Reports: Панель-Анализ-Отчет)</li>
<li>Лаконичное использование размеров объектов, шрифтов, читаемость</li>
<li>Единый стиль</li>
<li>Ориентацию на целевое разрешение экрана устройства (мобильный дизайн и дизайн под большой монитор в Qlik Sense также стоит разделять)</li>
<li>Информирование пользователя о дате и времени последней загрузки данных</li>
<li>Размещение основных фильтров в одном и том же месте на всех вкладках</li>
<li>Минимизирование использования круговых, радар, скаттер, грид, фьюнел диаграмм. Предпочтительно использовать столбчатые, линейные, табличные диаграммы.</li>
<li>Использование прямого динамического взаимодействия на данные, например, с помощью слайдера (например, динамический период)</li>
<li>Выравнивание элементов интерфейса</li>
</ul>
<h2>Ключевые показатели эффективности</h2>
<p><strong>Ключевые показатели эффективности (KPI)</strong> представляют собой набор значений самого высокого уровня, связанных со стратегическими целями компании. Они помогают определить и отследить направление, в котором развивается бизнес, и позволяют достигать намеченных целей. Как уже было сказано, эти показатели обеспечивают кораблю движение верным курсом.</p>
<p>Авинаш Кошик, ведущий мировой эксперт в области веб-аналитики, называет KPI «показателями, которые помогают понять, насколько эффективно вы действуете относительно своих целей».</p>
<p>Он подчеркивает два краеугольных камня этого определения — показатели и цели, — так как KPI связывают их воедино.</p>
<p><strong>Примеры KPI: </strong></p>
<ul>
<li>«Повысить узнаваемость бренда на 10%»,</li>
<li>«Удвоить количество активных пользователей к концу года»,</li>
<li>«Увеличить онлайн-конверсию на 5% во втором квартале».</li>
</ul>
<p><strong>Для KPI критически важны следующие аспекты.</strong></p>
<ul>
<li><strong>KPI должны быть четко определены</strong>
<ul style="list-style-type: circle;">
<li>Не должно быть никакой двусмысленности в понимании основных показателей, к которым стремится компания. Показатель следует четко определить, у него должно быть конкретное целевое значение и обозначенный или стандартный срок (обычно конец года).</li>
</ul>
</li>
<li><strong>KPI должны быть измеряемыми</strong><br />
<ul style="list-style-type: circle;">
<li>Ключевые показатели эффективности должны иметь числовое значение. Вам необходима возможность измерить прогресс в количественном выражении за определенный период времени. Иными словами, это должна быть иголка, которую можно передвигать с места на место, а не двоичное значение. Главный специалист США по анализу данных (US Chief Data Scientist) Ди Джей Патиль в своей книге Building Data Science Teams1 отметил: «Как оказалось, все компании, в которых на высшем уровне развито управление на основе данных, придерживаются одного правила: если что-то нельзя измерить, это невозможно исправить».</li>
</ul>
</li>
<li><strong>KPI должны содержать цели</strong><br />
<ul style="list-style-type: circle;">
<li>«Повысить выручку» — это плохо сформулированный ключевой показатель эффективности, так как в нем нет цели в числовом выражении. Если выручка компании повысится на 5 долл., сотрудники заявят, что задача выполнена, и прекратят прилагать усилия. И наоборот, если цель очевидно завышена и нереалистична, например «повысить выручку на 5000%», ее никто не воспримет всерьез или сотрудники вскоре сдадутся, и будь что будет. Показатели должны быть достижимыми, но при определенных усилиях.</li>
</ul>
</li>
<li><strong>KPI должны быть прозрачными</strong><br />
<ul style="list-style-type: circle;">
<li>По крайней мере для тех, кто отвечает за их выполнение, а лучше и для всех остальных. Сотрудники должны получать обратную связь и четко понимать, приносят ли их усилия результаты или им лучше что-то изменить в своей деятельности. Стратегические показатели и ключевые показатели эффективности в компании Warby Parker доводятся до сведения всех сотрудников и регулярно (хотя бы раз в квартал) обсуждаются со всем персоналом во время общих собраний рабочего коллектива.</li>
</ul>
</li>
<li><strong>KPI должны отражать цели, которых хочет добиться компания</strong>
<ul style="list-style-type: circle;">
<li>Легко попасться в ловушку и начать отслеживать то, что легко измерить, например время ответа на телефонные звонки в центре обслуживания клиентов, когда истинная цель может заключаться в том, чтобы повысить степень удовлетворенности клиентов.<br />Как гласит афоризм, «мы придаем важность тому, что способны измерить». Для этого могут потребоваться новые процессы сбора данных и оценки эффективности. Проводите дополнительную работу и меняйте то, что вы действительно стремитесь изменить.</li>
</ul>
</li>
</ul>
<p><strong>Как и цели, KPI должны соответствовать критериям SMART и быть:</strong><br />— конкретными (Specific);<br />— измеримыми (Measurable);<br />— достижимыми (Achievable);<br />— ориентированными на результат (Result-oriented);<br />— ограниченными во времени (Time-bound).</p>
<p>Возможно, они должны быть даже SMARTER за счет добавления еще двух критериев: «подвергаться оценке» (Evaluated) и «подвергаться обзору/вознаграждаться» (Reviewed/Rewarded).</p>
<p><strong>4 базовых вида сравнения данных:</strong></p>
<ul>
<li><strong>Рейтинг</strong> – самый распространенный. Сравниваем ряд данных по признаку больше/меньше, насколько. Все план-фактные сравнения относятся сюда же.</li>
<li><strong>Динамика</strong> – изменение во времени, когда важно показать тренд, сезонность.</li>
<li><strong>Структура</strong> – показываем доли от целого, например, что эти клиенты составляют половину выручки.</li>
<li><strong>Взаимосвязи</strong> – из нескольких показателей определяем наличие, характер взаимосвязи.</li>
<li><strong>Статистические методы анализа</strong> относятся сюда же, но в корпоративных отчетах они редко используются.</li>
</ul>
<p><blockquote class="wp-embedded-content" data-secret="NN1EhuLJaI"><a href="https://ivan-shamaev.ru/types-of-analysis-in-qlikview/">Описание аналитических подходов в QlikView</a></blockquote><iframe title="«Описание аналитических подходов в QlikView» &#8212; Авторский сайт ИТ-консультанта" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  src="https://ivan-shamaev.ru/types-of-analysis-in-qlikview/embed/#?secret=NN1EhuLJaI" data-secret="NN1EhuLJaI" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p></p>
<h3><strong>Примеры ключевых показателей эффективности</strong></h3>
<h4><strong>Финансовая деятельность</strong></h4>
<ul>
<li>Чистая прибыль</li>
<li>Коэффициент доходности</li>
<li>Коэффициент валовой прибыли</li>
<li>Чистая прибыль от основной деятельности</li>
<li>Прибыль до уплаты налогов, процентов, износа и амортизации (EBITDA)</li>
<li>Рост выручки</li>
<li>Совокупная прибыль акционеров (TSR)</li>
<li>Добавленная экономическая стоимость (EVA)</li>
<li>ROI</li>
<li>Рентабельность привлеченного капитала (ROCE)</li>
<li>Коэффициент рентабельности активов (ROA)</li>
<li>Рентабельность собственного капитала (ROE)</li>
<li>Соотношение собственных и заемных средств</li>
<li>Цикл обращения денежных средств (CCC)</li>
<li>Коэффициент оборотного капитала</li>
<li>Коэффициент операционных расходов (OER)</li>
<li>Соотношение капитальных затрат и объема продаж</li>
<li>Коэффициент ценности акции (P/E ratio)</li>
</ul>
<h4><strong>Понимание покупателей бизнесом</strong></h4>
<ul>
<li>Индекс потребительской лояльности (NPS)</li>
<li>Коэффициент удержания клиентов</li>
<li>Индекс удовлетворенности потребителей</li>
<li>Показатель доходности клиента</li>
<li>Пожизненная ценность клиента (CLV)</li>
<li>Показатель возвращаемости клиентов</li>
<li>Вовлеченность клиентов</li>
<li>Жалобы клиентов</li>
</ul>
<h4><strong>Ключевые показатели эффективности управления запасами</strong></h4>
<ul>
<li>Доля отказов по ассортиментным группам</li>
<li>Оборот товарного запаса</li>
<li>Доля сверх запасов от общего количества товаров</li>
<li>Выполнение плана закупок</li>
<li>Доля стоимости страхового запаса от общей стоимости товаров</li>
<li>Доля сверх запасов от общей стоимости товарного запаса</li>
<li>Удельные затраты на один заказ</li>
</ul>



<h2 class="wp-block-heading">Скачать материалы по Dashboard Design</h2>



<p><a rel="noreferrer noopener" aria-label="Скачать книгу &quot;The Big Book of Dashboards.pdf&quot; (opens in a new tab)" href="https://yadi.sk/i/LFJskviYg9zdtg" target="_blank"><strong>Скачать книгу &#8220;The Big Book of Dashboards.pdf&#8221;</strong></a></p>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Guide_to_Dashboard_Design.pdf"><strong><span style="color:#005104" class="tadv-color">Guide to Dashboard Design</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Guide_to_Dashboard_Design.pdf" class="wp-block-file__button" download><strong>Скачать</strong></a></div>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Technical_Paper_DAR_QlikView.pdf"><strong><span style="color:#005104" class="tadv-color">Technical Paper DAR QlikView</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Technical_Paper_DAR_QlikView.pdf" class="wp-block-file__button" download><strong>Скачать</strong></a></div>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Data_Visualization_And_Dashboard_Design_Web.pdf"><strong><span style="color:#005104" class="tadv-color">Data Visualization And Dashboard Design Web</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Data_Visualization_And_Dashboard_Design_Web.pdf" class="wp-block-file__button" download><strong>Скачать</strong></a></div>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Dashboard_Tools.pdf"><strong><span style="color:#005104" class="tadv-color">Dashboard Tools</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/Dashboard_Tools.pdf" class="wp-block-file__button" download><strong>Скачать</strong></a></div>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/chem_otlichaetsya_dashboard_ot_otcheta.pdf"><strong><span style="color:#005104" class="tadv-color">Чем отличается дашборд от отчета. Презентация</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/chem_otlichaetsya_dashboard_ot_otcheta.pdf" class="wp-block-file__button" download><strong>Скачать</strong></a></div>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/prezentaciya_dashbordi_dlya_biznesa.pdf"><strong><span style="color:#005104" class="tadv-color">Презентация &#8211; Дашборды для бизнеса</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/10/prezentaciya_dashbordi_dlya_biznesa.pdf" class="wp-block-file__button" download><strong>Скачать</strong></a></div>



<h2>Полезные ссылки (советую заглянуть дополнительно)</h2>
<ul>
<li><a href="https://www.uplab.ru/blog/dashbordy-strategicheskie-i-takticheskie/" target="_blank" rel="noopener noreferrer">https://www.uplab.ru/blog/dashbordy-strategicheskie-i-takticheskie/</a> &#8211; Дашборды, стратегические и тактические</li>
<li><a href="https://ivan-shamaev.ru/practical-issues-in-qlikview-part-2/#_MAD__DAR" target="_blank" rel="noopener noreferrer">https://ivan-shamaev.ru/practical-issues-in-qlikview-part-2/#_MAD__DAR</a> &#8211; Что такое MAD фреймворк и DAR методология?</li>
<li><a href="https://tableau.pro/m30" target="_blank" rel="noopener noreferrer">https://tableau.pro/m30</a> &#8211; Все про дашборды</li>
<li><a href="https://datayoga.ru/q14" target="_blank" rel="noopener noreferrer">https://datayoga.ru/q14</a> &#8211; ДЕНЬ 14 &#8220;Дашборды и ключевые показатели эффективности&#8221;</li>
<li><a href="https://datayoga.ru/q15" target="_blank" rel="noopener noreferrer">https://datayoga.ru/q15</a> &#8211; Дашборды и их композиции. Мобильный дизайн</li>
<li><a href="https://t.me/dashboardets" target="_blank" rel="noopener noreferrer">https://t.me/dashboardets</a> &#8211; телеграм-канал про дашборды</li>
<li><a href="https://alexkolokolov.com/gallery" target="_blank" rel="noopener noreferrer">https://alexkolokolov.com/gallery</a> &#8211; Галерея отраслевых дашбордов</li>
<li><a href="https://habr.com/ru/company/devexpress/blog/341972/" target="_blank" rel="noopener noreferrer">https://habr.com/ru/company/devexpress/blog/341972/</a> &#8211; Дашборд — что это и почему он будет вам полезен или современный способ сделать тайное явным</li>
<li><a href="https://www.tableau.com/solutions/business-dashboards" target="_blank" rel="noopener noreferrer">https://www.tableau.com/solutions/business-dashboards</a> &#8211; Примеры дашбордов по отраслям (на английском)</li>
<li><a href="http://kpilibrary.com/" target="_blank" rel="noopener noreferrer">http://kpilibrary.com/</a> &#8211; Библиотека KPI</li>
<li><a href="https://www.octoboard.com/ru/dashboards" target="_blank" rel="noopener noreferrer">https://www.octoboard.com/ru/dashboards</a> &#8211; большая галлерея дашбордов и отчетов на русском языке (социальные сети, аналитика по сайтам, по маркетинговым мероприятиям, по затратам на рекламу и т.д.)</li>
<li><a href="https://zen.yandex.ru/media/id/5b39d16bbbe87d00a89b216d/dashbordy-kakoi-tip-vybrat-dlia-vashei-kompanii-5b7eb75de9d9d000a9545091" target="_blank" rel="noopener noreferrer">https://zen.yandex.ru/media/id/5b39d16bbbe87d00a89b216d/dashbordy-kakoi-tip-vybrat-dlia-vashei-kompanii-5b7eb75de9d9d000a9545091</a> &#8211; Дашборды: какой тип выбрать для вашей компании</li>
<li><a href="https://www.litres.ru/elena-vetluzhskih/sistema-voznagrazhdeniya-kak-razrabotat-celi-i-kpi-9371508/chitat-onlayn/" target="_blank" rel="noopener noreferrer">https://www.litres.ru/elena-vetluzhskih/sistema-voznagrazhdeniya-kak-razrabotat-celi-i-kpi-9371508/chitat-onlayn/</a> &#8211; Система вознаграждения. Как разработать цели и KPI. Автор:Елена Ветлужских</li>
</ul>
<h2>Подборка youtube видео по тематике &#8220;Дашборды Dashboards&#8221;</h2>
<p><iframe title="Каждый дашборд – это отчет, но не каждый отчет – это дашборд" width="750" height="422" src="https://www.youtube.com/embed/JTgDET8eQGU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p><iframe title="Дашборды: интерактивная визуализация данных / Алексей Колоколов (Институт бизнес-аналитики)" width="750" height="422" src="https://www.youtube.com/embed/ve8aQmE-vBY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/dashboard-design-development-mad-dar-concepts/">Дизайн дашборда Qlik Sense. Проектирование, разработка, MAD (DAR) концепции</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://qliksense.ivan-shamaev.ru/dashboard-design-development-mad-dar-concepts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Data tables и Symbol tables QIX Engine</title>
		<link>https://qliksense.ivan-shamaev.ru/data-tables-and-symbol-tables-qix-engine/</link>
					<comments>https://qliksense.ivan-shamaev.ru/data-tables-and-symbol-tables-qix-engine/#respond</comments>
		
		<dc:creator><![CDATA[qliksense-expert]]></dc:creator>
		<pubDate>Mon, 26 Aug 2019 04:07:07 +0000</pubDate>
				<category><![CDATA[Уровень 1]]></category>
		<guid isPermaLink="false">https://qliksense.ivan-shamaev.ru/?p=1554</guid>

					<description><![CDATA[<p>Symbol tables (Таблицы символов) содержат только отдельные значения полей: индексы с битовой вставкой и их значения в виде открытого текста Compressed Data table (Сжатая таблица данных) содержит то же количество столбцов и строк, что и их исходные, но заполнена битовыми индексами и, следовательно, чрезвычайно компактна Семь основных компонентов QIX Engine<a class="moretag" href="https://qliksense.ivan-shamaev.ru/data-tables-and-symbol-tables-qix-engine/"> Читать дальше&#8230;</a></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/data-tables-and-symbol-tables-qix-engine/">Data tables и Symbol tables QIX Engine</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<ul>
<li><strong>Symbol tables (Таблицы символов)</strong> содержат только отдельные значения полей: индексы с битовой вставкой и их значения в виде открытого текста</li>
<li><strong>Compressed Data table (Сжатая таблица данных)</strong> содержит то же количество столбцов и строк, что и их исходные, но заполнена битовыми индексами и, следовательно, чрезвычайно компактна</li>
</ul>
<div id="attachment_1557" style="width: 1200px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1557" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Data_tables_Symbol_tables.png" alt="Data tables и Symbol tables" width="1190" height="532" class="wp-image-1557 size-full" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Data_tables_Symbol_tables.png 1190w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Data_tables_Symbol_tables-300x134.png 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Data_tables_Symbol_tables-768x343.png 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Data_tables_Symbol_tables-1024x458.png 1024w" sizes="(max-width: 1190px) 100vw, 1190px" /><p id="caption-attachment-1557" class="wp-caption-text"><em>Data tables и Symbol tables Qlik</em></p></div>
<h2>Семь основных компонентов QIX Engine</h2>
<p></p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/data_symbols_state_vectors_cache.png" alt="" width="785" height="546" class="aligncenter size-full wp-image-1562" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/data_symbols_state_vectors_cache.png 785w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/data_symbols_state_vectors_cache-300x209.png 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/data_symbols_state_vectors_cache-768x534.png 768w" sizes="(max-width: 785px) 100vw, 785px" /></p>
<p>Много разных значений в поле ► Более длинный битовый индекс и больше строк в таблице символов (больше использования ОЗУ и больше использования ЦП)<br />&#8211; Если возможно, уменьшите количество различных значений.<br />Например: Time( Floor( Time, 1/24/60 ), ’hh:mm’ )</p>
<p>Длинные значения поля ► Более длинные значения в таблице символов (больше использования ОЗУ)<br />&#8211; Если возможно, уменьшите размер значения поля.<br />Например: Autonumber( ProductID &amp; ’|’ &amp; CustomerID &amp; ’|’ &amp; Date )</p>
<p>Каждый раз, когда вы кликаете в приложении по объекту, рассчитываются состояния и цвета для всех значений полей. Это Logical Inference<br />Состояния хранятся в State Vectors</p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Logical_Inference_State_Vectors_QIX.jpg" alt="" width="1050" height="374" class="aligncenter size-full wp-image-1561" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Logical_Inference_State_Vectors_QIX.jpg 1050w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Logical_Inference_State_Vectors_QIX-300x107.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Logical_Inference_State_Vectors_QIX-768x274.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Logical_Inference_State_Vectors_QIX-1024x365.jpg 1024w" sizes="(max-width: 1050px) 100vw, 1050px" /></p>
<h2>Calculations vs Logical Inference</h2>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/QIX_INTERNAL_DATABASE_logical_hypercube_calculation.jpg" alt="" width="1118" height="507" class="aligncenter size-full wp-image-1564" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/QIX_INTERNAL_DATABASE_logical_hypercube_calculation.jpg 1118w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/QIX_INTERNAL_DATABASE_logical_hypercube_calculation-300x136.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/QIX_INTERNAL_DATABASE_logical_hypercube_calculation-768x348.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/QIX_INTERNAL_DATABASE_logical_hypercube_calculation-1024x464.jpg 1024w" sizes="(max-width: 1118px) 100vw, 1118px" /></p>
<h2>Многопоточность</h2>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/multithreading_qix_engine.png" alt="" width="1143" height="600" class="aligncenter size-full wp-image-1566" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/multithreading_qix_engine.png 1143w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/multithreading_qix_engine-300x157.png 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/multithreading_qix_engine-768x403.png 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/multithreading_qix_engine-1024x538.png 1024w" sizes="(max-width: 1143px) 100vw, 1143px" /></p>
<p>___</p>



<h2 class="wp-block-heading">Материалы</h2>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/QlikSense_QIX_Engine_Under_the_hood.pdf"><strong>QlikSense QIX Engine Under the hood</strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/QlikSense_QIX_Engine_Under_the_hood.pdf" class="wp-block-file__button" download>Скачать</a></div>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/data-tables-and-symbol-tables-qix-engine/">Data tables и Symbol tables QIX Engine</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://qliksense.ivan-shamaev.ru/data-tables-and-symbol-tables-qix-engine/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Основные компоненты приложения Qlik Sense для визуализации данных</title>
		<link>https://qliksense.ivan-shamaev.ru/key-components-of-qlik-sense-data-visualization-application/</link>
					<comments>https://qliksense.ivan-shamaev.ru/key-components-of-qlik-sense-data-visualization-application/#comments</comments>
		
		<dc:creator><![CDATA[qliksense-expert]]></dc:creator>
		<pubDate>Fri, 09 Aug 2019 13:17:30 +0000</pubDate>
				<category><![CDATA[Уровень 1]]></category>
		<guid isPermaLink="false">https://qliksense.ivan-shamaev.ru/?p=1406</guid>

					<description><![CDATA[<p>Составные части приложения Qlik Sense Независимо от того, в какой версии Qlik Sense Вы работаете (Desktop или Enterprise), Вы встретитесь со следующими понятиями: Приложение Qlik Sense &#8211; это данные + визуализация в одном файле. При открытии приложения (в desktop или на сервере) данные из файла (qvf или бинарного файла в<a class="moretag" href="https://qliksense.ivan-shamaev.ru/key-components-of-qlik-sense-data-visualization-application/"> Читать дальше&#8230;</a></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/key-components-of-qlik-sense-data-visualization-application/">Основные компоненты приложения Qlik Sense для визуализации данных</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1>Составные части приложения Qlik Sense</h1>
<p>Независимо от того, в какой версии Qlik Sense Вы работаете (Desktop или Enterprise), Вы встретитесь со следующими понятиями:</p>
<p><strong>Приложение Qlik Sense</strong> &#8211; это данные + визуализация в одном файле. При открытии приложения (в desktop или на сервере) данные из файла (qvf или бинарного файла в серверной версии) загружаются в оперативную память. При фильтрации данных изменяется визуализация. <strong>Документ Qlik Sense</strong>, как правило, охватывает одну область деятельности предприятия или организации. <em><strong>Основные составные части документа Qlik Sense</strong> – данные, скрипт загрузки, листы, измерения, меры, истории, закладки<strong> (см. картинку ниже)</strong>.</em></p>
<p><strong>Скрипт загрузки Qlik Sense</strong> &#8211; сгенерированный автоматически или написанный программистом код, с помощью которого формируется модель данных в приложении Qlik Sense. В скрипте данные загружаются, удаляются, агрегируются, преобразуются различными способами (очень похоже на SQL). Если грамотно писать скрипт, то можно очень быстро обрабатывать миллионы строк. Данные загруженные в приложение сохраняются в сжатом виде в приложении Qlik Sense. При открытии приложения данные загружаются в оперативную память (происходит &#8220;расжатие&#8221; данных с некоторым коэффициентом, который зависит от множества параметров).</p>
<p><strong>Коннекторы в скрипте загрузки</strong> &#8211; Для загрузки данных из разных источников требуются разные виды коннекторов. Обычно это ODBC, REST API, OLEDB.</p>
<p><strong>Модель данных (Data Model)</strong> &#8211; Взаимосвязь таблиц с данными в приложении. Есть таблица фактов, с которой связываются таблицы с измерениями. <strong>Факты</strong> &#8211; например, транзакции (суммы продаж, количество продаж в разрезе товаров, клиентов). <strong>Измерения</strong> &#8211; справочники с различными атрибутами. Например, справочник товаров с атрибутами: код товара, наименование товара, производитель. Справочник клиент: код клиента, ИНН, наименование юридического лица и т.п. Таблица фактов и таблицы измерений связываются по ключевым полям. <strong>Ключевое поле</strong> &#8211; это одно поле, которое содержит одинаковое значение как в таблице фактов, так и в таблице с измерением.</p>
<p><strong>Измерения (Dimensions)</strong> &#8211; Разрез, в котором вычисляются показатели (меры). Справочники из информационных систем с различными атрибутами, которые хранятся в системах или создаются в процессе обработки данных. Например, измерениями могут быть: товары, календарь, клиенты, точки продаж. В разрезе измерений производится анализ данных.</p>
<p><strong>Показатели/Меры/Метрики (Measures)</strong> &#8211; Вычисленное значение показателя, числовое измерение бизнеса/бизнес-процессов (сумма, максимальное значение, среднее значение и т.д.). Все, что фиксируется в системах и может быть посчитано в скрипте &#8211; все это может выступать в качестве показателей. Например, продажи в рублях и штуках, средний чек, трафик, конверсия, уровень сервиса, дебиторская задолженность, бонусы и т.п.</p>
<p><strong>Альтернативные состояния</strong> &#8211; если кратко объяснить, то представьте, что у Вас есть модель данных, в которой Вы выбираете те или иные значения в справочниках. Модель сразу фильтруется. А теперь представьте, что для каждой модели существуют параллельные &#8220;вселенные&#8221;, в которых сделаны свои выборки и эти все модели данных параллельных вселенных не пересекаются физически в одном приложении Qlik Sense.</p>
<p>Альтернативные состояния обычно используются для сравнительного анализа, например, пользователь в одном альтернативном состоянии выбрал один период, клиентов, ассортимент продукции, а в другом альтернативном состоянии выбрал &#8211; другие значения. И все это можно сравнить между собой. Также альтернативные состояния используются в кросс-анализе, в анализе LFL разных периодах и т.д.</p>
<p><strong>Листы с визуализацией</strong> &#8211; В приложении создается лист, который предназначен для того или иного вида анализа, например, дашборд, или сравнительный анализ по поставщикам. Далее на листе создается визуализация: kpi, диаграммы, таблицы, фильтры (для фильтрации данных по периодам, по сущностям бизнеса и т.д.).</p>
<p><strong>Визуализация</strong> &#8211; любой объект приложения Qlik Sense, который отображает данные (график, kpi и т.д.).</p>
<p><strong>Снимок (Snapshots)</strong> &#8211; Растровое изображение конкретной визуализации с учетом примененных отборов, включающее в себя аннотацию.</p>
<p><strong>Истории (Stories)</strong> &#8211; Элемент приложения Qlik Sense представляющий из себя презентацию. В историях можно располагать сделанные снимки, аннотации, изображения.</p>
<p><strong>Мастер библиотека</strong> &#8211; Библиотека содержит повторно используемые ресурсы, такие как измерения, показатели и объекты визуализации, которые Вы можете использовать в своем приложении повторно. Если необходимо внести изменение в расчет показателя, внести правку в измерение или объект визуализации &#8211; достаточно сделать изменение в библиотеке (автоматически все изменения будут применены ко всему приложению). Для показателей рекомендую использовать переменные и выражение хранить в переменных.</p>
<p><strong>Готовые измерения в библиотеке</strong> &#8211; </p>
<p><strong>Готовые показатели в библиотеке</strong> &#8211; </p>
<p><strong>Готовая визуализация в библиотеке</strong> &#8211; </p>
<p><strong>Отбор</strong> &#8211; Установленный фильтр по одному из полей данных.</p>
<p><strong>Закладка</strong> &#8211; Сохраненная совокупность отборов.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1473" height="738" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_App_Structure.jpeg" alt="" class="wp-image-1409" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_App_Structure.jpeg 1473w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_App_Structure-300x150.jpeg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_App_Structure-768x385.jpeg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_App_Structure-1024x513.jpeg 1024w" sizes="(max-width: 1473px) 100vw, 1473px" /></figure>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="689" height="530" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_Alternative_States.jpeg" alt="" class="wp-image-1408" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_Alternative_States.jpeg 689w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_Alternative_States-300x231.jpeg 300w" sizes="(max-width: 689px) 100vw, 689px" /></figure>



<h2 class="wp-block-heading">Последовательность работы с приложением Qlik Sense</h2>



<p><span>Для того, чтобы создать приложение, необходимо выполнить следующие действия:</span></p>
<ol>
<li>Создаем пустое приложение</li>
<li>Пишем скрипт загрузки данных (при выборе файлов, которые нужно загрузить, автоматически генерируется скрипт загрузки таблицы). В скрипте загрузки обычно загружаются несколько таблиц, одна из которых является таблицей фактов, одна таблица &#8211; календарь и несколько таблиц с измерениями.</li>
<li></li>
</ol>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/key-components-of-qlik-sense-data-visualization-application/">Основные компоненты приложения Qlik Sense для визуализации данных</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://qliksense.ivan-shamaev.ru/key-components-of-qlik-sense-data-visualization-application/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Qlik Sense ETL &#038; ELT: Основы загрузки данных из систем учета, баз данных, файлов</title>
		<link>https://qliksense.ivan-shamaev.ru/qlik-sense-etl-data-load-script-basic/</link>
					<comments>https://qliksense.ivan-shamaev.ru/qlik-sense-etl-data-load-script-basic/#comments</comments>
		
		<dc:creator><![CDATA[qliksense-expert]]></dc:creator>
		<pubDate>Thu, 08 Aug 2019 21:07:24 +0000</pubDate>
				<category><![CDATA[Уровень 1]]></category>
		<guid isPermaLink="false">https://qliksense.ivan-shamaev.ru/?p=1379</guid>

					<description><![CDATA[<p>Что такое ETL &#38; ELT? В чем отличие? Как та или иная технология может быть применима в Qlik Sense Извлечение, загрузка и преобразование (ELT) — это процесс, с помощью которого данные извлекаются из исходной системы, загружаются в хранилище данных, а затем преобразовываются. E, T, L: Extraction (Извлечение): извлечение необработанных данных<a class="moretag" href="https://qliksense.ivan-shamaev.ru/qlik-sense-etl-data-load-script-basic/"> Читать дальше&#8230;</a></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/qlik-sense-etl-data-load-script-basic/">Qlik Sense ETL &#038; ELT: Основы загрузки данных из систем учета, баз данных, файлов</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2><strong>Что такое ETL &amp; ELT? В чем отличие? Как та или иная технология может быть применима в Qlik Sense</strong></h2>
<p><strong>Извлечение, загрузка и преобразование (ELT)</strong> — это процесс, с помощью которого данные извлекаются из исходной системы, загружаются в хранилище данных, а затем преобразовываются.</p>
<p><strong>E, T, L:</strong></p>
<ul>
<li><strong>Extraction (Извлечение):</strong> извлечение необработанных данных из неструктурированного пула данных и их перенос во временное, промежуточное хранилище данных.</li>
<li><strong>Преобразование (Transformation):</strong> структурирование, обогащение и преобразование необработанных данных в соответствии с целевым источником.</li>
<li><strong>Загрузка (Loading):</strong> загрузка структурированных данных в хранилище данных для анализа и использования инструментами бизнес-аналитики (BI).</li>
</ul>
<p>ETL требует управления необработанными данными, включая извлечение необходимой информации и проведение правильных преобразований, чтобы в конечном итоге удовлетворить потребности бизнеса. Каждый этап &#8211; извлечение, преобразование и загрузка &#8211; требует взаимодействия инженеров и разработчиков данных, а также работы с ограничениями емкости традиционных хранилищ данных. Используя ETL, аналитики и другие пользователи BI привыкли ждать , поскольку простой доступ к информации недоступен до тех пор, пока не будет завершен весь процесс ETL.</p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/etl_data_process.jpg" alt="" width="942" height="358" class="aligncenter size-full wp-image-1912" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/etl_data_process.jpg 942w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/etl_data_process-300x114.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/etl_data_process-768x292.jpg 768w" sizes="(max-width: 942px) 100vw, 942px" /></p>
<p><strong>Извлечение, загрузка и преобразование (ELT)</strong> — это процесс, с помощью которого данные извлекаются из исходной системы, загружаются в хранилище данных, а затем преобразовываются.</p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/elt_data_process.jpg" alt="" width="938" height="345" class="aligncenter size-full wp-image-1914" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/elt_data_process.jpg 938w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/elt_data_process-300x110.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/elt_data_process-768x282.jpg 768w" sizes="(max-width: 938px) 100vw, 938px" /></p>
<h2>QVD файлы</h2>
<p>Qlik Sense имеет собственный формат хранения данных. Данные из разных систем выгружаются и сохраняются в QVD-формате. Этот формат файлов очень быстро загружается в Qlik Sense для дальнейшей обработки. Это как dump базы данных. Выгрузка и загрузка миллионов строк (без доп.условий) занимает секунды.<br>Иногда можно построить серьезные коммерческие проекты только на QVD файлах.</p>
<ul>
<li><strong>Первый уровень данных</strong> — сырые данные (выгрузки из источников без каких либо изменений).</li>
<li><strong>Второй уровень</strong> — обработанные файлы (объединение данных, дополнительные аналитики, флаги, специальные поля, рассчитанные меры и т.д.).</li>
<li><strong>Третий уровень</strong> — агрегированные данные и т.д.</li>
</ul>
<p>Эти файлы можно использовать в разных приложениях, за них могут отвечать разные сотрудники и сервисы. Скорость загрузки из таких файлов в десять раз быстрее чем из обычных источников данных. Это позволяет экономить на базе данных и обмениваться информацией между различными приложениями Qlik.</p>
<p><strong>Пример организации ETL-процесса на примере QlikView (в Qlik Sense аналогичные процессы):</strong></p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlikview_datatiers_qvd_files.jpg" alt="" width="684" height="532" class="aligncenter size-full wp-image-1878" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlikview_datatiers_qvd_files.jpg 684w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlikview_datatiers_qvd_files-300x233.jpg 300w" sizes="(max-width: 684px) 100vw, 684px" /></p>
<h2><strong>Организация ETL на базе Qlik Sense &#8211; Вариант 1</strong></h2>
<ul>
<li><strong>Этап выгрузки данных из систем (Extract):</strong> На Qlik Sense формируются процедуры выгрузки данных без изменений (как есть). В рамках инкрементальной загрузки рекомендуется выгружать только новые и/или изменившиеся данные. Для выгрузки каждой отдельной таблицы пишется отдельный скрипт, который вызывается в Qlik Sense через must_include. Схема следующая:
<ul style="list-style-type: circle;">
<li>Загружаем данные из таблицы базы данных (или другого источника)</li>
<li>Сохраняем загруженную таблицу в QVD-файл</li>
<li>Удаляем таблицу</li>
<li>Переходим к следующей таблице и т.д.</li>
</ul>
</li>
<li><strong>Этап трансформации данных (Transformation):</strong> На этом этапе из сырых данных формируются справочники, которые затем будут использоваться в моделях. На этом этапе подтягиваются различные параметры из смежных справочниках (например, для товаров можно подтянуть атрибуты, разные свойства, нормативы из других справочников). На этом этапе формируются QVD файлы, которые будут использоваться в разных приложениях и дальнейших ETL-процессах. Убираются ненужные атрибуты, производится очистка параметров. На этом этапе рекомендуется использовать вместо join функцию mapping &amp; applymap. Если данные приходят из разных филиалов, То на этапе трансформации они по прежнему собираются в рамках отдельного филиала. Это необходимо, чтобы минимизировать затраты на ресурсы при обработке данных (распараллеливание процессов обработки, облегчения поиска ошибок, облегчение процесса тестирования/разработки.</li>
<li><strong>Этап агрегации данных (как часть процесса Transformation):</strong> Этот этап является дополнительным этапом, который по сути входит в шаг трансформации данных. На этом этапе собираются специфические таблицы (файлы QVD) для конкретных моделей. При этом данные очень часто группируются, чтобы уменьшить размер таблиц. Т.е. фактически это этап агрегации/консолидации данных. Данные из различных филиалов собираются в один единый файл.</li>
</ul>
<h3>Краткая классическая схема ETL-процесса (процесса выгрузки, обработки данных)</h3>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/kratkiy_etl_process_qlik_sense_app_qvd.jpg"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/kratkiy_etl_process_qlik_sense_app_qvd.jpg" alt="" width="806" height="280" class="aligncenter size-full wp-image-2024" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/kratkiy_etl_process_qlik_sense_app_qvd.jpg 806w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/kratkiy_etl_process_qlik_sense_app_qvd-300x104.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/kratkiy_etl_process_qlik_sense_app_qvd-768x267.jpg 768w" sizes="(max-width: 806px) 100vw, 806px" /></a></p>
<h3 class="hestia-title entry-title"><strong>Общая схема ETL-процесса в Qlik Sense</strong></h3>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/07/Qlik_Sense_ETL_Process_Schema.png" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/07/Qlik_Sense_ETL_Process_Schema.png" alt="" width="5310" height="1628" class="aligncenter wp-image-1331 size-full" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/07/Qlik_Sense_ETL_Process_Schema.png 5310w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/07/Qlik_Sense_ETL_Process_Schema-300x92.png 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/07/Qlik_Sense_ETL_Process_Schema-768x235.png 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/07/Qlik_Sense_ETL_Process_Schema-1024x314.png 1024w" sizes="(max-width: 5310px) 100vw, 5310px" /></a></p>
<p>На завершающем этапе ETL-процесса данные загружаются в приложение (создается модель данных). Есть различные схемы моделей данных, целевая схема &#8211; звезда:</p>
<ul>
<li><strong>Таблица фактов</strong> (продажи в разрезе клиентов, товаров, по датам)</li>
<li><strong>Справочники (Измерения):</strong> Товары, Клиенты, Календарь</li>
<li><strong>Вспомогательные таблицы,</strong> не связанные с другими таблицами: Data Islands</li>
</ul>
<p><strong>Пример модели данных:</strong></p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_DataModel_Star_Schema_ETL_Data_Load.jpg"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_DataModel_Star_Schema_ETL_Data_Load.jpg" alt="" width="1004" height="584" class="aligncenter size-full wp-image-2028" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_DataModel_Star_Schema_ETL_Data_Load.jpg 1004w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_DataModel_Star_Schema_ETL_Data_Load-300x175.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_DataModel_Star_Schema_ETL_Data_Load-768x447.jpg 768w" sizes="(max-width: 1004px) 100vw, 1004px" /></a></p>
<h2><strong>TSEEQ: The Structured ETL Engine for Qlik Sense</strong></h2>
<p><strong>TSEEQ</strong> &#8211; это структурированный движок ETL для Qlik, может быть полезен для вашего проекта. TSEEQ &#8211; это механизм ETL, а не процесс; TSEEQ можно использовать для оптимизации любого ETL-процесса, который вы используете в своей реализации Qlik Sense.</p>
<ul>
<li><a href="https://1c-predpriyatie-qlik.ivan-shamaev.ru/wp-content/uploads/2018/10/TSEEQ_The_Structured_ETL_Engine_For_Qlik_March_15_2018.pdf" target="_blank" rel="noopener noreferrer">Скачать TSEEQ: The Structured ETL Engine for Qlik Sense pdf</a></li>
<li><a href="https://github.com/qlikperf/TSEEQ" target="_blank" rel="noopener noreferrer">TSEEQ на github</a></li>
</ul>
<h2><strong>Основы проектирования хранилища данных для Qlik Sense</strong></h2>
<h3><strong>Хранилище данных (в формате QVD-файлов) и Bus Matrix</strong></h3>
<p><strong>Хранилище данных Qlik Sense</strong> предпочтительно должно соответствовать корпоративной архитектуре данных со стандартными фактами и измерениями, которые могут совместно использоваться в разных моделях. Несмотря на то, что qvd-файлы используются в Qlik Sense, необходимо соблюдать существующие определения данных и управление ими. Любые новые факты, измерения и меры, разработанные с помощью Qlik Sense, должны дополнять архитектуру компании.</p>
<p><strong>1. Создание Bus Matrix хранилища данных:</strong></p>
<ul>
<li><strong>Матрица бизнес-процессов (фактов) и стандартных измерений</strong> является основным инструментом для проектирования и управления моделями данных и передачи общей архитектуры BI.</li>
</ul>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/business_process_shared_dimensions_bus_matrix_qlik_sense.png"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/business_process_shared_dimensions_bus_matrix_qlik_sense.png" alt="" width="760" height="225" class="aligncenter size-full wp-image-1998" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/business_process_shared_dimensions_bus_matrix_qlik_sense.png 760w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/business_process_shared_dimensions_bus_matrix_qlik_sense-300x89.png 300w" sizes="(max-width: 760px) 100vw, 760px" /></a></p>
<ul>
<li>В этом примере бизнес-процессами, выбранными для модели, являются Продажи через интернет, продажи через посредников и главная книга.</li>
</ul>
<p><strong>2. Создание Bus Matrix: </strong></p>
<ul>
<li>Результат процесса проектирования модели должен включать более подробную Bus Matrix.</li>
</ul>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/business_process_row_granularity_mesures_dimensions_qliksense.png"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/business_process_row_granularity_mesures_dimensions_qliksense.png" alt="" width="725" height="191" class="aligncenter size-full wp-image-1999" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/business_process_row_granularity_mesures_dimensions_qliksense.png 725w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/business_process_row_granularity_mesures_dimensions_qliksense-300x79.png 300w" sizes="(max-width: 725px) 100vw, 725px" /></a></p>
<ul>
<li><strong>Bus Matrix:</strong> интернет-продажи, продажи через посредников и главная книга</li>
<li>Ясность и согласованность содержания таблиц фактов, определений основных показателей и всех измерений дает уверенность при переходе в фазу разработки.</li>
</ul>
<h2><strong><span style="color: #008000;">Extract Level:</span> Описание основных элементов скрипта загрузки данных в Qlik Sense</strong></h2>
<h3><strong>Создание подключения в скрипте Qlik Sense</strong></h3>
<p>Для загрузки данных из разных источников совершенно необязательно знать синтаксис и команды Qlik Sense. На первоначальном этапе работы достаточно просто пользоваться мастером генерации скрипта.</p>
<p>Для этого в приложении <strong>заходим в редактор скрипта:</strong></p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/1_redactor_zagruzki_dannih.jpg"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/1_redactor_zagruzki_dannih.jpg" alt="" width="474" height="445" class="aligncenter size-full wp-image-2011" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/1_redactor_zagruzki_dannih.jpg 474w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/1_redactor_zagruzki_dannih-300x282.jpg 300w" sizes="(max-width: 474px) 100vw, 474px" /></a></p>
<p>Справа нажимаем <strong>&#8220;Создать новое подключение&#8221;:</strong></p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/2_sozdat_novoe_podkluchenie.jpg"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/2_sozdat_novoe_podkluchenie.jpg" alt="" width="1365" height="545" class="aligncenter size-full wp-image-2012" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/2_sozdat_novoe_podkluchenie.jpg 1365w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/2_sozdat_novoe_podkluchenie-300x120.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/2_sozdat_novoe_podkluchenie-768x307.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/2_sozdat_novoe_podkluchenie-1024x409.jpg 1024w" sizes="(max-width: 1365px) 100vw, 1365px" /></a></p>
<p><strong>У Qlik Sense есть различные коннекторы к различным источникам данных.</strong> В рамках этого раздела мы создадим только коннектор к директории на диске (где лежат QVD-файлы):</p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/3_vibor_konnektora.jpg"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/3_vibor_konnektora.jpg" alt="" width="826" height="564" class="aligncenter size-full wp-image-2013" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/3_vibor_konnektora.jpg 826w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/3_vibor_konnektora-300x205.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/3_vibor_konnektora-768x524.jpg 768w" sizes="(max-width: 826px) 100vw, 826px" /></a></p>
<p><strong>Указываем директорию и название соединения:</strong></p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/4_create_qvd_source_folder_connection.jpg"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/4_create_qvd_source_folder_connection.jpg" alt="" width="555" height="610" class="aligncenter size-full wp-image-2014" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/4_create_qvd_source_folder_connection.jpg 555w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/4_create_qvd_source_folder_connection-273x300.jpg 273w" sizes="(max-width: 555px) 100vw, 555px" /></a></p>
<p>Далее в соединении нажимаем на кнопку <strong>&#8220;Выбрать данные&#8221;</strong>:</p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/5_Select_QVD_files_from_connection.jpg"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/5_Select_QVD_files_from_connection.jpg" alt="" width="1074" height="629" class="aligncenter size-full wp-image-2015" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/5_Select_QVD_files_from_connection.jpg 1074w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/5_Select_QVD_files_from_connection-300x176.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/5_Select_QVD_files_from_connection-768x450.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/5_Select_QVD_files_from_connection-1024x600.jpg 1024w" sizes="(max-width: 1074px) 100vw, 1074px" /></a></p>
<p><strong>Qlik Sense предложит список файлов для выбора</strong> из директории (можно провалиться в поддиректорию/подпапку):</p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/6_country_qvd_file.jpg"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/6_country_qvd_file.jpg" alt="" width="579" height="587" class="aligncenter size-full wp-image-2016" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/6_country_qvd_file.jpg 579w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/6_country_qvd_file-296x300.jpg 296w" sizes="(max-width: 579px) 100vw, 579px" /></a></p>
<p><strong>В окне предпросмотра выбираете колонки</strong>, которые необходимо загрузить из файла (либо генерируете скрипт и в скрипте удаляете ненужные колонки):</p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/7_insert_generate_script_qlik_sense.jpg"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/7_insert_generate_script_qlik_sense.jpg" alt="" width="944" height="599" class="aligncenter size-full wp-image-2017" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/7_insert_generate_script_qlik_sense.jpg 944w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/7_insert_generate_script_qlik_sense-300x190.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/7_insert_generate_script_qlik_sense-768x487.jpg 768w" sizes="(max-width: 944px) 100vw, 944px" /></a></p>
<p>Мы получили <strong>сгенерированный скрипт загрузки данных из QVD-файла</strong>. Такая цепочка действий выполняется практически для всех источников данных (включая базы данных). Единственное исключение, наверное, это получение данных из API. Но это уже продвинутая разработка, на первом этапе это не потребуется.</p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/8_script_qlik_sense_creating.jpg"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/8_script_qlik_sense_creating.jpg" alt="" width="1002" height="661" class="aligncenter size-full wp-image-2018" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/8_script_qlik_sense_creating.jpg 1002w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/8_script_qlik_sense_creating-300x198.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/8_script_qlik_sense_creating-768x507.jpg 768w" sizes="(max-width: 1002px) 100vw, 1002px" /></a></p>
<h3><strong data-rich-text-format-boundary="true">Операторы загрузки данных LOAD QVD &amp; SQL SELECT</strong></h3>
<p><span><strong>Для загрузки данных из QVD файлов</strong> используется структура:</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">Контрагенты:
LOAD
    "Контрагент ID",
    Сегмент,
    Контрагент,
    Страна,
    Город,
    Регион
FROM [lib://Источник данных/Контрагенты.qvd] (qvd);</pre>
<p><strong>Для выгрузки данных из базы данных</strong> необходимо создать подключение к БД и сформировать скрипт загрузки. Скрипт загрузки может быть составлен несколькими вариантами. Пока что рассмотрим три варианта без подробного разбора.</p>
<p><strong>Вариант 1:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">LIB CONNECT TO 'MySQL_Enterprise_Edition';

[mysql_table_name]:
SELECT `option_id`,
     `option_name`,
     `option_value`,
     autoload
FROM `database_name`.`mysql_table_name`;</pre>
<p><strong>Вариант 2:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">LIB CONNECT TO 'MySQL_Enterprise_Edition';

[mysql_table_name]:
LOAD option_id, 
   option_name, 
   option_value, 
   autoload;
SELECT `option_id`,
     `option_name`,
     `option_value`,
     autoload
FROM `database_name`.`mysql_table_name`;</pre>
<p><strong>Вариант 3:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">LIB CONNECT TO 'MySQL_Enterprise_Edition';

[mysql_table_name]:
SQL
SELECT `option_id`,
     `option_name`,
     `option_value`,
     autoload
FROM `database_name`.`mysql_table_name`;</pre>
<h3><strong>Загрузка данных из Excel &#8211; LOAD FROM XLSX</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="null">[Планирование ден.потоков]:
LOAD
    "Доходы и расходы",
    "Варианты расходов",
    "1 месяц",
    "2 месяц",
    "3 месяц",
    "4 месяц",
    "5 месяц",
    "6 месяц",
    "7 месяц",
    "8 месяц",
    "9 месяц",
    "10 месяц",
    "11 месяц",
    "12 месяц"
FROM [lib://XLSX_DataSource/1_Analiz_denezhnykh_potokov.xlsx]
(ooxml, embedded labels, header is 2 lines, table is [Планирование ден.потоков]);</pre>
<h3><strong>Пример загрузки данных из CSV &#8211; LOAD FROM CSV</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="null">[Продажи]:
LOAD
    SKU,
    "Group",
    "Week",
    Store_id,
    "Sales qty, pcs.",
    "Sales, RUB",
    "Sales in the cost, RUB",
    "Promo index",
    Availability
FROM [lib://CSV_Source/Test.csv]
(txt, codepage is 1251, embedded labels, delimiter is ';', msq);</pre>
<h3><strong>Создание таблицы в скрипте &#8211; хранимая таблица в скрипте &#8211; LOAD * Inline []</strong></h3>
<p>Иногда в ходе загрузки данных требуется создать таблицу со значениями в скрипте. Например, для фильтров. Не всегда хочется генерить дополнительный файл XLSX, проще и быстрее сделать все в скрипте. Для этого есть конструкция LOAD * Inline:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">[Таблица хранимая в скрипте]:
LOAD * Inline [
  Поле 1, Поле 2, Поле 3
    Значение 1.1, Значение 2.1, Значение 3.1
    Значение 1.2, Значение 2.2, Значение 3.2
    Значение 1.3, Значение 2.3, Значение 3.3
];</pre>
<h3><strong>Сохранение таблицы в QVD-файл</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="null">STORE [Регистр Продаж] into 'lib://ExtractData/1С_Предприятие/РегистрПродаж.qvd' (qvd);</pre>
<p>&#8230;</p>
<p><span style="color: #ff6600;"><em>Продолжение следует</em></span></p>
<h2><strong><span style="color: #008000;">Transform Level:</span> Описание функций, приемов эффективного преобразования данных</strong></h2>
<p>В этом разделе я опишу основные приемы обработки данных в скрипте Qlik Sense. Конечно же в одной статье нереально вместить и описать все случаи и все подходы по обработке данных. Основная цель этого раздела &#8211; заложить базис синтаксиса, основных конструкций по обработки данных в скрипте Qlik Sense.</p>
<h3>Rename Table / Rename Field / Drop Table(s) / Drop Field(s)</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>Load * Resident</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>Загрузка данных по маске From &#8216;FileName_*.qvd&#8217; (qvd)</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>Concatenate &amp; NoConcatenate</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>AutoGenerate</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>Exists()</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>SubField()</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>Match() &amp; WildMatch()</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>Mapping / ApplyMap</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>Left Join &amp; Inner Join</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>For i To NoOfRows / NoOfFields. Peek() &amp; FieldName()</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>Load While <span>IterNo()</span></h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>if(). Комбинация Pick() &amp; Match() в скрипте</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<h3>Агрегация данных Group By. Предрасчет показателей в скрипте</h3>
<p><strong><em><span style="color: #ff6600;">todo</span></em></strong></p>
<p>&#8230;</p>
<p><span style="color: #ff6600;"><em>Продолжение следует</em></span></p>
<h2><strong><span style="color: #008000;">Load Level:</span> Загружаем данные в модель. Основные концепции и подходы по созданию моделей</strong></h2>
<p>&#8230;</p>
<p><span style="color: #ff6600;"><em>Продолжение следует</em></span></p>



<h2 class="wp-block-heading"><strong>Краткий инструктаж по написанию скриптов загрузки</strong></h2>



<p>В этом разделе будут описаны некие принципы для организации ETL-процесса с помощью Qlik Sense (без использования других инструментов обработки данных).</p>



<p><strong>1. В операциях Concatenate, Join не используйте Distinct.</strong> Если таблица формируется с помощью последовательных операций объединения данных в одну таблицу с помощью оператора принудительного объединения таблиц Concatenate (сходных по набору столбцов, но имеющих несколько разных колонок), операторов присоединения данных Join (Left, Right, Inner) &#8211; не используйте Distinct &#8211; иначе Вы потеряете одинаковые строки (это не дубликаты, просто в 1 документе могут быть указан один и тот же товар двумя строками, если в системе учета это не запрещено). Причем не важно, на каком шаге был применен Distinct (в самом начале обработки данных или в конце).</p>
<p><strong>2. Используйте меппинги ApplyMap вместо Join.</strong> При большом объеме данных это ускоряет загрузку данных.</p>
<p><strong>3. Одинаковые части формул рекомендуется выносить в переменные</strong>, чтобы упростить дальнейшую поддержку кода приложения. Переменные можно вести как в Excel, так и в Variable Manager. Также можно использовать различные расширения или extension (например, <a href="https://developer.qlik.com/garden/5d153975aa5e6e001603cce2" target="_blank" rel="noopener noreferrer">Qlik Sense Variable Editor Mashup</a>).</p>
<p><strong>4. Ключи оборачивать в TEXT(), даже если это hash-ключ из 1С Предприятие 8.3.</strong> Qlik имеет неприятную штуку с изменением ключей (встречается редко, но проскакивает). В обычных ключах очень часто клик может преобразовать запись &#8220;130E0&#8221; в &#8220;13E1&#8221;. Т.е. знак &#8220;E&#8221; он воспринимает как разряд.</p>
<p><strong>5. Для генерации составных ключей вместо hash128() рекомендуется использовать autonumberhash128()</strong> &#8211; он быстрее. Генерация ключей с помощью функций Hash128 и Hash256 утяжеляет модель, что ведет к увеличению использования RAM.</p>
<p><strong>6. Preceding Load:</strong> Для того, чтобы сократить объем кода и оптимизировать скорость загрузки данных рекомендую использовать Preceding Load (Предшествующий оператор LOAD). <span>Preceding Load можно использовать и при загрузке из файлов, из баз данных, из уже загруженных таблиц с помощью оператора Resident. Количество &#8220;этажей&#8221; Preceding Load не ограничивается (используйте в меру разумного).</span></p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">SimplePreceding:
LOAD
     *,
     [To Date] - [From Data] as Duration
;
LOAD
     Date(Date#(FromDate, 'YYYYMMDD'), 'DD MMM YYYY') as [From Date],
     Date(Date#(ToDate, 'YYYYMMDD'), 'DD MMM YYYY') as [To Date],
FROM [lib://SourceData/Durations.xlsx] (ooxml, embedded labels, table is Data);</pre>
<p><strong>7. Нумерация строк в большой таблице фактов.</strong> Если нужно пронумеровать таблицу фактов, которая грузится из нескольких источников, то для начала загружаем все факты в 1 таблицу Qlik Sense, затем перекладываем таблицу саму себя (Load * Resident) с функцией <strong>RecNo()</strong>.</p>
<p><strong>RowNo()</strong> для больших таблиц не нужно использовать, т.к. она очень медленно работает.</p>
<p><strong>8. Не создавайте меппинги напрямую из больших QVD файлов.</strong> Сначала грузим QVD в таблицу, затем перекладываем с помощью <strong>Resident</strong> данные в <strong>Mapping</strong> таблицу. Загрузка данных в Mapping таблицу отключает оптимизированную загрузку данных.</p>
<p><strong>9. Избегайте сложных динамически генерируемых полей, таблиц, кусков кода.</strong> Любая динамика усложняет поддержку решения. Особенно это критично, когда один разработчик уходит из команды, код приходится изучать с нуля. Если другого выхода нет, кроме как использование динамики, то делайте генерацию кода, полей и т.п. Если есть простой способ написания кода &#8211; используйте его. Унификация и простота &#8211; залог облегчения поддержки инфраструктуры, etl-процесса. Не гонитесь за интересными решениями, прокачкой ИТ-навыков &#8211; это вредит ИТ-решениям компании (но разработчикам конечно это на пользу). Плюс повышаются косвенные затраты компании, в какой-то момент потребуется вместо 1 разработчика на поддержку использовать 2х разработчиков.</p>
<p>&#8230;</p>
<p><span style="color: #ff6600;"><em>Продолжение следует</em></span></p>



<h2 class="wp-block-heading">Скачать дополнительный материал</h2>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/Qlik_Sense_Development_Cheat_Sheet_v3.pdf"><strong><span style="color:#005104" class="tadv-color">Qlik Sense Development Cheat Sheet v3</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/Qlik_Sense_Development_Cheat_Sheet_v3.pdf" class="wp-block-file__button" download><strong>Скачать</strong></a></div>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/Performance_and_Optimization_Best_Practices_in_Qlik_v2.pptx"><strong><span style="color:#005104" class="tadv-color">Performance and Optimization Best Practices in Qlik v2</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/Performance_and_Optimization_Best_Practices_in_Qlik_v2.pptx" class="wp-block-file__button" download><strong>Скачать</strong></a></div>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/Three_Tier_Architecture_Qlik.pdf"><strong><span style="color:#005104" class="tadv-color">Three Tier Architecture Qlik</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/Three_Tier_Architecture_Qlik.pdf" class="wp-block-file__button" download><strong>Скачать</strong></a></div>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/QlikView_Best_Practices_Development_v_0_5.pdf"><strong><span style="color:#005104" class="tadv-color">QlikView Best Practices Development v0.5</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/QlikView_Best_Practices_Development_v_0_5.pdf" class="wp-block-file__button" download><strong>Скачать</strong></a></div>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/QlikView_Data_Architectures.pdf"><strong><span style="color:#005104" class="tadv-color">QlikView Data Architectures</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/QlikView_Data_Architectures.pdf" class="wp-block-file__button" download><strong>Скачать</strong></a></div>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/qlik-sense-etl-data-load-script-basic/">Qlik Sense ETL &#038; ELT: Основы загрузки данных из систем учета, баз данных, файлов</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://qliksense.ivan-shamaev.ru/qlik-sense-etl-data-load-script-basic/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Фишки (Tips &#038; Tricks) по Qlik Sense / QlikView. Секретные приемы Qlik</title>
		<link>https://qliksense.ivan-shamaev.ru/qlik-sense-secret-tips-tricks/</link>
					<comments>https://qliksense.ivan-shamaev.ru/qlik-sense-secret-tips-tricks/#respond</comments>
		
		<dc:creator><![CDATA[qliksense-expert]]></dc:creator>
		<pubDate>Wed, 07 Aug 2019 11:19:57 +0000</pubDate>
				<category><![CDATA[Уровень 1]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[Qlik]]></category>
		<category><![CDATA[qlik sense]]></category>
		<category><![CDATA[qliksense]]></category>
		<category><![CDATA[Фишки по Qlik Sense]]></category>
		<guid isPermaLink="false">https://qliksense.ivan-shamaev.ru/?p=1363</guid>

					<description><![CDATA[<p>Фишки по коду и выражениям (script &#38; expression) Количество выбранных элементов в измерении GetSelectedCount([Товар Название]) Количество возможных элементов в измерении GetPossibleCount([Товар Название]) Получить количество полей из таблицы модели =Count({1&#60;$Table={'Таблица Фактов'}&#62;} $Field) Переменная &#8220;Условие-проверка&#8221;, что приложение Qlik перегрузилось сегодня vAppReload =match(today(0),today(2)) Получить в скрипте текст, заключенный между символами Текст между символами:<a class="moretag" href="https://qliksense.ivan-shamaev.ru/qlik-sense-secret-tips-tricks/"> Читать дальше&#8230;</a></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/qlik-sense-secret-tips-tricks/">Фишки (Tips &#038; Tricks) по Qlik Sense / QlikView. Секретные приемы Qlik</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>Фишки по коду и выражениям (script &amp; expression)</strong></h2>



<h3><strong>Количество выбранных элементов в измерении</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="null">GetSelectedCount([Товар Название])</pre>
<h3><strong>Количество возможных элементов в измерении</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="null">GetPossibleCount([Товар Название])</pre>
<h3><strong>Получить количество полей из таблицы модели</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="null">=Count({1&lt;$Table={'Таблица Фактов'}&gt;} $Field)</pre>
<h3><strong>Переменная &#8220;Условие-проверка&#8221;, что приложение Qlik перегрузилось сегодня</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="null">vAppReload
=match(today(0),today(2))</pre>
<h3><strong>Получить в скрипте текст, заключенный между символами</strong></h3>
<p><strong>Текст между символами:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">=TextBetween('lkj dsf 554 [Текст в квадратных скобках]','[',']')</pre>
<h3><strong>Как менять значения переменной по кругу при нажатии на кнопку</strong></h3>
<p><strong>Как менять значения переменной по кругу:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">=pick(match($(пПеременная),1,2,3,4,5,6),2,3,4,5,6,1)</pre>
<h3><strong>Сравнение поля с конкретным временем</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="null">Time(Left([Время обработки],8))&gt;MakeTime(18,30,00)</pre>
<h3><strong>Время обновления файла</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="null">Let vFileDateTimeModified = FileTime('C:\QS_QVD\Чеки.qvd');</pre>
<h3><strong>Выход из скрипта по условию</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="null">Exit Script when a=1;</pre>
<h3><strong>Значение по умолчанию для конструкции Pick(Match())</strong></h3>
<p><strong>Pick &amp; Match &#8211; значение по-умолчанию, если не найдено условие</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">Pick(Match(lower([Флаг]),'true','false')+1,'Не определено','Да','Нет') As [Какой-то аналитический признак]</pre>
<h3><strong>Проверка поля на пустоту в скрипте Qlik Sense</strong></h3>
<p><strong>Проверка поля на пустоту (вместо not IsNull and &lt;&gt;&#8221;)</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">Len(Trim([Поле справочника]))=0</pre>
<h3><strong>Использование Match при наличии пустых значений в поле</strong></h3>
<p><strong>Наткнулся, что в Match не учитывает пустые значения (null).</strong> Т.е. условие в скрипте</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">UPPER([Ассортимент]) &lt;&gt; 'ВЕЛОСИПЕДЫ'</pre>
<p>не эквивалентно условию</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">Match(UPPER([Ассортимент]),'ВЕЛОСИПЕДЫ')=0</pre>
<p>Решилось:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">RangeSum(0,Match(UPPER([Ассортимент]),'ВЕЛОСИПЕДЫ'))=0;</pre>
<p>Аналогично в <strong>WildMatch</strong></p>
<h3><strong>Сбросить фильтры по всем полям какой-то конкретной таблицы</strong></h3>
<p>Если Вам при расчете показателя необходимо сбросить фильтры по всем полям какой-то таблицы, то необходимо в приложении создать переменную пСброситьВыборкиПолейТаблицы:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">$(=CONCAT({1&lt;$Table = {'$1'}&gt;} DISTINCT '['&amp; $Field &amp;']=', ',') )</pre>
<p>Далее в выражении нужно записать следующую формулу (Выражение в таблице для расчета показателя &#8216;Текущий остаток&#8217;):</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sum({&lt;$(пСброситьВыборкиПолейТаблицы(Календарь))&gt;} [Текущий остаток])</pre>



<h2 class="wp-block-heading"><strong>Tips &amp; Tricks по работе с визуализацией</strong></h2>



<p><strong>Редактирование таблицы в Qlik Sense с большим количеством столбцов</strong></p>
<p>В Qlik Sense все изменения производимые в столбцах мгновенно начинают отображаться в таблице (автоматическое применение изменений). Когда столбцов много, то любой update в колонках замедляет разработку фактически в несколько раз. Чтобы этого избежать, можно в условии вычисления всей таблицы поставить ноль, внести изменения и потом условие изменения убрать. Т.е. фактически отрубить автоматический расчет таблицы вручную.</p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/qlik-sense-secret-tips-tricks/">Фишки (Tips &#038; Tricks) по Qlik Sense / QlikView. Секретные приемы Qlik</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://qliksense.ivan-shamaev.ru/qlik-sense-secret-tips-tricks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Проверка консистентности/достоверности данных. Подходы контроля правильной работы ETL-скрипта</title>
		<link>https://qliksense.ivan-shamaev.ru/check-consistency-data-control-etl-script-best-practices-qs-development/</link>
					<comments>https://qliksense.ivan-shamaev.ru/check-consistency-data-control-etl-script-best-practices-qs-development/#respond</comments>
		
		<dc:creator><![CDATA[qliksense-expert]]></dc:creator>
		<pubDate>Wed, 26 Jun 2019 21:34:04 +0000</pubDate>
				<category><![CDATA[Уровень 1]]></category>
		<guid isPermaLink="false">https://qliksense.ivan-shamaev.ru/?p=1268</guid>

					<description><![CDATA[<p>Введение todo Подходы контроля правильной работы ETL-скрипта. Best Practices Qlik Sense Development Контроль количества строк при операциях Left Join Контроль полноты данных Для контроля полноты данных следите за: Количество записей Контрольная сумма по мере Статистические таблицы Рекомендации по организации ETL-процесса и управлению скриптами Комментарии в скрипте 1. Наличие в коде<a class="moretag" href="https://qliksense.ivan-shamaev.ru/check-consistency-data-control-etl-script-best-practices-qs-development/"> Читать дальше&#8230;</a></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/check-consistency-data-control-etl-script-best-practices-qs-development/">Проверка консистентности/достоверности данных. Подходы контроля правильной работы ETL-скрипта</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Введение</h2>



<p>todo</p>



<h2 class="wp-block-heading">Подходы контроля правильной работы ETL-скрипта. Best Practices Qlik Sense Development</h2>



<h3 class="wp-block-heading">Контроль количества строк при операциях Left Join</h3>



<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="">//=============================================================
//КОНТРОЛЬ КОЛИЧЕСТВА ПРОВОДОК ДО И ПОСЛЕ JOIN
//=============================================================

Let пЗаписейВфактахДо=NoOfRows('Факты');
TRACE $(пЗаписейВфактахДо);


     //..... Здесь подряд делается несколько различного типа JOIN


Let пЗаписейВфактахПосле=NoOfRows('Факты');
TRACE $(пЗаписейВфактахПосле);
IF $(пЗаписейВфактахПосле)&lt;>$(пЗаписейВфактахДо) THEN

     //------- Генерим ошибку, чтобы остановить выполнени скрипта
     CALL FunctionNotExist111_ThrowError('Принудительная остановка скрипта. Количество строк изменилось.');
 
ENDIF</pre>



<h3 class="wp-block-heading">Контроль полноты данных</h3>



<p><strong>Для контроля полноты данных</strong> следите за:</p>
<ul>
<li>Количество записей</li>
<li>Контрольная сумма по мере</li>
<li>Статистические таблицы</li>
</ul>



<h3 class="wp-block-heading">Рекомендации по организации ETL-процесса и управлению скриптами</h3>



<h4 class="wp-block-heading">Комментарии в скрипте</h4>



<p><strong>1. Наличие в коде больших кусков закомментированного кода &#8211; это плохо</strong></p>



<p>Планируйте инфраструктуру Qlik Sense окружения таким образом, чтобы Ваши скрипты либо автоматически бекапировались и фиксировались все вносимые изменения, либо скрипты подключайте через Must_Include, а текстовые файлы контролируйте через Git Tools. </p>



<p><strong>Про разработку скриптов через файлы можно почитать тут:</strong></p>
<ul style="list-style-type: square;">
<li><a href="https://qlik.pw/teorija-razrabotki-qlik-instrumenty-i-kak-2_515/" target="_blank" rel="noopener noreferrer">https://qlik.pw/teorija-razrabotki-qlik-instrumenty-i-kak-2_515/</a></li>
<li><a href="https://qlik.pw/teorija-razrabotki-qlik-instrumenty-i-kak-2_515/" target="_blank" rel="noopener noreferrer">https://qlik.pw/teorija-razrabotki-qlik-razbiraem-struktu_529/</a></li>
<li><a href="https://qlik.pw/teorija-razrabotki-qlik-izvlekaem-skript_535/" target="_blank" rel="noopener noreferrer">https://qlik.pw/teorija-razrabotki-qlik-izvlekaem-skript_535/</a></li>
<li><a href="http://www.qlikfix.com/2019/03/12/tutorial-setting-up-version-control-for-qlik-sense/" target="_blank" rel="noopener noreferrer">http://www.qlikfix.com/2019/03/12/tutorial-setting-up-version-control-for-qlik-sense/</a></li>
</ul>



<p>Следствием такого подхода должно стать отсутствие закомментированного кода в скриптах. Где-то я видел фразу, что <strong><em>большие куски закомментированного кода оставляют разработчики, у которых мало опыта.</em></strong> В чем-то я с этой фразой согласен. Считаю, что нужно в компании вести базу знаний, в которую заносить большие куски кода для обсуждения (это может быть как Mediawiki, так и WordPress &#8211; все бесплатно и просто в обслуживании).</p>



<blockquote>
<p>За все время работы я практически никогда не смотрел закомментированный код, но очень часто обращаюсь к библиотеке скриптов с ранее созданными техническими решениями. Напрашивается вывод: для эффективной разработки и поддержки нужна библиотека знаний/скриптов, а большие закомментированные куски кода в рабочем ETL не нужны. На стадии разработки допускается комментирование скрипта, а вот в production лучше не выносить эти куски.</p>
</blockquote>



<p>А код должен быть максимально удобным для обслуживания. К сожалению к этому приходишь не сразу.</p>



<p><strong>2. Многострочный комментарий /* */ лучше заменять одиночным, т.к. это упрощает отладку</strong></p>



<p>Стремитесь не использовать многострочные комментарии, т.к. при отладке, можно перекрыть одним многострочным комментарием другой многострочный комментарий.</p>



<p><strong>3. Код должен иметь исчерпывающее количество комментариев.</strong></p>



<p>Комментарии должны носить техническое описание, также можно написать обоснование, почему было принято то или иное решение. </p>



<p>Особенно это касается таких вопросов, как расчет себестоимости, аллокации расходов и т.п. Т.к. не всегда принятые решения закрывают все проблемы (логические, технические и т.п.), иногда приходится выбирать меньшее из двух зол, оставляя маленькую щелочку, к которой в дальнейшем нужно прийти и её исправить.</p>



<h4 class="wp-block-heading">Сначала &#8211; проектирование, потом &#8211; разработка</h4>



<p>Еще есть такая штука, как технический долг (это и неправильно написанный код, &#8220;грязный&#8221; код, неправильные архитектурные решения, отсутствие четких Бизнес-Процессов разработки, отсутствие документации и т.д.), которые выливаются в конечном итоге в торможении и усложнении процесса развития аналитической системы. В какой-то момент Вам придется сесть и начать все структурировать, систематизировать, чистить промышленное окружения от излишних объектов, чистить код и т.д.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Грязный код, как источник технического долга</strong></p><cite><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></cite></blockquote>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="787" height="469" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/07/technicheskiy_dolg_architectura_qlik_sense.jpg" alt="" class="wp-image-1343" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/07/technicheskiy_dolg_architectura_qlik_sense.jpg 787w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/07/technicheskiy_dolg_architectura_qlik_sense-300x179.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/07/technicheskiy_dolg_architectura_qlik_sense-768x458.jpg 768w" sizes="(max-width: 787px) 100vw, 787px" /></figure>



<p><strong>Управление техническим долгом</strong></p>
<ul style="list-style-type: circle;">
<li>Предотвращаем (Инженерные практики; Критерии готовности DoD; Обмен знаниями)</li>
<li>Делаем видимым
<ul style="list-style-type: circle;">
<li>Технический бэклог</li>
<li>Приоритеты (Размер при непогашении; Цена досрочного погашения; Частота &#8220;платежей&#8221;; Бизнес ценность и стратегическое влияние)</li>
</ul>
</li>
<li>Обслуживаем непрерывно (правило бойскаута &#8220;Оставь место стоянки чище, чем оно было до твоего прихода&#8221;)</li>
</ul>



<h2 class="wp-block-heading">Qlik Best Practice – Scripting In Qlik Sense</h2>



<ul>
<li>Комментарии к коду должны проставляться в разделах скрипта там, где производится преобразование данных, чтобы понять, почему код был написан именно таким образом. Это не означает, что Вам нужно писать комментарий для каждой строки кода. Старайтесь кратко и конкретно описывать суть кода и шагов трансформации данных.</li>
<li>Всегда, всегда и еще раз &#8211; ВСЕГДА оборачивайте ключевые поля функцией text() при выгрузке из базы данных. Много раз сталкивался на практике, когда выгружается ключ и часть ключа декодируется как число (часть ключа изменяется и перестает соответствовать первоисточнику). Даже если Вы выгружаете GUID ключи из 1С 8.3, то все равно оборачивайте эти ключи в text().</li>
<li><strong>Скрипт разбивается на разделы.</strong> В каждом разделе производятся преобразования для 1 таблицы или 1 файла QVD. Размещать весь скрипт в 1 разделе не рекомендуется.</li>
<li>В разделе <strong>Main</strong> размещайте только переменный для конфигурации приложения, глобальные переменные. Не размещайте скрипт загрузки/трансформации в этом разделе.</li>
<li><strong>В приложении для ETL</strong> установите параметр <em><strong>CreateSearchIndex в 0</strong></em> в разделе <strong>Main</strong>. Это позволит избежать создание поискового индекса, что положительно скажется на времени перезагрузки. Поисковые индексы не требуются, если приложение не используется для анализа данных.</li>
<li>Для работы с датой создавайте отдельную таблицу &#8211; <strong>Календарь</strong>, в которой находятся разные атрибуты для работы с периодами (например, дата, недели, кварталы, месяца, года и т.п.). Календарь связывается с таблицей фактов через ключевое поле Дата (обычно это дата, но можно и другие поля сделать). Этот подход позволит пользователям фильтровать данные по любым интересующим их периодам. Также можно создать отдельные флаги для фильтрации часто используемых диапазонов дат, например, «Скользящие 12 месяцев», «Текущий год», «Предыдущий год», «Скользящие 4 недели» и т.д.</li>
<li>Избегайте <strong>WHERE</strong> условий при загрузке данных из <strong>QVD-файлов</strong>. WHERE условия сбивают <strong>оптимизированную загрузку</strong> (сюда не входит WHERE NOT EXISTS). Там, где это возможно и целесообразно, следует создавать отдельное ограниченное QVD с ограниченным набором данных или использовать другие методы фильтрации, такие как left/inner join с другой таблицей или использование WHERE EXISTS (через отдельное поле-фильтр, которое можно заполнить через LOAD * INLINE).</li>
<li>Для работы в команде рекомендуется разработать и согласовать стандарт по написанию кода: добавление комментариев, отступы, соглашения по наименованию переменных, таблиц, меппингов, функций, глобальных переменных, использование апострофов, квадратных скобок для полей и таблиц с пробелами в названии, разработайте шаблон скрипта загрузки, использование регистра Camel Case и т.д.</li>
<li>Используйте только синтаксис сценария Qlik и избегайте сторонних библиотек / операторов include, если они не обеспечивают значительного улучшения производительности приложения или времени разработки. Внешний код может вызвать эффект «черного ящика», когда разработчики не имеют четкого понимания того, что делает внешний код. Точно так же поддержание сценария вне Qlik может стать головной болью (скрипт во всех приложениях должен быть унифицирован, если где-то вставить include, то поиск по скрипту не даст результатов и разработчик может долго бродить по кругу в поисках нужного места).</li>
<li>При использовании запросов SQL рассмотрите возможность использования (WITH NOLOCK), это предотвращает ожидание запроса для при блокировке записей. Неиспользование (WITH NO LOCK) может привести к тому, что перезагрузка займет значительно больше времени или, возможно, истечет время ожидания и работа скрипта завершится с ошибкой.</li>
<li>Скрыть поля, которые не применимы для анализа, например составные поля (ключи), которые используются только для модели данных. Скрытие полей реализуется с помощью hidePrefix/hideSuffix.</li>
<li>Точно так же следует исключить поля, которые не используются для фильтрации в интеллектуальном поиске. Для этого используется оператор EXCLUDE. Преимущество исключения ненужных полей заключается в том, что оно уменьшает количество полей для поиска и исключает неприемлемые результаты из поиска. Таким образом, обеспечивая более быстрый поиск.</li>
<li>Системные переменные в разных приложениях Extract, Transform и App должны быть настроены одинаково (про переменные в разделе Main).</li>
<li>Единый принцип написания названий полей и переменных.</li>
<li>Единый принцип написания названий полей и переменных.</li>
<li>Используйте <strong>TRACE</strong> перед значительными участками кода, в том числе вначале каждого раздела скрипта &#8211; поможет в локализации проблем.</li>
<li>Удаляем лишний, не используемый код.</li>
<li>Очищаем переменные, которые нам не нужны в самом приложении <em><strong>LET Переменная = NULL().</strong></em></li>
<li>Используйте комментарии к полям, комментарии к таблицам (формируется через <em><strong>commetn fields, comment tables using map_tables</strong></em>).</li>
<li>Используйте теги к полям (<em><strong>$dimension, $measure, $hidden</strong></em>).</li>
</ul>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/check-consistency-data-control-etl-script-best-practices-qs-development/">Проверка консистентности/достоверности данных. Подходы контроля правильной работы ETL-скрипта</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://qliksense.ivan-shamaev.ru/check-consistency-data-control-etl-script-best-practices-qs-development/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Конструктор отчетов Qlik Sense. AdHoc Reporting. Гибкий отчет с измерениями и показателями</title>
		<link>https://qliksense.ivan-shamaev.ru/qlik-sense-report-designer-adhoc-flexible-report-with-dimension-and-metrics/</link>
					<comments>https://qliksense.ivan-shamaev.ru/qlik-sense-report-designer-adhoc-flexible-report-with-dimension-and-metrics/#comments</comments>
		
		<dc:creator><![CDATA[qliksense-expert]]></dc:creator>
		<pubDate>Sat, 22 Jun 2019 11:04:25 +0000</pubDate>
				<category><![CDATA[Уровень 1]]></category>
		<category><![CDATA[qlik adhoc report]]></category>
		<category><![CDATA[qlik sense]]></category>
		<category><![CDATA[qliksense]]></category>
		<category><![CDATA[конструктор отчетов]]></category>
		<guid isPermaLink="false">https://qliksense.ivan-shamaev.ru/?p=1187</guid>

					<description><![CDATA[<p>Что такое конструктор отчетов Qlik Sense (Qlik AdHoc Report)? В строгом смысле, Конструктор отчетов Qlik Sense &#8211; это отчет, который создается на лету и отображает информацию в виде таблицы, которая является результатом вопроса, который еще не был выведен в отдельный рабочий отчет. Существует ограничение на количество таких производственных отчетов и<a class="moretag" href="https://qliksense.ivan-shamaev.ru/qlik-sense-report-designer-adhoc-flexible-report-with-dimension-and-metrics/"> Читать дальше&#8230;</a></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/qlik-sense-report-designer-adhoc-flexible-report-with-dimension-and-metrics/">Конструктор отчетов Qlik Sense. AdHoc Reporting. Гибкий отчет с измерениями и показателями</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Что такое конструктор отчетов Qlik Sense (Qlik AdHoc Report)?</h2>



<p>В строгом смысле, <strong>Конструктор отчетов Qlik Sense</strong> &#8211; это отчет, который создается на лету и отображает информацию в виде таблицы, которая является результатом вопроса, который еще не был выведен в отдельный рабочий отчет. Существует ограничение на количество таких производственных отчетов и бизнес-вопросов, которые можно заранее предвидеть и разработать, чтобы пользователи могли обращаться к ним в любое время. В широком смысле, <strong>конструктор отчетов (adhoc report)</strong> &#8211; это просто способ ответить на непредвиденные вопросы.</p>



<p>Поскольку предприятия постоянно меняются, вопросы, которые люди хотят задавать относительно своих данных, постоянно меняются, поэтому любая система отчетности должна учитывать создание и запуск конструктора отчетов. Ключевым моментом является сделать этот процесс простым для обычного бизнес-пользователя, поскольку большинство специальных инструментов отчетов предназначены для использования экспертами по базам данных, что часто требует знания языка запросов, такого как SQL.</p>



<p>В этом разделе будет приведен пример создания такого отчета на базе стандартной функциональности Qlik Sense. При этом Вы сможете в конце раздела скачать рабочий пример и детально разобрать все мелочи. Также, <strong>если у Вас есть вопросы &#8211; оставляйте их в конце статьи &#8211; я постараюсь на них ответить.</strong></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Конструктор отчетов Qlik Sense (Qlik AdHoc Report)</strong> &#8211; это отчет, в котором Вы выбираете измерения (аналитики, например, товары, контрагенты, периоды) и показатели (например, продажи шт. и продажи руб.)</p><cite>Qlik Sense Expert Russia AdHoc Report</cite></blockquote>



<p>Визуально конструктор отчетов будет выглядеть следующим образом:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1365" height="639" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_report_dim_mesuare_qlik_sense_qliksense_flexible_report_custom.jpg" alt="" class="wp-image-1189" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_report_dim_mesuare_qlik_sense_qliksense_flexible_report_custom.jpg 1365w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_report_dim_mesuare_qlik_sense_qliksense_flexible_report_custom-300x140.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_report_dim_mesuare_qlik_sense_qliksense_flexible_report_custom-768x360.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_report_dim_mesuare_qlik_sense_qliksense_flexible_report_custom-1024x479.jpg 1024w" sizes="(max-width: 1365px) 100vw, 1365px" /><figcaption>Внешний вид конструктора отчетов Qlik Sense (AdHoc Report)</figcaption></figure>



<h2 class="wp-block-heading">Загрузка данных в модель (создание модели Qlik Sense для примера AdHoc Report)</h2>



<p>В качестве данных для нашей модели данных возьмем простой файл Excel с данными и напишем скрипт загрузки.</p>



<p><strong>Скачать файл Excel с данными для модели Qlik Sense:</strong></p>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2018/10/QlikSense_SampleData_Example_Data_SetAnalysis.xlsx"><strong><span style="color:#005104" class="tadv-color">QlikSense SampleData Example</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2018/10/QlikSense_SampleData_Example_Data_SetAnalysis.xlsx" class="wp-block-file__button" download><strong>Скачать</strong></a></div>



<p>Также нам понадобится специальная функция, которая была разработана мною. Грузить ее будем из текстового файла:</p>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/Func.txt"><strong><span style="color:#005104" class="tadv-color">Func</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/Func.txt" class="wp-block-file__button" download>Скачать</a></div>



<p><strong>В этом файле лежит вот такая функция:</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="">if(SubStringCount('|' &amp; Concat({$3} distinct [$1], '|') &amp; '|', '|$2|') and GetSelectedCount([$1],False(),'$3'),1,0)</pre>



<p>В рамках этой статьи я не буду рассматривать основы создания приложения Qlik Sense, описывать принципы обработки данных и освещать другие вопросы. Все это Вы найдете на моем сайте в других разделах. В этой статье я рассмотрю только аспекты создания конструктора отчетов.</p>



<p><strong>Пишем скрипт загрузки данных</strong>. У нас будет 4 раздела загрузки данных:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="258" height="236" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/script_4_razdela_zagruzki_dannih.jpg" alt="" class="wp-image-1193"/><figcaption>Qlik Sense Script AdHoc Report Data Model</figcaption></figure></div>



<p><strong>Скрипт с Main (Переменные):</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SET ThousandSep=' ';
SET DecimalSep=',';
SET MoneyThousandSep=' ';
SET MoneyDecimalSep=',';
SET MoneyFormat='# ##0,00 ₽;-# ##0,00 ₽';
SET TimeFormat='h:mm:ss';
SET DateFormat='DD.MM.YYYY';
SET TimestampFormat='DD.MM.YYYY h:mm:ss[.fff]';
SET FirstWeekDay=0;
SET BrokenWeeks=1;
SET ReferenceDay=0;
SET FirstMonthOfYear=1;
SET CollationLocale='ru-RU';
SET CreateSearchIndexOnReload=1;
SET MonthNames='янв;фев;мар;апр;май;июн;июл;авг;сен;окт;ноя;дек';
SET LongMonthNames='января;февраля;марта;апреля;мая;июня;июля;августа;сентября;октября;ноября;декабря';
SET DayNames='пн;вт;ср;чт;пт;сб;вс';
SET LongDayNames='понедельник;вторник;среда;четверг;пятница;суббота;воскресенье';
SET NumericalAbbreviation='3:тыс;6:млн;9:млрд;12:трлн;15:P;18:E;21:Z;24:Y;-3:m;-6:μ;-9:n;-12:p;-15:f;-18:a;-21:z;-24:y';</pre>



<p><strong>Факты (загрузка данных из Excel):</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="">Факты:
LOAD
    Дата,
    Подразделение,
    Контрагент,
    Менеджер,
    Номенклатура,
    Продажи,
    Себестоимость,
    [Валовая прибыль]
FROM [lib://DataSource/QlikSense_SampleData_Example_Data_SetAnalysis.xlsx]
(ooxml, embedded labels, table is Data);</pre>



<p><strong>Календарь </strong>(на основе минимальной и максимальной дат формируем календарь &#8211; массив дат с месяцами, годами, кварталами и т.п.):</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="">// Получаем из поля Дата минимальное и максимальное значения
[TEMP Максимальная Минимальная Дата]:
LOAD
     Min(FieldValue('Дата',RecNo())) 	As [Минимальная Дата],
     Max(FieldValue('Дата',RecNo())) 	As [Максимальная Дата]
AutoGenerate FieldValueCount('Дата');

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

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

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

// Формируем таблицу с календарем в моделе Qlik Sense
[Простой календарь QS]:  
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>AdHoc Конструктор отчетов</strong> &#8211; загружаем переменную из файла (формула для переменной с 3 параметрами). Плюс определяем набор измерений и показателей, которые будут доступны в нашем гибком конструкторе отчетов:</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="">//==========================================================
// Загрузка формулы CUSTOM VARIABLE
//==========================================================
AdHocFunc:
First 1
LOAD
    @1 AS ФормулаДляПеременной
FROM [lib://DataSource/Func.txt]
(txt, codepage is 28591, no labels, delimiter is '\t', msq);

LET vAdHocFunc = Peek('ФормулаДляПеременной',0,'AdHocFunc');

Drop Table AdHocFunc;

//==========================================================
// Формирование Data Island таблиц Измерений и Показателей
//==========================================================
[Измерения AdHoc]:
Load * Inline [
    Измерения
    Дата
    Дата длинный месяц
    День недели МесяцГод
    Квартал
    КварталГод
    Год Месяц в числах
    Месяц Год
    Год
    Год Неделя
    Неделя
    День
    Подразделение
    Контрагент
    Менеджер
    Номенклатура
];

[Показатели AdHoc]:
Load * Inline [
	Показатели
    Продажи
    Себестоимость
    Валовая прибыль
];</pre>



<p><strong>Загружаем данные и смотрим модель данных:</strong></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="596" height="612" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/qlik_sense_adhoc_report_data_loading.jpg" alt="" class="wp-image-1197" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/qlik_sense_adhoc_report_data_loading.jpg 596w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/qlik_sense_adhoc_report_data_loading-292x300.jpg 292w" sizes="(max-width: 596px) 100vw, 596px" /><figcaption>Загрузили данные в модель</figcaption></figure>



<p>В модели данных у нас есть <strong>таблица фактов</strong>, которая связана по общему <strong>полю Дата</strong> с <strong>таблицей Календарь</strong>. Также в модели данных есть две таблицы, которые не имеют связей с другими таблицами (их называют <strong>data island</strong> &#8211; острова данных):</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="733" height="528" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/data_model_qlik_sense_adhoc.jpg" alt="" class="wp-image-1198" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/data_model_qlik_sense_adhoc.jpg 733w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/data_model_qlik_sense_adhoc-300x216.jpg 300w" sizes="(max-width: 733px) 100vw, 733px" /><figcaption>Qlik Sense Data Model AdHoc Analysis &#8211; Факты, Календарь, Показатели и Измерения (Data Island)</figcaption></figure>



<h2 class="wp-block-heading">Создание визуальной части приложения конструктора отчетов QlikSense</h2>



<p>Переходим к основной части. Создаем лист Конструктор отчетов:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="668" height="284" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/qliksense_sheet_adhoc_report.jpg" alt="" class="wp-image-1199" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/qliksense_sheet_adhoc_report.jpg 668w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/qliksense_sheet_adhoc_report-300x128.jpg 300w" sizes="(max-width: 668px) 100vw, 668px" /><figcaption>Лист в приложении Qlik Sense Конструктор отчетов (гибкие отчеты QS)</figcaption></figure>



<p>Слева располагаем фильтры с 2 таблицами (измерения и показатели &#8211; это как раз наши Data Island). Сверху накидываем фильтры для фильтрации модели данных (основные контекстные аналитики &#8211; Год, месяц, товары, клиенты и т.п.). На остальной части располагаем обычную прямую таблицу (как сделать Pivot и как с ним работать в режиме конструктора &#8211; объясню потом).</p>



<p><strong>Схема расположения фильтров и отчета на листе QS (можете как-то по-другому расположить &#8211; это всего лишь рекомендация):</strong></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="451" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_report_qliksense_konstruktor_otchetov_gibkie_otcheti_structura-1024x451.jpg" alt="" class="wp-image-1200" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_report_qliksense_konstruktor_otchetov_gibkie_otcheti_structura-1024x451.jpg 1024w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_report_qliksense_konstruktor_otchetov_gibkie_otcheti_structura-300x132.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_report_qliksense_konstruktor_otchetov_gibkie_otcheti_structura-768x338.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_report_qliksense_konstruktor_otchetov_gibkie_otcheti_structura.jpg 1365w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>1 &#8211; фильтры измерения и показатели, не влияют на модель данных; 2 &#8211; фильтрация модели данных; 3 &#8211; отчет с данными</figcaption></figure>



<h3 class="wp-block-heading">Настройка фильтров Измерения и Показатели</h3>



<p>Для того, чтобы отчет работал, нам необходимо создать Альтернативное состояние &#8220;Конструктор&#8221;:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="306" height="334" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/alternative_states_konstructor.jpg" alt="" class="wp-image-1203" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/alternative_states_konstructor.jpg 306w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/alternative_states_konstructor-275x300.jpg 275w" sizes="(max-width: 306px) 100vw, 306px" /><figcaption>В режиме редактирования листа приложения &#8220;Основные элементы&#8221; -> &#8220;Другие состояния&#8221; -> &#8220;Создать&#8221;</figcaption></figure></div>



<p>После этого в фильтре для &#8220;измерений&#8221; и &#8220;показателей&#8221; указываем Другие состояния &#8220;Конструктор&#8221;:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1262" height="614" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/dim_mesures_konstructor_alternative_states.jpg" alt="" class="wp-image-1204" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/dim_mesures_konstructor_alternative_states.jpg 1262w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/dim_mesures_konstructor_alternative_states-300x146.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/dim_mesures_konstructor_alternative_states-768x374.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/dim_mesures_konstructor_alternative_states-1024x498.jpg 1024w" sizes="(max-width: 1262px) 100vw, 1262px" /><figcaption>Измерения и Показатели &#8211; Альтернативное состояние &#8220;Конструктор&#8221;</figcaption></figure>



<h3 class="wp-block-heading">Настройка отчета AdHoc в Qlik Sense &#8211; Прямая таблица</h3>



<p>После того, как вынесли элемент визуализации таблица на лист, создаем столбцы (выбираем измерения и создаем меры/показатели). После того, как Вы накидали все измерения и показатели из модели данных в таблицу, необходимо прописать условия отображения столбцов, отдельно для измерений и отдельно для показателей.</p>



<p><strong>Вставляем условие в поле:</strong></p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="249" height="463" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/uslovie_dim_qliksense_adhoc.jpg" alt="" class="wp-image-1205" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/uslovie_dim_qliksense_adhoc.jpg 249w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/uslovie_dim_qliksense_adhoc-161x300.jpg 161w" sizes="(max-width: 249px) 100vw, 249px" /><figcaption>Условие вычисления измерения</figcaption></figure></div>



<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="">$(vAdHocFunc(Измерения,Год,Конструктор))</pre>



<p>Для Измерений условие будет выглядеть следующим образом (должно быть ОК):</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="942" height="630" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/formula_adhoc_report_dim_qliksense.jpg" alt="" class="wp-image-1206" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/formula_adhoc_report_dim_qliksense.jpg 942w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/formula_adhoc_report_dim_qliksense-300x201.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/formula_adhoc_report_dim_qliksense-768x514.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/formula_adhoc_report_dim_qliksense-360x240.jpg 360w" sizes="(max-width: 942px) 100vw, 942px" /></figure>



<p>Аналогично для показателей:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="251" height="509" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/uslovie_measures_qliksense_adhoc.jpg" alt="" class="wp-image-1207" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/uslovie_measures_qliksense_adhoc.jpg 251w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/uslovie_measures_qliksense_adhoc-148x300.jpg 148w" sizes="(max-width: 251px) 100vw, 251px" /></figure></div>



<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="">$(vAdHocFunc(Показатели,Продажи,Конструктор))</pre>



<p>Проверяем функцию (что отображается ОК):</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="984" height="609" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/formula_adhoc_report_measures_qliksense.jpg" alt="" class="wp-image-1208" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/formula_adhoc_report_measures_qliksense.jpg 984w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/formula_adhoc_report_measures_qliksense-300x186.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/formula_adhoc_report_measures_qliksense-768x475.jpg 768w" sizes="(max-width: 984px) 100vw, 984px" /></figure>



<h2 class="wp-block-heading">Как работать с конструктором отчетов Qlik Sense?</h2>



<p>Для того, чтобы отобразить нужные столбцы &#8211; выбираем измерения, показатели. Также можно отобразить данные по конкретному году, товару, клиенту (используйте верхние фильтры):</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1355" height="671" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/using_adhoc_report_konstruktor_otchetov_qliksense.jpg" alt="" class="wp-image-1210" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/using_adhoc_report_konstruktor_otchetov_qliksense.jpg 1355w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/using_adhoc_report_konstruktor_otchetov_qliksense-300x149.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/using_adhoc_report_konstruktor_otchetov_qliksense-768x380.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/using_adhoc_report_konstruktor_otchetov_qliksense-1024x507.jpg 1024w" sizes="(max-width: 1355px) 100vw, 1355px" /><figcaption>Пример: выбрал год, менеджера, подразделение, продажи и себестоимость</figcaption></figure>



<p>Для того, чтобы в отчете сохранить нужные настройки и всякий раз не выбирать измерения, показатели, можно создать множество закладок с выборками <strong>Измерение</strong> и <strong>Показатели</strong>. Для этого сверху кликните на значок <strong>&#8220;Закладка&#8221;</strong> и нажмите кнопку создать закладку: </p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1365" height="698" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_zakladki_qliksense_konstruktor_otchetov.jpg" alt="" class="wp-image-1211" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_zakladki_qliksense_konstruktor_otchetov.jpg 1365w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_zakladki_qliksense_konstruktor_otchetov-300x153.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_zakladki_qliksense_konstruktor_otchetov-768x393.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/adhoc_zakladki_qliksense_konstruktor_otchetov-1024x524.jpg 1024w" sizes="(max-width: 1365px) 100vw, 1365px" /><figcaption>Создание закладки-отчета в Qlik Sense в приложении Конструктор Отчетов</figcaption></figure>



<p>Теперь Вы сможете быстро выбрать из списка нужный Вам отчет. При этом Ваши коллеги смогут создавать отчеты, которые необходимы им независимо от Вас. Для активации закладки нужно кликнуть на значок <strong>&#8220;Закладки&#8221;</strong> и активировать нужный отчет.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="191" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/qliksense_bookmarks_adhoc_report-1024x191.jpg" alt="" class="wp-image-1212" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/qliksense_bookmarks_adhoc_report-1024x191.jpg 1024w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/qliksense_bookmarks_adhoc_report-300x56.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/qliksense_bookmarks_adhoc_report-768x144.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/qliksense_bookmarks_adhoc_report.jpg 1348w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Как выбрать уже созданную закладку с настройками отчета</figcaption></figure>



<h3 class="wp-block-heading">Дополнительные настройки конструктора отчетов Qlik Sense</h3>



<p>В настройках таблицы переходим на вкладку дополнительно и прописываем следующее:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="499" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/nastroika_adhoc_reports_qliksense-1024x499.jpg" alt="" class="wp-image-1215" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/nastroika_adhoc_reports_qliksense-1024x499.jpg 1024w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/nastroika_adhoc_reports_qliksense-300x146.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/nastroika_adhoc_reports_qliksense-768x375.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/nastroika_adhoc_reports_qliksense.jpg 1263w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Дополнительные условия отображения</figcaption></figure>



<p><strong>1. Снимаем галочку</strong></p>



<p><strong>2. Ставим условие для расчета таблицы</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="">if(GetSelectedCount([Измерения],False(),'Конструктор') and GetSelectedCount([Показатели],False(),'Конструктор'),1,0)</pre>



<p><strong>3. Прописываем сообщение для пользователей</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="">Выберите, пожалуйста, измерения и показатели</pre>



<h2 class="wp-block-heading">Скачать приложение &#8220;Конструктор отчетов Qlik Sense&#8221; со всеми формулами</h2>



<p>Ссылка на скачивание приложения <strong>Qlik Sense</strong>. Буду благодарен, если поделитесь ссылками в социальных сетях на статью <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/AdHocAdvanced.qvf_.zip"><strong><span style="color:#005104" class="tadv-color">AdHoc Report Qlik Sense Advanced (Конструктор отчетов).qvf</span></strong></a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/AdHocAdvanced.qvf_.zip" class="wp-block-file__button" download><strong>Скачать</strong></a></div>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/qlik-sense-report-designer-adhoc-flexible-report-with-dimension-and-metrics/">Конструктор отчетов Qlik Sense. AdHoc Reporting. Гибкий отчет с измерениями и показателями</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://qliksense.ivan-shamaev.ru/qlik-sense-report-designer-adhoc-flexible-report-with-dimension-and-metrics/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Этапы проекта Qlik Sense. Краткий обзор состава работ по проекту</title>
		<link>https://qliksense.ivan-shamaev.ru/etapi-proekta-qlik-sense-sostav-rabot-vnedrenie/</link>
					<comments>https://qliksense.ivan-shamaev.ru/etapi-proekta-qlik-sense-sostav-rabot-vnedrenie/#respond</comments>
		
		<dc:creator><![CDATA[qliksense-expert]]></dc:creator>
		<pubDate>Tue, 18 Jun 2019 20:57:30 +0000</pubDate>
				<category><![CDATA[Уровень 1]]></category>
		<category><![CDATA[Qlik]]></category>
		<category><![CDATA[Qlik Project Steps]]></category>
		<category><![CDATA[qlik sense]]></category>
		<category><![CDATA[qliksense]]></category>
		<category><![CDATA[Состав работ по проекту Qlik]]></category>
		<category><![CDATA[Требования внедрение проект]]></category>
		<category><![CDATA[Этапы проекта Qlik Sense]]></category>
		<guid isPermaLink="false">https://qliksense.ivan-shamaev.ru/?p=1150</guid>

					<description><![CDATA[<p>Введение Qlik Project Steps Qlik Sense &#8211; очень гибкая платформа создания отчетности. В ней нет ограничений на количество приложений, на количество отчетов, количество данных. Вы можете создать 1 большое приложение с множеством различных отчетов, либо создать много приложений, в каждом из которых будет 1-2 сложных по структуре или логике отчета.<a class="moretag" href="https://qliksense.ivan-shamaev.ru/etapi-proekta-qlik-sense-sostav-rabot-vnedrenie/"> Читать дальше&#8230;</a></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/etapi-proekta-qlik-sense-sostav-rabot-vnedrenie/">Этапы проекта Qlik Sense. Краткий обзор состава работ по проекту</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Введение Qlik Project Steps</h2>



<p><strong>Qlik Sense</strong> &#8211; очень гибкая платформа создания отчетности. В ней нет ограничений на количество приложений, на количество отчетов, количество данных. Вы можете создать 1 большое приложение с множеством различных отчетов, либо создать много приложений, в каждом из которых будет 1-2 сложных по структуре или логике отчета. Все зависит от Ваших потребностей. Единственно что нужно учитывать &#8211; это затраты на поддержку решений.</p>



<p>Также можно создать приложение Qlik Sense, в котором в библиотеке задать нужные измерения и показатели, а пользователи будут сами создавать простые отчеты, графики, дашборды, аналитические панели.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="657" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Phases_of_Project_Management_Qlik_Sense_Ivan_Shamaev-1024x657.png" alt="" class="wp-image-1588" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Phases_of_Project_Management_Qlik_Sense_Ivan_Shamaev-1024x657.png 1024w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Phases_of_Project_Management_Qlik_Sense_Ivan_Shamaev-300x192.png 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Phases_of_Project_Management_Qlik_Sense_Ivan_Shamaev-768x493.png 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Phases_of_Project_Management_Qlik_Sense_Ivan_Shamaev.png 1278w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Этапы создания модели Qlik Sense</h2>



<p><strong><span style="color:#005104" class="tadv-color">Рассмотрим основные этапы создания модели Qlik Sense:</span></strong></p>



<p>Краткая схема создания приложения выглядит следующим образом:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="2224" height="2240" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/Qlik_Sense_OverView_ETL.png" alt="" class="wp-image-2063" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/Qlik_Sense_OverView_ETL.png 2224w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/Qlik_Sense_OverView_ETL-150x150.png 150w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/Qlik_Sense_OverView_ETL-298x300.png 298w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/Qlik_Sense_OverView_ETL-768x774.png 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/11/Qlik_Sense_OverView_ETL-1017x1024.png 1017w" sizes="(max-width: 2224px) 100vw, 2224px" /></figure>



<p><strong><span style="background-color: #ffff00;">1.</span> Для того, чтобы создать аналитическую модель (Отчет, дашборд и т.п.) изначально необходимо получить требования от заказчика (выявить основные потребности).</strong> Вы проводите встречу с заказчиком, на которой записываете основные его желания, затем, обрабатывая первичные требования Вы задаете уточняющие вопросы заказчику. <br>Очень часто заказчики опускают нужные подробности, которые могут помочь в решении задачи. Делают они это зачастую не умышленно, а потому что для них это очевидно (каждый день с этим работают).</p>
<p>Иногда заказчик может опираться на вымышленные сущности, которых нет в учетных системах, либо они ведутся там очень и очень криво. Это все может привести к тому, что на пол пути Вы поймете, что разрабатываемый отчет довести до конца не получится. И ладно, если Вы на этот отчет потратили пол дня, а если Вы уже 2 недели что-то делаете и приходите в тупик?</p>
<p>Иногда заказчик хочет получить отчет, который можно получить из учетной системы. Он уже там есть, только заказчик про это не знает.</p>
<p><strong>Еще 1 совет</strong> &#8211; всегда стремитесь избегать в своей работе с данными, которые пользователи ведут в Excel! На этапе выявления требований стремитесь заставить заказчика отказаться от excel, Хотя бы в сторону MS Access. Ну или обязать заказчика разработать жесткую форму для ведения данных с проверками.</p>
<p><strong><span style="background-color: #ffff00;">2.</span> Дальше начинается работа с источниками данных.</strong> В идеале сначала проводится краткий аудит учетных систем на предмет того, как вводятся данные.</p>
<p>На этом этапе необходимо проработать перечень источников из которых Вы будете выгружать данные. Для этих работ целесообразно привлекать системных аналитиков или разработчиков учетных систем, которые знакомы со структурой базы данных, могут помочь написать тот или иной запрос. Иначе Вам придется самостоятельно изучить в лучшем случае документацию, в худшем случае учетную систему (со всеми ее странностями и кастомизациями).</p>
<p>На этом этапе необходимо проверить наличие в справочниках нужных атрибутов (согласно требованиям), наличие фактов, смоделировать (например в Excel) расчеты, которые нужно получить в рамках аналитической модели.<br>Для снижения риска проекта по Qlik Sense рекомендую делать на предварительной стадии прототип модели на очень ограниченном объеме данных, проверить структуру модели, те или иные гипотезы. <strong>Внимание:</strong> самое важное на первом и втором этапах не уйти глубоко в детали и не выдумать из небольшого, быстрого и полезного проекта <strong>ОГРОМНОГО МОНСТРА</strong>.</p>
<p>В ходе второго этапа (при аудите учетных систем) уточняется ТЗ и разрабатывается план проекта.</p>
<p><strong><span style="background-color: #ffff00;">3.</span>Выстраиваем структуру окружения QS Проекта на Windows Сервере. </strong>Если в рамках проекта планируется использовать <strong>Qlik Sense Desktop</strong> &#8211; то требуется одна архитектура организации окружения (с привлечением QlikView Desktop), если <strong>Qlik Sense Enterprice</strong> &#8211; то другая архитектура.</p>
<p>Здесь необходимо создать каталог папок, в которых будут храниться приложения/скрипты .qvs для выгрузки данных (Extractor),&nbsp; приложения/скрипты .qvs для трансформации данных (Transform), приложения/скрипты .qvs для сборки QVD для конечных аналитических приложений.</p>
<p><strong>Возможная структура папок для хранения QVD-файлов:</strong></p>
<ul style="list-style-type: circle;">
<li><span style="background-color: #ebebeb;"><strong>DataSource</strong></span><br>
<ul style="list-style-type: square;">
<li><strong>RawQVD</strong> &#8211; по каждой системе создается отдельная папка в директории RawQVD и в нее выгружаются таблицы.</li>
<li><strong>RawFiles </strong>&#8211; В этой директории хранятся файлы, которыми управляет отдел Qlik Sense. Это могут быть файлы с настройками, временные справочники Excel, специфические меппинги.</li>
<li><strong>DataTier1 </strong>&#8211; в этой директории находятся файлы QVD, которые прошли первичную обработку в процессах обработки данных. На этом этапе в документы добавляются товары, в справочники добавляются различные атрибуты, флаги. Производится расшифровка перечислений (например, для 1С Предприятия) и т.д. Обычно в DataTier1 данные хранятся также по папкам с названиями систем учета.</li>
<li><strong>DataTier2 </strong>&#8211; Агрегированные данные на основе данных DataTier1 из нескольких источников данных. Здесь QVD файлы группируются по тематике, например, продажи, остатки и т.д.</li>
<li><strong>DataTier3 </strong>&#8211;&nbsp;</li>
</ul>
</li>
</ul>
<p><strong><span style="background-color: #ffff00;">4.</span> На четвертом этапе идет основная работа с данными.</strong> Строится процесс выгрузки данных из источников. Это может быть одна база данных или несколько баз данных. При этом в качестве источника данных может выступать облачный сервис (<strong>bitrix24, amocrm, мойсклад</strong> и т.п.).</p>
<p><strong><span style="background-color: #ffff00;">4.1.</span> Разработка Extractor на Qlik</strong><br><strong></strong></p>
<p><strong>Виды Extractor (выгрузки)</strong></p>
<ol>
<li><strong>Выгрузка полной таблицы из базы данных и сохранение в формате QVD.</strong> Подходит для источников данных с небольшим объемом данных (нужно учитывать скорость наполнения базы данных, при этом объем транзакций год из года приростает), справочников из ERP систем. Данные выгружаются 1 в 1 с минимальными преобразованиями форматов, без агрегирования и доп.расчетов.</li>
<li><strong>Инкрементальная выгрузка данных из DataBase учетных систем.</strong> Здесь не всегда так просто. <strong>Во-первых,</strong> в учетной системе должны каким-то образом помечаться измененные записи, а также должна быть дата создания сущности. Для таких целей подойдут поля <em><strong>[Дата создания]</strong></em> и <em><strong>[Дата модификации]</strong></em>. Если нет полей, по которым можно было бы установить список измененных сущностей (документов, проводок), то придется делать инкрементальную загрузку по периодам (т.е. принимать, что данные в старом периоде, например, которые создавались больше года или полугода назад не изменяются). И перегружать только скользящий период год или полгода.<br>Почитать про инкрементальную загрузку можно здесь <a href="https://ivan-shamaev.ru/practical-issues-in-qlikview-part-2/#___Incremental_Load" target="_blank" rel="noopener noreferrer">https://ivan-shamaev.ru/practical-issues-in-qlikview-part-2/#___Incremental_Load</a><br><strong>Во-вторых,</strong> придется всегда иметь возможность выгрузить систему полностью (на случай, если все данные &#8220;испортились&#8221; по каким-то чрезвычайным причинам).<br><strong>В-третьих,</strong> инкрементальная загрузка требует больших трудозатрат в поддержке и разработке (но она дает выигрыш в скорости).</li>
</ol>
<p>Очень часто обычную и инкрементальную выгрузку данных комбинируют. Самые большие данные переводят на инкремент, данные не критичные &#8211; выгружают в полном объеме.</p>
<p><strong><span style="background-color: #ffff00;">4.2.</span> </strong>Итак, после того, как Вы выгрузили данные из базы данных или облачного сервиса в QVD файлы, затем необходимо эти данные обработать (очистить, рассчитать показатели, агрегировать, обогатить дополнительными атрибутами, разметить флагами и т.д.) и положить обработанные данные в отдельный слой (например, <strong>DataTier1</strong>). Эти трансформированные данные Вы загружайте непосредственно в саму модель Qlik Sense или создаете ещё один дополнительный слой данных со сложными расчетами для конкретной модели данных.</p>
<p>Самое главное &#8211; не дублировать одинаковые данные в слоях. При повышении уровня слоя данные должны агрегироваться (группироваться). Нижние слои являются более общими, верхние слои &#8211; конкретно для каждой модели данных (или по направлениям анализа).</p>
<p><strong><span style="background-color: #ffff00;">5.</span> Проектируем слои приложения.</strong> Вот пример структуры аналитического приложения Qlik Sense:</p>
<ul>
<li>Дашборд (KPI, тренды, сигналы)</li>
<li>Слой-аналитика (графики, диаграммы, пузырьки и т.п.)</li>
<li>Слой-гибкий анализ / конструктор отчетов (Ad-hoc анализ)</li>
<li>Слой детальные данные (Таблицы и сводные таблицы, подсвечиваемые поля, статические отчеты)</li>
</ul>
<p><strong>Лайфхак для прототипирования в небольших проектах:</strong> В качестве инструмента прототипирования для визуализации можно использовать сам Qlik Sense. При этом сложные вычисления Вы не прописываете, а заменяете константами. При этом Ваш прототип будет максимально приближен к функциональности конечного продукта <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Пример прототипа на Qlik Sense:</strong></p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/prototip_qliksense_project.jpg" alt="" width="1365" height="603" class="aligncenter size-full wp-image-1317" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/prototip_qliksense_project.jpg 1365w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/prototip_qliksense_project-300x133.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/prototip_qliksense_project-768x339.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/06/prototip_qliksense_project-1024x452.jpg 1024w" sizes="(max-width: 1365px) 100vw, 1365px" /></p>
<p><strong><span style="background-color: #ffff00;">6.</span> Успешность проекта</strong> зависит от правильности организации по нескольким направлениям -данные, скрипты (написание, комментарии и т.д.), организация ETL, методологии расчетов:</p>
<ul>
<li><strong>Качество данных</strong> &#8211; качество любого аналитического приложения в первую очередь зависит от того, насколько хорошо выстроены процессы фиксирования данных в учетных системах. Если в системах много дублей, много криво заполненных справочников, есть пустые документы, не проставлены те или иные атрибуты в справочниках, то очень много усилий придется потратить на то, чтобы собрать полноценную аналитическую модель с минимальными погрешностями в расчетах.</li>
<li><strong>Качество методологий учета, расчетов</strong> &#8211; прежде чем разрабатывать сложную модель для анализа или исследования данных, необходимо (хотя бы кратко) описать методологию расчетов. Можно все расчеты спроектировать в Excel и отдать его разработчику (иногда это самый подходящий и быстрый вариант). <br><strong>Что такое методология расчета?</strong> В первую очередь под этим я понимаю описание расчета того или иного показателя. Как в процессе расчета осуществляются группировки, как обрабатываем нули, как округлять данные, как обрабатывать деление на ноль и т.п. вопросы.<br>В случае расчета <strong>суммы продаж</strong> методология расчета не требуется, а вот в случае <strong>расчета сопоставимых продаж за период (Like-For-Like)</strong> &#8211; требуется, т.к. возникает очень много вопросов. Или например как посчитать <strong>ROI по мероприятию или по акции</strong>. Самым лучшим решением &#8211; это когда бизнес-пользователь проделывает в Excel расчеты руками на одном клиенте, 1 акции (т.е. берет ограниченный объем данных и на нем строит модель, корректирует методику, делает проверку, утверждает ее со своим руководством или владельцем бизнеса и только потом отдает на автоматизацию расчетов). Но этот идеальный случай встречается редко и зависит от вменяемости бизнес-пользователя.</li>
<li><strong>Качество окружения QS (скрипты, изменения, аудит изменений, анализ загрузки ресурсов и т.д.)</strong> &#8211; от того, насколько правильно структурировано пространство QS, зависят накладные расходы на поддержку решения Qlik Sense. Очень важно оставлять комментарии в скриптах, создать инструмент для отслеживания процессов загрузки данных. Если сразу придерживаться строгих правил порядка, то потом при быстром масштабировании Вам будет легче управлять всей инфраструктурой.</li>
</ul>



<h2 class="wp-block-heading">Qlik Deployment Framework</h2>



<div class="wp-block-file"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/07/Qlik_Deployment_Framework_QlikView_Development_Guide.pdf">Qlik Deployment Framework QlikView Development Guide </a><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/07/Qlik_Deployment_Framework_QlikView_Development_Guide.pdf" class="wp-block-file__button" download>Скачать</a></div>



<h2 class="wp-block-heading">Размышления консультанта &#8220;ВСЛУХ&#8221;</h2>



<p><em>Возможно кому-то мои рассуждения покажутся &#8220;водой&#8221;, возможно кто-то сделает заметку, кто-то пройдет мимо, кто-то добавит в комментариях свои мысли. Главное &#8211; это просто мысли, мои заметки, которыми я хочу поделиться.</em></p>
<h3>Об отчетах</h3>
<p>В компании может быть все плохо, но отчеты об этом могут не говорить. Истинные проблемы начинают всплывать, когда компания начинает генерировать убытки.</p>
<p>В компании может быть 1-3 отчета и из них может быть многое понятно о текущих делах. А может быть десятки отчетов, из которых ничего не понятно (куда смотреть, с чем нужно работать, куда прикладывать усилия). Для работы с отчетами в таких случаях требуется штат аналитиков, которые будут сидеть и обрабатывать автоматически рассылаемые отчеты.</p>
<p>Направление аналитики должно спускаться сверху, причем именно верхнеуровневые показатели должны показываться руководству с графическими представлениями. Руководитель должен открыть дашборд или отчет и дать указание подчиненным руководителям или линейным сотрудникам, что необходимо улучшить в компании. Или какой фронт работы выполнить.</p>
<h3>Качество приложения Qlik Sense</h3>
<p><strong>Качество приложения Qlik Sense</strong> зависит напрямую от качества ваших учетных данных. Очень хорошие данные (структурированные, без мусора, без дублирования, без двоякости и т.п.) = <strong>ОТЛИЧНОЕ ПРИЛОЖЕНИЕ QLIK SENSE.</strong></p>
<p>Очень плохое качество данных (пропуски, дублирование, кривая инфа, несоответствия, пустоты, кривые справочники, кривые документы, 100500 способов представления одних и тех же отчетов, но с разными значениями) &#8211; <strong>ужасная аналитика, ужасный ETL, ужасное приложение, ужасный ROI от бизнес-аналитики?</strong></p>
<h3>Куча рассылаемых отчетов Excel &#8211; интерес руководителей, но не владельцев компании</h3>
<p><span style="font-size: inherit;">Согласитесь, что подделать сложный / запутанный отчет гораздо проще, чем манипулировать данными аналитических панелей. Любая прозрачность данных &#8220;больного бизнеса&#8221; &#8211; это риск для среднего и высшего руководства компании. Они понимают, что владельцы сразу же придут к ним, если у владельца будет под рукой удобный аналитический инструмент. </span></p>
<p>Исходя из этих предпосылок, можно предположить, что руководство (не владельцы) никогда не будут заинтересованы в разработке прозрачных дашбордов, с понятными и простыми сигналами &#8220;что не так&#8221; и &#8220;что нужно делать&#8221;. Они будут заинтересованы только в том, чтобы максимально неудобно представить данные, из которых сложно сделать &#8220;нужные выводы&#8221;.</p>
<p>Скорей всего это связано с тем, что люди, которые ставят ТЗ на разработку отчетов не имеют премий от прибыли компании, или от снижения издержек. Самая главная их задача &#8211; на совещаниях с умными лицами презентовать очередную порцию &#8220;умных отчетов&#8221;, чтобы их ценили за объемы аналитической работы.</p>
<p>Запомните &#8211; владельцам бизнеса нужен сигнал (светофор), чтобы понять, нужно ли кого-то пнуть, чтобы красный свет загорелся хотя бы на желтый, а в лучшем случае на зеленый.</p>
<p>Построить такой отчет очень сложно, т.к. нужно думать, гораздо проще придумать мудренную Excel с кучей столбцов и строк, которые зачастую между собой никак не коррелируют.</p>
<h3>Создавайте базу знаний о бизнес-процессах в компании, делайте внутреннюю wiki</h3>
<p>Очень часто и в разных компаниях видел ТЗ, в которых присутствует огромная куча различной терминологии, сокращений, формул, которые никак не расшифровываются и не поясняются развернуто.</p>
<p>Плюс очень часто в компании тот или иной бизнес-процесс может быть запутанным и нигде не описанным. Начиная разработку специалист шерстит всевозможные документы, письма, опрашивает коллег по тому или иному термину.</p>
<p>Приходит новый специалист и &#8220;исследовательская&#8221; работа повторяется снова.</p>
<p>Выход &#8211; создать внутреннюю базу знаний о бизнес-процессах в компании. Не называя имен компаний, я назову позитивные фишки, с которыми я встречался при устройстве в ту или иную компанию (ну или мои предположения, как это может выглядеть иначе в других компаниях):</p>
<ol>
<li>При выходе на работу Вам приходит ссылка на обзорный курс про особенности бизнеса (компании), особенности рынка. Описываются основные бизнес-процессы (укрупненным планом). Описываются основные бизнес-термины. После прохождения курса можно пройти более углубленный курс, например, по расчетам тех или иных показателей бизнеса.</li>
<li>Возможность поработать 1 день на передовой бизнеса (фронт-офис) или посетить демо фронт-офис, в котором &#8220;как в жизни&#8221; можно понять что и как происходит.</li>
<li>При выходе на работу в первый день Вам приходит ссылка на страницу в wiki, где в неформальном виде описана вся движуха в компании, отделы и т.п. Неформальный стиль изложения &#8211; легкость восприятия информации.</li>
<li>Схемы, блок-схемы, потоки данных &#8211; иными словами наглядность информации, что происходит в компании.</li>
<li>Наличии системы управления требованиями, культура написания ТЗ. Когда Вам приходится искать то или иное требование в почте &#8211; это самое плохое, что только можно представить. А еще хуже, когда часть находится в почте, часть в мессенджере, часть в системе управления проектами и т.д.</li>
<li>База знаний запросов к системам. Один раз написали запрос &#8211; сохранили в базу с осмысленным заголовком и описанием, дальше другой сотрудник может этим запросом воспользоваться (если у него есть доступ к БД).</li>
</ol>
<h3><span>Здравый смысл</span></h3>
<p>Оценивайте полученные результаты, показатели, отчеты на здравый смысл. Если Вы получили ROI = 500%, то очень вероятно стоит перепроверить (и желательно 2 раза) методику расчета показателя. Если показатель дает очень расплывчатый результат, то стоит ли этот показатель считать? Это как по популяции кроликов в южном округе оценивать спрос на мясо кроликов по стране. Проще потратить силы на отчет P&amp;L, и понять откуда приходят деньги и куда уходят, чем заниматься пространственной аналитикой.</p>
<p><strong>Методология расчета и реальная жизнь</strong></p>
<p>Просите методолога/заказчика на основе его алгоритма сделать предварительный расчет в Excel. Так Вы сможете оценить жизнеспособность методологии расчета.<br />Разработка отчета в Qlik = 60 часов (например), предварительный расчет в Excel = 4-8 часов (со сбором данных)</p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/etapi-proekta-qlik-sense-sostav-rabot-vnedrenie/">Этапы проекта Qlik Sense. Краткий обзор состава работ по проекту</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://qliksense.ivan-shamaev.ru/etapi-proekta-qlik-sense-sostav-rabot-vnedrenie/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
