- PVSM.RU - https://www.pvsm.ru -

QlikView. Создадим свое первое приложение?…

QlikView. Создадим свое первое приложение?…
В этой статье я хочу описать основы использования продукта QlikView [1] от компании QlikTech, предназначенный для бизнес-аналитики (Business intelligence). Осторожно, много спойлеров.

Немного предисловия

QlikTech [2] — компания-разработчик программного обеспечения для систем Business Intelligence со штаб-квартирой в Радноре. Основана в 1993 году в Швеции.
QlikView — BI-платформа [3] с ассоциативным поиском в оперативной памяти со встроенными средствами ETL [4].

Сокращения, определения, информация

  • QV — QlikView
  • Принято называть не «отчет», а «приложение» в QV
  • В одном приложении может быть сколько угодно отчетов
  • Под отчетами определяются — таблицы, графики, списки, диаграммы

Собственно, зачем мы здесь? — Для того, чтобы создать ваше первое приложение для простого анализа продаж

Что нам для этого потребуется?
1. QlikView.
2. Данные, их я создал рэндомно, используя QV.
3. 25-30 минут времени.

Ссылки

1. QlikView Personal Edition (ver. 11.20 SR5 ) x86 [5] x64 [6] Win8andUp [7] — Бесплатная версия, доступная для всех, без ограничений использования под одним пользователем на одном компьютере
2. Архив данных [8]на Mega

Загрузка данных

Будем считать, что вы уже установили QV и создали новый документ.
Заходим в редактор скриптов (CTRL + E) и видим, что у нас уже созданы по умолчанию — переменные окружения:

Окно редактора скриптов

QlikView. Создадим свое первое приложение?…

Всё что нам сегодня понадобится для работы — это кнопка — QlikView. Создадим свое первое приложение?…, потому что мы будем загружать данные из Excel-файлов.

Давайте для начала создадим календарь, наберите код:
(полный скрипт будет под катом в конце статьи)

Календарь

QlikView. Создадим свое первое приложение?…

Не забывайте сохранять приложение каждый раз перед загрузкой данных, иначе придется набирать весь код заново.
Включить авто сохранение можно в настройках.

Теперь давайте выполним загрузку данных нажав CTRL + R

ход выполнения

QlikView. Создадим свое первое приложение?…

Закрываем его и перед нами появляется окно свойств листа,

свойства листа

QlikView. Создадим свое первое приложение?…

Нам предлагают изменить состав отображаемых данных на листе исходя из того, что у нас есть, так давайте воспользуемся.
Добавим Год, Месяц

как должно быть

QlikView. Создадим свое первое приложение?…

и нажмем Ок, расположим наши «листбоксы» как нам угодно:

двигаем объекты

QlikView. Создадим свое первое приложение?…

На этом всё, заходим в редактор скриптов CTRL + E и нажимаем на кнопку — Table Files, выбираем файл Номенклатура и жмем открыть:

справочник

QlikView. Создадим свое первое приложение?…

никакие свойства мы менять не будем, а просто нажмем Finish (или Готово)

свойства табличного документа

QlikView. Создадим свое первое приложение?…

при этом у нас автоматически создался код по загрузке данных из документа:

код номенклатуры

QlikView. Создадим свое первое приложение?…

Всё что нам нужно, это заменить первую строку Directory; на Номенклатура
и добавить строчку RowNo() as ID, я её специально сделал тут, потому как очень часто при загрузке данных у нас нет уникальных идентификаторов по которым мы можем связывать данные, и приходится создавать их вручную, и даже иногда используя для этого 5-6 полей, но об этом в другой раз.

как должно быть с номенклатурой

QlikView. Создадим свое первое приложение?…

Продолжаем, добавим в скрипт загрузку данных о продажах аналогично Номенклатуре

как должно быть с продажами

QlikView. Создадим свое первое приложение?…

На этом работу со скриптом мы закончили, сохраните приложение CTRL + S, и загрузите CTRL + R, обратите внимание насколько быстро у вас загрузилось 50тыс. строк из Excel-файла.

ход выполнения

QlikView. Создадим свое первое приложение?…

Дизайн

Давайте полученный результат оставим без изменений

данные листа

QlikView. Создадим свое первое приложение?…

и создадим сводную таблицу QlikView. Создадим свое первое приложение?…

таблица полностью

QlikView. Создадим свое первое приложение?…
Выбрали тип таблицы — сводная, жмем далее, добавим измерения
QlikView. Создадим свое первое приложение?…
жмем далее, добавим выражения:
QlikView. Создадим свое первое приложение?…
QlikView. Создадим свое первое приложение?…

