NPrinting: интересные практические кейсы. Часть 1

Коллеги, добрый день!

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

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

Краткая предыстория

Для начала упомяну о том, что это за продукт, и как он эволюционировал.

NPrinting появился на свет в 2008 году, его разработала американо-итальянская компания Vizubi. Продукт являл собой надстройку над QlikView, и был призван решать следующие задачи:

  • создавать шаблонные отчеты в форматах Office ( Word/ Excel/ PowerPoint) с данными и объектами из QlikView;
  • персонифицировать отчеты для различных адресатов;
  • централизованно и автоматически распространять отчеты по различным каналам (настраиваемый e-mail, сетевые папки, публикация на портал и т. п.).

Ролевая модель NPrinting — подсистема централизованной подготовки регламентированной отчетности на основе уже имеющихся наработок на QlikView.

Основные возможности:

  • NPrinting позволяет создавать шаблоны отчетов в форматах Word/Excel/PowerPoint/HTML и импортировать в них данные и элементы из приложений QlikView (таблицы, диаграммы, списки) простым drag & drop.
  • К шаблонам прикрепляются регламентные задания, указывающие, какие данные нужно загружать в копию отчета, и для каких адресатов ее распространять.
  • Все настройки выполняются через интуитивный графический интерфейс, без необходимости написания кода.

Продукт развивался, обрастал клиентами и поклонниками, и стал настолько популярен, что QlikTech решил приобрести компанию-разработчика и включить его в свой портфель. Начиная с января 2015, NPrinting вошел в состав продуктов под торговой маркой Qlik, его нынешнее название — QlikView® NPrinting.

Кейс: Структурированный XLS-отчет для почтовой рассылки по компании

В этом кейсе, заказчику требовалось автоматизировать его «стандартный» ежедневный отчет по продажам, структура и вид которого «исторически сложились и изменению не подлежат». При решении этой задачи потребовалось придумать различные хитрости, в том числе связанные с нетипичными иерархиями (например, вхождение некоторых элементов в две иерархии одновременно, при том, что обе нужно показать в одной таблице), а в части NPrinting — найти способ заставить его применять в итоговом отчете Структуру/Группировку (пресловутые «плюсики»), а также закрепление областей и некоторые другие «красивости»:

XLS-отчет для почтовой рассылки

После экспериментов, оказалось, что самый простой способ это сделать — написать VBA-макрос, который будет запускаться при открытии пользователем XLS-файла и выполнять все необходимые действия по созданию структуры и другим преобразованиям на листе.

Код макроса можно как написать вручную, так и автоматически сгенерировать с помощью функции «Запись макроса». Триггер запуска нужно установить в Workbook-Open:

Workbook-Open

 XLS-книгу с макросом нужно сохранить в формате *.XLSM и в настройках отчета в NPrinting выставить такую опцию:

Workbook-Open

А также, в теле письма рекомендуется проинформировать пользователей, что, возможно, Excel выдаст предупреждение о безопасности. Я написал такой текст и добавил его к тексту письма от робота рассылки NPrinting:

«Примечание: отчет содержит макрос, который выполняет группировки строк для улучшения читабельности. По умолчанию он должен запуститься при открытии файла. Если этого не происходит, возможно, Excel заблокировал макросы из соображений безопасности — в таком случае обычно выводится предупреждающее сообщение. Включить выполнение макросов можно следующим образом: Меню Файл — Параметры — Центр управления безопасностью — Параметры центра — Параметры макросов — Включить все макросы.»

Кейс: email уведомления от QlikView Server/Publisher с компактным отчетом в теле письма

Как известно, одной из «фишек» QlikView Desktop/QlikView Server/Publisher является возможность рассылки e-mail уведомлений о тех или иных событиях. Например:

  • уведомления об ошибках при выполнении тасков QV Server/Publisher можно настроить в Management Console (System-Setup-Distribution Services-Alert E-mail),
  • уведомления с настраиваемым сообщением в формате plain text можно повесить на открытие/обновление конкретного приложения QVW (QV Desktop: Tools — Alerts — Mail Recepients )

Но что делать, если мне, как администратору, требуется регулярно получать сообщение с отчетом внутри сразу после выполнения определенного таска в Publisher?

И здесь на выручку может прийти NPrinting.

