25 июля 2018 г.

Большие данные или хранилище данных: что выбрать?

Предположим, что у нас есть 100 файлов, каждый из которых содержит 10 миллионов строк, и нам нужно загрузить их в репозиторий для того, чтобы мы могли проанализировать данные. Как лучше всего поступить? Воспользоваться Hadoop (HDFS) или реляционной СУБД (RDBMS)?
На прошлой неделе я обозначил разницу между большими данными и хранилищем данных: большие данные – это Hadoop, а хранилище данных – это РСУБД. Подробности можно прочитать в моей статье. Сегодня я хотел бы проиллюстрировать на примерах, в каких случаях предпочтителен Hadoop, а в каких – хранилище данных.
Рассмотрим 4 фактора:
  1. Структура данных.
  2. Объем данных.
  3. Неструктурированные данные.
  4. Schema-on-Read (схема при чтении).

1. Структура данных: простая или сложная

Если все 100 файлов имеют одинаковую структуру, например, все они состоят из одних и тех же 10 столбцов, то лучше поместить их в Hadoop. Затем мы сможем использовать Hive, Spark, Presto, R или Python * для анализа данных – например, для поиска закономерностей в данных, выполнения статистического анализа или создания прогнозов. Время разработки будет короче, потому что это только 1 слой.
* или Phoenix, Impala, BigSQL, Stinger, Drill
Если 100 файлов содержат 100 разных таблиц, лучше поместить их в базу данных, создать хранилище данных и использовать аналитический BI-инструмент, такой как Pentaho или MicroStrategy * для анализа данных. Например, чтобы получить срезы данных, найти процент или аномалии и провести анализ временных рядов. Да, нам будет необходимо создать 3 слоя (staging, 3NF, star schema), но это позволит анализировать каждый показатель по различным параметрам.
* или Looker, PowerBI, Tableau, QlikView, BusinessObjects, Cognos BI, Birt, Pentaho, Roambi, SAS, Sisense или другие инструменты BI
Поэтому, если структура данных простая, поместите их в Hadoop, а если сложная – в хранилище данных. Это общее правило, но иногда из него бывают исключения. Можно ли поместить данные с простой структурой в хранилище данных? Конечно можно. Могут ли данные со сложной структурой быть помещены в Hadoop? Несомненно.
Используя Hadoop и Hive/Spark/Presto, мы также можем получить срезы данных, вычислить процент или аномалии, провести анализ временных рядов. Используя хранилище данных, мы можем выполнять машинное обучение и интеллектуальный анализ данных для поиска в них закономерностей, статистический анализ и создавать прогнозы. Таким образом, независимо от того, где мы храним данные – в Hadoop или в хранилище данных, мы все равно можем провести полный анализ.
Проблема заключается в хранении. Связывание 100 таблиц в Hadoop – сложно и неестественно. РСУБД, такие как SQL Server или Oracle, предназначены именно для этой задачи: связывания и объединения таблиц. Построение модели данных, связывающей 100 таблиц, очень подходит для РСУБД. Можем ли мы спроектировать модель данных, связывающую 100 файлов с различными структурами в Hadoop? Конечно, мы можем это сделать. Но это гораздо сложнее. Во-первых, это Schema-on-Read, поэтому столбцы в файлах не имеют типов данных. Schema-on-Read означает, что мы не пытаемся определить взаимосвязь между файлами при их загрузке в Hadoop. Так что да, мы можем загрузить 100 файлов в Hadoop, но мы сохраняем их как отдельные файлы, без связей между ними. То же самое происходит и в Data Lake, где также используется Schema-on-Read и HDFS.

2. Объем данных: маленький или большой

100 файлов, содержащих 10 миллионов строк каждый, составляют 1 миллиард строк в день. Если все 100 файлов имеют одинаковую структуру (скажем, все они состоят из одних тех же 10 столбцов), то у нас будет ... Читать далее

14 июля 2018 г.

15 примеров визуализации данных

Визуализация данных становится все более востребованной из-за быстрого роста количества данных и их широкого применения в различных сферах жизнедеятельности. Информация должна быть представлена в структурированном виде, чтобы пользователи могли использовать ее для выявления трендов, анализа и принятия решений.
Сейчас широко применяются 2 различных метода визуализации данных: исследование, которое позволяет понять смысл и цель ваших данных, и объяснение, которое пересказывает историю данных пользователям. Для того, чтобы удовлетворить большинство ожиданий вашей аудитории, вы должны рассмотреть оба метода. К счастью, существует множество практических и интересных способов наглядного представления данных.