Немного выправим таблицу и получим нечто похожее на это

что-то такое

что получили:
QlikView. Создадим свое первое приложение?…
проверили
QlikView. Создадим свое первое приложение?…
заходим в свойства:
QlikView. Создадим свое первое приложение?…
для первых 4-ех измерений поставим по отдельности Show Partial Sums на вкладке Presentation (Презентация)
QlikView. Создадим свое первое приложение?…

Продолжим преобразования, т.к. сейчас ничего не понятно.

картинки

QlikView. Создадим свое первое приложение?…
да и просто уберем измерения года, месяца и числа, а оставим только Родитель и НоменклатураНаименование
QlikView. Создадим свое первое приложение?…
QlikView. Создадим свое первое приложение?…

Стало более-менее наглядно выглядеть, отлично.
Теперь можете поиграться с годами и месяцами, для этого достаточно выбрать нужное вам, и обратите при этом внимание на скорость пересчета данных в таблице

выборки

Кнопка очистки выборок: QlikView. Создадим свое первое приложение?…
QlikView. Создадим свое первое приложение?…

Конец.

Заключение

Собственно, мне хотелось показать сообществу принцип работы и построения приложений в QV на пальцах.
Я сам сейчас занимаюсь более серьезными проектами на QV в частности построением отчетности на 500 млн. строк данных.

Если хабраобществу будет интересно продолжение, то я его с удовольствием предоставлю.

Welcome всех в каменты.

полный код приложения

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 MonthNames='янв; фев; мар; апр; май; июн; июл; авг; сен; окт; ноя; дек';
SET DayNames='Пн; Вт; Ср; Чт; Пт; Сб; Вс';

// пустая таблица календаря
Календарь: /* Название нашей таблицы*/
load * Inline /* Загружаем данные построчно при этом данные мы укажем явно */
[Дата, Месяц, Год, День]; /* Название полей данных которые будут в нашей таблице */

// создаем календарь от текущей даты минус 800 дней
Let ТекущаяДата = Num(Today(1)); /* Определяем переменную ТекущаяДата —
как сегодняшнее число в цифровом представлении*/
Let Период = 800; /* я взял произвольное число, вы можете использовать любое */

For i = 0 to $(Период) /* создаем цикл */

Concatenate(Календарь) /* Команда Concatenate обозначает что к уже созданной таблице
нам необходимо добавить новые данные */
Load /* Команда Load используется практически везде, обозначает загрузку данных в таблицу */
Date ($(ТекущаяДата) — $(i)) as Дата, /* Рассчитываем Дату */
Month (Date($(ТекущаяДата) — $(i))) as Месяц, /* Рассчитываем Месяц */
Year (Date($(ТекущаяДата) — $(i))) as Год, /* Рассчитываем Год */
Day (Date($(ТекущаяДата) — $(i))) as День /* Рассчитываем Число */
AutoGenerate 1 /* Autogenerate 1 — озачает что нам нужно записать одну строку в таблицу */
;

Next i; /* продолжаем цикл */

Номенклатура:
LOAD НаименованиеТовара,
Родитель,
RowNo() as ID
FROM
номенклатура.xlsx
(ooxml, embedded labels, table is Лист1);

Движения:
LOAD ID,
Дата,
Количество,
Сумма
FROM
Движения.csv
(txt, utf8, embedded labels, delimiter is ',', msq);

Автор: uinx

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/news/58621

Ссылки в тексте:

[1] QlikView: http://qlik.com

[2] QlikTech: http://ru.wikipedia.org/wiki/QlikView

[3] BI-платформа: http://ru.wikipedia.org/wiki/Business_Intelligence

[4] ETL: http://ru.wikipedia.org/wiki/ETL

[5] x86: https://d1cf4w4kkla6tb.cloudfront.net/qlikview/11.20/12235/_MSI/QlikViewDesktop_x86Setup.exe

[6] x64: https://d1cf4w4kkla6tb.cloudfront.net/qlikview/11.20/12235/_MSI/QlikViewDesktop_x64Setup.exe

[7] Win8andUp: https://d1cf4w4kkla6tb.cloudfront.net/qlikview/11.20/12235/_MSI/QlikViewDesktop_Win8andUp.exe

[8] Архив данных : https://mega.co.nz/#!c5dAiZDD!DatnLA2PqbB8sl-cfQ95N21ge5Zvq4iyAT2dyB4cetU

[9] Источник: http://habrahabr.ru/post/218737/