Сначала необходимо подготовить приложение QVW с собственно отчетом, который требуется получить (под отчетом здесь понимается объект визуализации QV). В моем случае приложение генерирует отчет о степени синхронности данных между двумя источниками данных, вот наглядный скриншот:

QVW с отчетом

После того, как приложение QVW создано, нужно создать новый проект NPrinting со следующими элементами:

  1. Sources: QVW-приложение рассмотренное выше;
  2. Recipients: e-mail адреса получателей;
  3. Reports: HTML Reports — достаточно вынести в шаблон нужный чарт из QVW-приложения;
  4. Tasks: создать один таск на Reload указанного QVW, второй таск — Report Task с HTML-отчетом из предыдущего пункта и нужным Message (в теме письма можно использовать переменные, поэтому я вставил туда ту, которая возвращает слово «РАССИНХРОНИЗАЦИЯ» капслоком в случае превышения порога;
  5. Shedules: создать Job с тасками из предыдущего пункта (QVW Reload первым).

Далее, нужно создать новый таск QlikView Server/Publisher, который будет стартовать по заданному триггеру (завершение другого таска, как в моем случае), запускать NPrinting из командной строки с параметрами на открытие NSQ-файла проекта и сразу же запуск джоба из него. Делается это с помощью Supporting Task со следующими параметрами:

supporting tasks NPrinting

В поле Command Line Statement нужно прописать такую строку:

«C:\Program Files (x86)\NPrinting\Client\NPrinting.exe» /NPrintingFile «c:\NPrinting\Projects\Синхронность между ZIC_V02 и ZRT_V01.nsq» /Job «E-mail alert: Синхронность между ZIC_V02 и ZRT_V01»

Теперь при активации соответствующего триггера, QVS будет сам запускать NPrinting (понятно, что для этого он должен быть установлен на той же машине), тот будет обновлять QVW-приложение, формировать HTML-отчет и отсылать письмо с ним во вложении.

Примеры рассылаемых писем с уведомлениями:

Все хорошо —

HTML-отчет

Все плохо —

HTML-отчет

На этом на сегодня все. В следующий раз расскажу о более сложно кейсе, где NPrinting работает в связке с QlikView, Excel и PowerPoint для автоматизации процесса бюджетирования.

P.s. Несколько полезных ссылок для тех, кто планирует поизучать продукт подробнее:

  • http://www.qlik.com/products/qlikview/NPrinting — страница продукта на официальном сайте Qlik;
  • https://community.qlik.com/docs/DOC-14618 — копия раздела Knowledge base с сайта Vizubi, теперь располагающаяся в Qlik Community (и к большому сожалению, удаленная из оригинального источника — превосходная структуризация и поиск не были перенесены на движок коммюнити, видимо, из-за его технологических ограничений).

P.p.s. Также дополнительные обучающие материалы, которые помогут настроить первые отчеты в NPrinting:

1. Презентация по функционалу NPrinting и основным настройкам:

2. Видео о том, как настроить отчеты в NPrinting

3. Видео о более продвинутом функционале NPrinting – Pixel Perfect и MultiDoc

Комментарии

  • Январь 21, 2016 at 18:16
    Permalink

    Спасибо, Отличная инструкция по использованию nPrinting! Хотел уточнить: для чего нужна успешная рассылка? Не стоит ли добавить логику, чтобы письмо приходило только в случаи рассинхронизации, чтобы уменьшить число писем в ящике?

    Ответить
    • Январь 22, 2016 at 10:00
      Permalink

      Александр, успешная рассылка нужна для того, чтобы встав утром дома и взглянув на экран гаджета, видеть на нем утренние уведомления, что таски отработали штатно и нигде ничего не зависло. Если их в обычное время не появилось — тут же дома включаю VPN и проверяю в чем причина отставания экстракций от графика.

      Ответить
  • Январь 22, 2016 at 09:15
    Permalink

    Василий, спасибо, за интересный опыт! Жалко, что не удалось убедить клиента сделать первый отчет в своднике. Кстати о сводных таблицах, пробовали ли Вы использовать слайсеры при разработке отчетов в Nprinting? У меня с этим проблема- слайсеры вставить можно, но при открытии отчета выскакивают ошибка. При этом есть ощущение, что ее можно как-то обойти.

    Ответить
  • Январь 22, 2016 at 09:56
    Permalink

    Тамара, по поводу слайсеров в Excel для отчетов nprinting — нет, не пробовал, но по идее должно работать. Видится так — вы создаете excel шаблон с двумя листами, на одном будет размещаться плоская таблица из qlikview, на другом — сводная таблица excel, ссылающаяся на таблицу на первом листе. В свойствах сводной таблицы выставьте опцию «обновлять при открытии книги». Добавьте к ней Слайсеры. В настройках шаблона внутри nprinting, в свойствах объекта «плоская таблица» поставьте опцию, запрещающую смещение ячеек (не помню названия, чейчас посмотреть негде). Это нужно для того, чтобы ссылка в свойствах сводной таблицы excel не съезжала.
    Если проблема не исчезнет — свяжитесь со мной личным сообщением здесь или через linkedIn.

    Ответить
    • Январь 22, 2016 at 10:06
      Permalink

      Василий,

      Спасибо, это все учтено и работает прекрасно. Для счастья не хватает только слайсеров. )) Если по случаю будете с этм разбираться, черкните, плиз где-нибудь, была бы оч признательна.

      Ответить
      • Январь 22, 2016 at 13:39
        Permalink

        Тамара, попробовал сделать кейс со слайсерами — действительно, как вы и сказали, при Preview вылезает неинформативная ошибка. Обойти в лоб с помощью настроек слайсера — не получилось. Но нашел обходной путь…. VBA-Макрос ))) Вот такой простейший код мне Excel сгенерил, работает ОК:
        ActiveWorkbook.SlicerCaches.Add2(ActiveSheet.PivotTables(«PivotTable1»), _
        «Dim01»).Slicers.Add ActiveSheet, , «Dim01», «Dim01», 211.5, 425.25, 144, 187.5
        ActiveSheet.Shapes.Range(Array(«Dim01»)).Select

        P.s. на коммьюнити тоже сталкивались с такой проблемой, https://community.qlik.com/thread/193200 — отписал в треде вариант решения.

        Ответить
          • Январь 25, 2016 at 10:34
            Permalink

            Триггер на запуск макроса срабатывает в момент открытия книги Excel, при соответствующих настройках безопасности (может быть выдано предупреждение и запрос). См. статью выше.

          • Январь 25, 2016 at 11:00
            Permalink

            Василий, спасибо!

            А почему ошибка вылетает не разбирались? нельзя ее как-то по другому предупредить?

            Макросы только от полной безысходности использую. ))

          • Январь 25, 2016 at 12:15
            Permalink

            Тамара, чтобы разобраться в том, почему она вылетает, нужно быть разработчиком продукта )) Я только могу констатировать условия, при которых это проявляется.
            Можете написать в поддержку Клика, может быть это кандидат на баг, который мог бы быть исправлен в последующих версиях.

          • Январь 25, 2016 at 13:26
            Permalink

            Ладно, Василий, попробую, спасибо большое за ответы!

  • Апрель 15, 2016 at 10:15
    Permalink

    Василий,скажите пожалуйста,а сталкивались ли вы с применением макроса для рассылки отчета по адресатам,только без Нпринтинга?Если да,то насколько сложный макрос?Спасибо!

    Ответить
    • Апрель 15, 2016 at 17:27
      Permalink

      Нет, сам лично не сталкивался. Но у АТК есть такое решение (правда не знаю, актуально ли оно в свете существования Нпринтинг):

      QlikView ChartRobot – продукт, разработанный Консультационной Группой АТК, предназначенный для создания отчетов из QlikView приложений, их автоматической рассылки согласно расписанию.
      Возможности:
      1)Формирование отчетов в форматах:Excel, HTML, PDF, TXT, XML
      2)Рассылка отчетов с отфильтрованными данными на определенные адреса пользователей
      3)Хранение актуальных (или всех) отчетов пользователей в «привязанных» к ним папках. Возможность автоматического удаления файлов из папок после завершения рассылки
      4)Архивация экспортируемых отчетов перед рассылкой (ZIP)
      5)Гибкая настройка экспортируемых отчетов
      6)И многое другое…

      Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Подпишись на Data-Daily!

Введите email и будьте в курсе!

Подпишись!