22 апреля 2018 г.

5 шагов погружения в DWBI

перевод статьи Vincent Rainardi

 Этап 1. Составление отчетов (Стоимость: £25 тыс./год. Длительность: 2-3 года)

В большинстве компаний BI-подразделение начиналось с одного сотрудника IT-отдела, занимающегося составлением отчетов. IT-отделу ставилась задача – подготовить сводный бизнес-отчет для какого-либо собрания на основе информации из базы данных. Отчет формировался с помощью встроенных средств отчетности – SSRS, Jasper или Crystal. Тогда никто ничего не слышал о Business Intelligence. Руководству требовался просто «Отчет», не BI и даже не Management Information.

Компания, состоящая из 100 сотрудников и имеющая годовой оборот в размере 5 млн. фунтов стерлингов, обходилась IT-отделом, в котором было всего 5 человек. Они в основном занимались технической поддержкой – Exchange и Email, администрированием файлового и SQL-серверов, локальной сети. Подготовка отчета для них была всего лишь одной из множества задач.

Однако руководству требовались все новые и новые отчеты. Нагрузка на сотрудника, занимавшегося их составлением, быстро росла. Пропорционально увеличивалась его производительность за счет освоения встроенных инструментов для визуализации данных. Так, например, если для подготовки первого отчета потребовалось 3 недели, то пятый был сформирован за 3 дня. При этом не существовало инструкций и строгих правил оформления отчетов. На бизнес-собраниях просто требовалась информация в удобном для восприятия виде.

Сколько это стоит? Расходы на этом этапе составляют около 20-25 тыс. фунтов стерлингов в год.

Читать далее...

10 декабря 2017 г.

Создание отчета в Pentaho Report Designer

Данный пост о создании печатных форм в Pentaho Report Designer – Open Source дизайнере отчетов. Для примера взята форма отчета «Отчет о кредитах, выданных нерезидентам (форма 17-ПБ)», который банки Казахстана сдают в Национальный банк, в рамках регуляторной отчетности.

В целом все очень похоже на любой другой конструктор отчетов.

Создаем новый отчет, в свойствах отчета указываем название:



Как и в других конструкторах, структура отчета состоит из полос (band): Заголовок Отчета, Заголовок Страницы, Детали, Подвал Страницы, Подвал Отчета. При необходимости можно добавить группировку строк по какому-то признаку, соответственно тогда возникнут полосы Заголовок Группы и Подвал Группы. Для отображения групповых полос необходимо будет снять галку «Скрыть элемент» с этой группы в панели Структуры документа.



Далее размещаем все компоненты (поля) отчета на соответствующих полосах. Для текстовых полей соответственно текстовые компоненты, для числовых – числовые, и так далее. Задаем границы элементов. Для того, чтобы одним махом изменять свойства нескольких элементов – в Структуре документа выделяем их всех через Shift. На картинке у всех выделенных элементов изменено свойство Левая граница, на «Одинарная». Для того, чтобы сбросить свойство, кликаем галку Унаследовано.



Так как в текстовых полях длина текста может быть различной, и текст может переходить на вторую или третью строку, то высоту всех элементов на полосе Детали задаем как 100% от допустимой. В этом случае тот элемент, в котором длинный текст увеличил высоту, растянет полосу по высоте, и все остальные элементы на полосе так же растянутся. Для указания высоты в 100% нужно просто вбить текст «100%», с единицами измерения разработчики не стали заморачиваться.



Далее, на вкладке Данные добавляем датасет, из которого выводятся данные в отчет.



С большинством распространенных баз данных система соединяется прямо «из коробки», но для некоторых баз данных нужно доложить коннектор в папку C:\...\report-designer\lib.

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



Если список полей из запроса не появился, то нужно проверить SQL запрос, указанный в датасете. Могут мешать комментарии в тексте запроса, до или после.

В JDBC коннекторе к MySQL, до недавних пор, наблюдался глюк, список полей под датасетом не появлялся, пока в тело SQL-запроса датасета не добавить команду LIMIT. Количество строк в LIMIT не имело значения, например, 1 000 000 000, но сама команда LIMIT должна была присутствовать. Данный баг исправили недавно, например, в текущем коннекторе mysql-connector-java-5.1.44-bin.jar такого бага уже нет.

