[Из песочницы] QlikView. Создадим свое первое приложение?…

4ae729166f8e0c01f38e2d5e4ea3992f.pngВ этой статье я хочу описать основы использования продукта QlikView от компании QlikTech, предназначенный для бизнес-аналитики (Business intelligence). Осторожно, много спойлеров.Немного предисловия QlikTech — компания-разработчик программного обеспечения для систем Business Intelligence со штаб-квартирой в Радноре. Основана в 1993 году в Швеции.QlikView — BI-платформа с ассоциативным поиском в оперативной памяти со встроенными средствами ETL.Сокращения, определения, информация QV — QlikView Принято называть не «отчет», а «приложение» в QV В одном приложении может быть сколько угодно отчетов Под отчетами определяются — таблицы, графики, списки, диаграммы Собственно, зачем мы здесь? — Для того, чтобы создать ваше первое приложение для простого анализа продаж Что нам для этого потребуется?1. QlikView.2. Данные, их я создал рэндомно, используя QV. 3. 25–30 минут времени.Ссылки 1. QlikView Personal Edition (ver. 11.20 SR5) x86×64 Win8andUp — Бесплатная версия, доступная для всех, без ограничений использования под одним пользователем на одном компьютере2. Архив данных на MegaЗагрузка данных Будем считать, что вы уже установили QV и создали новый документ.Заходим в редактор скриптов (CTRL + E) и видим, что у нас уже созданы по умолчанию — переменные окружения: Окно редактора скриптов 8806e191515010aa57be183bc260f6d9.jpg Всё что нам сегодня понадобится для работы — это кнопка — 767ffd92ae6219ef8aa8b5efe59abc41.jpg, потому что мы будем загружать данные из Excel-файлов.Давайте для начала создадим календарь, наберите код:(полный скрипт будет под катом в конце статьи)

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

Теперь давайте выполним загрузку данных нажав CTRL + Rход выполнения fb89fae5f63c2c47bd96f46ca22a00c0.jpg Закрываем его и перед нами появляется окно свойств листа, свойства листа fc4fd5d724d0dbafc74919cbf01dc1a7.jpg Нам предлагают изменить состав отображаемых данных на листе исходя из того, что у нас есть, так давайте воспользуемся.Добавим Год, Месяцкак должно быть 70959ae3f666a7473a8c6e86ab5a3ff8.jpg и нажмем Ок, расположим наши «листбоксы» как нам угодно: двигаем объекты dee30954261a06838cd15f220aed86a9.jpg На этом всё, заходим в редактор скриптов CTRL + E и нажимаем на кнопку — Table Files, выбираем файл Номенклатура и жмем открыть: справочник f4b14951b7259b769ff2682e9eeea9a4.jpg никакие свойства мы менять не будем, а просто нажмем Finish (или Готово)свойства табличного документа 451487cbc5be411e799f82fe51ea5f7e.jpg при этом у нас автоматически создался код по загрузке данных из документа: код номенклатуры a0cec83f50bac46ea231d8f3c1068d3a.jpg Всё что нам нужно, это заменить первую строку Directory; на Номенклатураи добавить строчку RowNo () as ID, я её специально сделал тут, потому как очень часто при загрузке данных у нас нет уникальных идентификаторов по которым мы можем связывать данные, и приходится создавать их вручную, и даже иногда используя для этого 5–6 полей, но об этом в другой раз.как должно быть с номенклатурой 3552651c1d17b47b735a13cdb8d1121f.jpg Продолжаем, добавим в скрипт загрузку данных о продажах аналогично Номенклатурекак должно быть с продажами 2d421a957a1cee8885429b4f04b9d713.jpg На этом работу со скриптом мы закончили, сохраните приложение CTRL + S, и загрузите CTRL + R, обратите внимание насколько быстро у вас загрузилось 50 тыс. строк из Excel-файла.ход выполнения f50e38773a299d9beebf41cd87db55e0.jpg Дизайн Давайте полученный результат оставим без изменений

данные листа dce7809f27ae26ba6ba292f135529beb.jpg и создадим сводную таблицу 8797742e457f6246f84b0da310090ec4.jpgтаблица полностью f384d1aa10513753de9dafcf7efee246.jpgВыбрали тип таблицы — сводная, жмем далее, добавим измеренияe6ac3dfd68d63c6ba3c5c8be3ed2ba85.jpgжмем далее, добавим выражения: 43eeb523b1b5a0709581292a48fe81be.jpge6c270bae02d68c63986ee5adc26270a.jpg Немного выправим таблицу и получим нечто похожее на это

что-то такое что получили: 00bf42ed0a82d378518a672cc290ab5a.jpgпроверили7d598beb68972abc3f1bea82fea5d9de.jpgзаходим в свойства: 00c1920da0abb0a95e7d69f4f0a3ac2f.jpgдля первых 4-ех измерений поставим по отдельности Show Partial Sums на вкладке Presentation (Презентация)490b74d787d8c6ee63170047408fa9e6.jpg Продолжим преобразования, т.к. сейчас ничего не понятно.

картинки d6fd871f1f8d3a4641d3283f9fc38f78.jpgда и просто уберем измерения года, месяца и числа, а оставим только Родитель и НоменклатураНаименование808b919d12389c4258b3461bcbca2563.jpg583fd58b10847e6162ac36e368c75919.jpg Стало более-менее наглядно выглядеть, отлично.Теперь можете поиграться с годами и месяцами, для этого достаточно выбрать нужное вам, и обратите при этом внимание на скорость пересчета данных в таблицевыборки Кнопка очистки выборок: 9149dd4153161e414951c6a79e654f8d.jpg03e3c3b7da8e5b0b8605c986e926e5b1.jpg Конец.

Заключение Собственно, мне хотелось показать сообществу принцип работы и построения приложений в 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 IDFROMноменклатура.xlsx (ooxml, embedded labels, table is Лист1);

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

© Habrahabr.ru