Отчет строится за какой-то период, соответственно в отчет нужно передать Дата_От и Дата_По. Под датасетом есть раздел Параметры, добавляем параметр dl_from, и аналогично dl_to.



Параметры вставляем в текст SQL запроса в фигурных скобках:
SELECT … FROM … WHERE … = ${dt_from} … = ${dt_to}

При вызове отчета пользователь получит приглашение ввести даты.



Далее заполняем все поля с данными. Двойной клик на компоненте вызывает список с полями, выбираем нужное поле.



В свойствах компонента устанавливаем формат отображения значения поля, например «dd.MM.yyyy» для даты, или «#,##0» для чисел.

В первой колонке отчета номер строки. Поэтому это компонент Ярлык (Label), а не поле для данных. В атрибутах этого Ярлыка, в свойстве Значение, указываем формулу =( ROWCOUNT() + 1 )



Если формула введена правильно, то над формулой будет или рассчитанное значение, или сообщение «Недостаточно данных для расчета». Если в формуле ошибка, то появится сообщение об ошибке. Даже пустая строка то же считается ошибкой.



В отчете есть поле с рассчитываемым значением. Под датасетом, в разделе Функции, добавляем функцию типа Open Formula.



В свойствах добавленной формулы, переименовываем ее имя в удобоваримое RowCount_..., и в атрибуте формула добавляем нужные расчеты.



В подвале отчета необходимо вывести сумму итого под некоторыми колонками. Это то же рассчитываемое поле, только с типом Сумма (Sum).



В отличии от формулы с типом Open Formula, в атрибутах формулы Сумма нужно просто указать столбец (поле), по которому рассчитывается сумма итого.
Все добавленные формулы появятся в выпадающем списке полей при клике на компоненте, соответственно указываем их в соответствующих компонентах.



Для лучшей читаемости отчета, нужно чередовать фоновый цвет строк таблицы. Для этого в свойствах полосы, в атрибуте Фоновый цвет (bg-color) добавляем формулу: =IF( ISODD( ROWCOUNT() ); "#FFFFFF"; "#DDDDDD" ). Действие формулы понятно без комментария.



Последний штрих – в Заголовке отчета, в соответствующем Ярлыке добавляем формулу: = "за период с " & MESSAGE("{0,date,dd.MM.yyyy}"; [dt_from]) & " г. по " & MESSAGE("{0,date,dd.MM.yyyy}"; [dt_to]) & " г.". Действие формулы понятно без комментария.

Отчет готов.



Пример регуляторного отчета 17-ПБ «Отчет о кредитах, выданных нерезидентам» в PDF.

Пример регуляторного отчета 17-ПБ «Отчет о кредитах, выданных нерезидентам» в Excel.

В отчете в Excel есть скрытые столбцы, то есть некоторые поля в отчете не очень плотно подогнаны друг к другу. Можно подогнать, а можно поменять раскладку полосы с Холста на Строку. В раскладке Холст вы сами размещаете компоненты на полосе. В раскладке Строка полоса сама будет выстраивать все компоненты друг за другом, примерно как float:left в свойствах div в HTML. Вам останется только изменять ширину компонентов, и менять их порядок в строке (перемещать влево – вправо по полосе) с помощью кнопок под ярлычком Структура документа.





PS: Осталось только добавить, что для написания поста, по техническим причинам, пришлось набросать тестовый SQL-запрос для наполнения отчета случайными данными.

SELECT
client_name AS NAMECLIENT,
tax_bin AS IIN,
CAST( ( FLOOR( RAND() * 400 ) + 100 ) AS CHAR ) AS NUM_DOG,
CAST( ( FLOOR( RAND() * 100000 ) + 100 ) AS SIGNED ) AS SUM_DOG,

CAST( ( FLOOR( RAND() * 100000 ) + 100 ) AS SIGNED ) AS SALDO_BEG_OD,
CAST( ( FLOOR( RAND() * 10000 ) + 100 ) AS SIGNED ) AS OBOROT_KT_OD,
CAST( -( FLOOR( RAND() * 50000 ) + 100 ) AS SIGNED ) AS OBOROT_DT_OD,
CAST( ( FLOOR( RAND() * 10000 ) + 100 ) AS SIGNED ) AS SALDO_END_OD,

CAST( ( FLOOR( RAND() * 100000 ) + 100 ) AS SIGNED ) AS SALDO_BEG_PRC,
CAST( ( FLOOR( RAND() * 10000 ) + 100 ) AS SIGNED ) AS OBOROT_KT_PRC,
CAST( -( FLOOR( RAND() * 50000 ) + 100 ) AS SIGNED ) AS OBOROT_DT_PRC,
CAST( ( FLOOR( RAND() * 10000 ) + 100 ) AS SIGNED ) AS SALDO_END_PRC,

CAST( ( FLOOR( RAND() * 900000000 ) + 10000000 ) AS CHAR ) AS BALANS_NUM_OD,
CAST( ( FLOOR( RAND() * 900000000 ) + 10000000 ) AS CHAR ) AS BALANS_NUM_PRC,

CASE ( FLOOR( RAND() * 2 ) + 1 )
WHEN 1 THEN 'USD'
WHEN 2 THEN 'EURO'
END AS CURRENCY,

CASE ( FLOOR( RAND() * 3 ) + 1 )
WHEN 1 THEN '16'
WHEN 2 THEN '17'
WHEN 3 THEN '18'
END AS INTEREST,

CASE ( FLOOR( RAND() * 6 ) + 1 )
WHEN 1 THEN CAST('2015-01-01' AS DATE)
WHEN 2 THEN CAST('2015-02-02' AS DATE)
WHEN 3 THEN CAST('2015-03-03' AS DATE)
WHEN 4 THEN CAST('2015-04-04' AS DATE)
WHEN 5 THEN CAST('2015-05-05' AS DATE)
WHEN 6 THEN CAST('2015-06-06' AS DATE)
END AS DATE_BEGIN,

CASE ( FLOOR( RAND() * 6 ) + 1 )
WHEN 1 THEN CAST('2015-07-01' AS DATE)
WHEN 2 THEN CAST('2015-08-02' AS DATE)
WHEN 3 THEN CAST('2015-09-03' AS DATE)
WHEN 4 THEN CAST('2015-10-04' AS DATE)
WHEN 5 THEN CAST('2015-11-05' AS DATE)
WHEN 6 THEN CAST('2015-12-06' AS DATE)
END AS DATE_GIVE,

CASE ( FLOOR( RAND() * 6 ) + 1 )
WHEN 1 THEN CAST('2016-07-01' AS DATE)
WHEN 2 THEN CAST('2016-08-02' AS DATE)
WHEN 3 THEN CAST('2016-09-03' AS DATE)
WHEN 4 THEN CAST('2016-10-04' AS DATE)
WHEN 5 THEN CAST('2016-11-05' AS DATE)
WHEN 6 THEN CAST('2016-12-06' AS DATE)
END AS DATE_END,

CASE ( FLOOR( RAND() * 5 ) + 1 )
WHEN 1 THEN 'Германия'
WHEN 2 THEN 'Объединенные Арабские Эмираты'
WHEN 3 THEN 'Великобритания'
WHEN 4 THEN 'Испания'
WHEN 5 THEN 'Франция'
END AS COUNTRY

FROM
tbl_client

ORDER BY RAND()

LIMIT 10

Что такое система бизнес-анализа (BI)?

Почти 60 лет назад в 1958 году в одной из статей исследователя из IBM Ханса Питера Луна впервые появился термин Business Intelligence, который мы сейчас понимаем как интеллектуальный анализ...



Почти 60 лет назад в 1958 году в одной из статей исследователя из IBM Ханса Питера Луна впервые появился термин Business Intelligence, который мы сейчас понимаем как интеллектуальный анализ данных. Уже тогда исследователь определил этот термин как: «Возможность понимания связей между представленными фактами».

Эволюция BI за этот период вырастила понимание системы, и уже в 1989 году Говард Дреснер (работал на позиции аналитика в Gartner) определил Business Intelligence как термин, описывающий «концепции и методы для улучшения принятия бизнес-решений с использованием систем на основе бизнес-данных».

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

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

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



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

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

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

При развертывании системы аналитики основным предметом обсуждения может стать вопрос получения информации. Откуда система берет данные? Как консолидирует их?

BI система не может заменить уже установленные системы, равно как и не является частью какого-либо имеющегося решения. Однако она запрограммирована на получение сведений и показателей из любых источников, таких как ERP системы, CRM системы и WMS-системы, а также таблицы Excel и любые самописные решения.

Это происходит путем подключения BI системы к любой существующей ИТ системе в компании, после чего она загружает в себя сведения, рассчитывая агрегированные показатели, например суммы продаж категорий продуктов в каждом периоде. Заранее рассчитанные агрегаты данных значительно сокращают время на вывод результатов.

Информацию из системы может получить любой сотрудник, наделенный доступом. Это могут быть как руководители, так и менеджеры, либо аналитики. Большим плюсом системы является интуитивно-понятный интерфейс, для работы с которым не требуется никаких специальных знаний. А что касается внедрения, то оно не предполагает каких-либо изменений в рабочих процессах или в ИТ-инфраструктуре.

Если говорить о выгодах и преимуществах системы BI, то стоит отметить, что результат становится заметным в течение первых недель после установки.

В среднем показатели могут увеличиться до: 34% повышение производительности труда; 96% рост удовлетворенности клиентов; 186% возврат инвестиций; 16% рост выручки; 23% увеличение денежного потока; 20% снижение эксплуатационных расходов/операционных затрат.

Основные преимущества BI систем:

1. Бизнес-аналитика;
2. Управление финансовыми показателями и стратегией;
3. Прогностическая и углубленная аналитика;
4. Анализ рисков;
5. Аналитические приложения.



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

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

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

Не стоит забывать, что данные – это сырые необработанные факты и цифры, а информация – это данные, которым придали контекст или значение.



Визуализация данных с помощью графиков и диаграмм систем BI облегчает просмотр больших объёмов информации, таким образом руководитель или аналитик могут, не влезая в дебри трудных для понимания стен текста или цифр, получить о них представление и определить важные принципы материала.

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

Зачем нужна визуализация данных?

Интересный факт - если в инструкции находится только текст, человек усваивает из нее лишь 70% информации. Если же в инструкцию добавить картинки, человек усвоит уже 95%.
Визуализация данных — это наглядное представление массивов различной информации. Существует несколько типов визуализации:
  • Обычное визуальное представление количественной информации в схематической форме. К этой группе можно отнести всем известные круговые и линейные диаграммы, гистограммы и спектрограммы, таблицы и различные точечные графики.
  • Данные при визуализации могут быть преобразованы в форму, усиливающую восприятие и анализ этой информации. Например, карта и полярный график, временная линия и график с параллельными осями, диаграмма Эйлера.
  • Концептуальная визуализация позволяет разрабатывать сложные концепции, идеи и планы с помощью концептуальных карт, диаграмм Ганта, графов с минимальным путем и других подобных видов диаграмм.
  • Стратегическая визуализация переводит в визуальную форму различные данные об аспектах работы организаций. Это всевозможные диаграммы производительности, жизненного цикла и графики структур организаций.
  • Графически организовать структурную информацию с помощью пирамид, деревьев и карт данных поможет метафорическая визуализация, ярким примером которой является карта метро.
  • Комбинированная визуализация позволяет объединить несколько сложных графиков в одну схему, как в карте с прогнозом погоды.
Зачем использовать визуализацию данных?
Визуальная информация лучше воспринимается и позволяет быстро и эффективно донести до зрителя собственные мысли и идеи. Физиологически, восприятие визуальной информации является основной для человека.
Есть многочисленные исследования, подтверждающие, что:
  • 90% информации человек воспринимает через зрение;
  • 70% сенсорных рецепторов находятся в глазах,
  • около половины нейронов головного мозга человека задействованы в обработке визуальной информации;
  • на 19% меньше при работе с визуальными данными используется когнитивная функция мозга, отвечающая за обработку и анализ информации;
  • на 17% выше производительность человека, работающего с визуальной информацией;
  • на 4,5% лучше воспоминаются подробные детали визуальной информации;
  • 10% человек запоминает из услышанного, 20% — из прочитанного, и 80% — из увиденного и сделанного;
  • на 323% лучше человек выполняет инструкцию, если она содержит иллюстрации.
Как часто вы используете визуализацию данных в своей работе?

Пузырьковая диаграмма на карте страны

Приложение "Sanatel OLAP Client" дополнено графиком "Пузырьковая диаграмма на карте страны".

График отображает два ряда данных:
  • Числовые значения, соответствуюшие регионам страны. Чем больше значение, тем темнее цвет региона.
  • Процентные значения, соответствующие регионам страны, в виде пузырьков на карте. Размер пузырька региона зависит от величины процента.