Трансформация данных
Узлы для трансформации данных
в Deductor Studio
v 0.4 @ 02.06.16 Заходякин Г.В. postlogist@gmail.com
План занятия
• Постановка задачи
• Загрузка и предварительный анализ данных
• Замена данных и настройка набора данных
• Преобразование дат
• Интерактивные отчеты: OLAP-кубы и диаграммы
• Трансформация данных: группировка, калькулятор, фильтрация,
квантование, кросс-таблицы
• Слияние наборов данных
• Скрипты и групповая обработка
2
Постановка задачи
• В этом тренинге будет разработан сценарий для анализа результатов
продаж компании-дистрибьютораофисных принадлежностей. На основе
исходных данных (строк заказов) будут построены интерактивные отчеты
для анализа продаж и проведена сегментация клиентов компании по
прибыльности. На основе дополнительных данных о возвратах
заказанной продукции, будет проведен анализ клиентов по риску
возврата
• Для выполнения заданий вам потребуются файлыданных, которые
можно загрузить по ссылке:
https://drive.google.com/open?id=0Bx3yHjmZqyjdaWJmSDB5REFUM0k
3
ABC-КЛАССИФИКАЦИЯ КЛИЕНТОВ
Часть I
4
Данные в текстовых файлах
• Учебная версия (Deductor Academic) позволяетработать с даннымив следующихформатах: текстовые
файлы (txt, csv); двоичныефайлы deductor datafile (ddf); хранилищеданных Deductor Warehouse.
Текстовые файлы – наиболее универсальныйформатобмена данными, поэтому мы будем использовать
именно его.
• CSV-файл – это обычныйтекстовыйфайл, в строкахкоторого содержатся
записи, подобныезаписям в таблице реляционнойбазы данных. Все данные
(в т.ч. даты, числа, логическиезначения) представлены в виде текста, при
загрузкев аналитическую программу необходимо преобразовывать их
обратно в соответствующиеформаты. Эта операция требует времени
и дополнительныхнастроек, поскольку на разныхсистемах текстовое
представлениедат и чисел отличается.
• Запись состоит из набора полей, для разделения которыхиспользуется специальныйсимвол (одини тот
же во всем файле). Обычно таким символом для CSV-файлов, созданныхв Windows с русскими
региональныминастройкамиявляется точка с запятой. При правильном указанииформата файла и
разделителейполя, содержащиеоднородныеданные, образуютодин столбецв таблице. Обычно в
первой строке CSV-файла содержатся заголовкистолбцов. Встречаются такжефайлы, гдеразделителине
используются, а таблица данныхотформатирована так, чтобы каждыйстолбецначинался с определенной
позиции в строке. Призагрузкенужно указать начальную позицию для каждого столбца. Этотформатмы
использовать не будем, т.к. он встречается реже.
5
Формат файла
• Чтобы правильно задать формат данныхпри импорте, необходимо изучить структуру файла данных
• Рассмотрим в качестве примера одну из строк файла sales.csv:
18606;NotSpecified;0,01;2,88;0,5;2;JaniceFletcher;Regular Air;Corporate;OfficeSupplies;Labels;Small
Box;Avery 49;0,36;Central;Illinois;Addison;60101;28.05.2012;30.05.2012;1,32;2;5,9;88525
• Нужно обратить внимание на следующее:
– какойразделитель используется для полей(здесь это точка с запятой)
– какойразделитель используется для целойидробнойчасти числа (здесь – запятая)
– используются ликавычкидля ограничения текстовыхстрок (здесь – не используются)
– какойформатдат используется (здесь –традиционный российскийформат: ДД.ММ.ГГГГ)
– как представлены значения Истина и Ложь для логическихполей (здесь их нет)
• Выяснив эту информацию, можно приступить к загрузкефайла в Deductor Studio
6
Мастер импорта
7
• Чтобы загрузить данныедля анализа, необходимо добавить в сценарий
узел импорта. Для добавления этого узла, выберите корневойузел проекта
и выполнитекоманду: Мастеримпортав контекстном меню корневого узла,
либо воспользуйтесь кнопкойна панелиинструментов
• На первом шаге мастера импорта выберите тип источника: Text
• На втором шаге укажитепуть к файлу данных. Рекомендуем всегда использовать относительныйпуть
(указывать толькоимяфайла). В противном случаеваш сценарий не будет работать припереносе на
другойкомпьютер илив другую папку. Еслипуть неуказан, то файл долженнаходиться в той же папке,
гдесохранен проект Deductor
• В данном случае все остальные
настройки оставьте по умолчанию
Формат разделителей и данных
• На 3-м шагемастера можно выбрать форматфайла (с разделителями), разделителидля строк,
десятичныхдробей, дат, времени, а также форматы представления значений. Это очень важный этап,
поскольку принеправильном указанииэтих параметров данные будутзагружены некорректно.
• Убедитесь, что в вашем сценарии настройки соответствуютпоказанным на рисунке
8
Формат разделителей столбцов
• На 4 шаге мастера импорта выберите в качестве разделителя столбцов точку с запятой. Еслиразделитель
указаннеправильно, то все данные сливаются в один столбеци загрузка невозможна
9
Параметры столбцов
• На 5 шаге мастера импорта необходимо настроить
параметры столбцов набора данных: указать имя,
метку, тип и вид данных. Параметр «Назначение»
можно пока не использовать
• Имя столбцаиспользуется для ссылкина данные
в этом столбцев расчетных формулахи узлах
проекта. Имена столбцов в Deductor не могут
содержать русскихбукв и пробелов, поэтому
все не соответствующиеэтим требованиям имена
при загрузкезаменяются на COL1, COL2 ит.п.
Всем узлам, которыев дальнейшем
предполагается использовать в расчетныхформулах,
необходимо задать понятныеимена
• Тип данных (Целый, Вещественный, Дата/Время, Логический, Строковый) необходимо выбирать в
соответствии с теми данными, которыесодержатся в этом столбце. Автоматическоераспознавание типа
данныхможет быть неправильным (особенно для числовыхи логическихполей)
• Вид данных определяет, какиедействия над даннымиимеют смысл:
– Непрерывные данные выражают величину или количество чего-либо и их можно агрегировать (складывать,
усреднять и т.п.). Примерами непрерывных данных являются: Цена, количество, % скидки.
– Дискретные данные представляют собой идентификаторы (коды) объектов или групп. Примерами таких данных
являются: код товара, группа товаров, класс товара по оборачиваемости (A, B, C), категория клиента (VIP, юр.лицо,
физ.лицо) и т.п. Даже если дискретное поле содержит числа (коды объектов), математические операции с этими
числами не имеют смысла
• Настройки, которыенеобходимо сделать в данном сценарии, приведены в таблице на следующем слайде
10
Параметрыстолбцов для набора данных sales
11
Имя Метка Тип данных Вид данных Примечание
RowID Row ID Целый Дискретный Код строки заказа
OrderPriority Order Priority Строковый Дискретный Приоритет заказа
Discount Discount Вещественный Непрерывный Скидка
UnitPrice Unit Price Вещественный Непрерывный Цена за единицу товара
ShippingCost Shipping Cost Вещественный Непрерывный Затраты на доставку товара клиенту
CustomerID Customer ID Целый Дискретный Код клиента
CustomerName Customer Name Строковый Дискретный Название клиента
ShipMode Ship Mode Строковый Дискретный Способ доставки
CustomerSegment Customer Segment Строковый Дискретный Сегмент клиента
ProductCategory Product Category Строковый Дискретный Категория продукта
ProductSubCategory Product Sub-Category Строковый Дискретный Подкатегория продукта
ProductContainer Product Container Строковый Дискретный Вид упаковки
ProductName Product Name Строковый Дискретный Название продукта
ProductBaseMargin Product Base Margin Вещественный Непрерывный Наценка
Region Region Строковый Дискретный Регион клиента
StateOrProvince State or Province Строковый Дискретный Штат/область клиента
City City Строковый Дискретный Город клиента
PostalCode Postal Code Строковый Дискретный Почтовый индекс клиента
(продолжениена следующем слайде)
Параметрыстолбцов для набора данных sales
• Посленастройки параметров полейперейдите на следующийшаг и запуститепроцесс импорта
12
Имя Метка Тип данных Вид данных Примечание
PostalCode Postal Code Строковый Дискретный Почтовый индекс клиента
Order Date OrderDate Дата/время Дискретный Дата размещения заказа
ShipDate Ship Date Дата/время Дискретный Дата отгрузки заказа
Profit Profit Вещественный Непрерывный Прибыль от продажи
Quantity Quantity ordered Целый Непрерывный Число единиц товара
Sales Sales Вещественный Непрерывный Выручка от продажи
OrderID Order ID Целый Дискретный Код заказа
Настройка способов отображения
• Послеимпорта данныхавтоматически запускается мастер визуализации, которыйпозволяетвыбрать
способ отображения набора данных
• Оставьте выбранныйпо умолчанию способ отображения – табличный
• Послезавершения мастера импорта окно программы принимаетвид, показанныйна рисунке:
в дереве проекта добавился узел импорта из текста, в области визуализаторов отображается таблица
данных, загружено 9426 строк
13
Предварительный анализ данных• Перед использованием загруженныхданных, необходимо оценить их характеристики: диапазоны
значений и распределениедля непрерывныхполей, набор возможныхзначений и частоты для
дискретныхполей. Также важно знать, какие поля содержатпропущенныезначения, нетипичные,
«странные» значения. Все это можно сделать с помощью инструмента «онлайн-статистика», доступный
на панели инструментов визуализатора «Таблица»
• Онлайн-статистика показываетдиапазоны ираспределение значений в каждом столбцетаблицы. Для
дискретныхполей столбикив полеГистограмма отражаютчастоты каждого уникального значения (т.е.
сколько раз это значение встречается в столбце). Для непрерывных полейздесь отображается
гистограмма
• Характеристики: минимум, максимум, среднеепозволяютоценить размах диапазона значений и его
центр. Для текстовыхполейэти характеристики относятся к длине строки. Если, например, мы видим
отрицательное значение количества – есть вопросы к качеству и правильностизагрузкиданных.
• Стандартное отклонение и сумма квадратов позволяютоценить степень разброса значений
• Для дискретных полейвыводится количество уникальныхзначений поля. Например, мы видим, что
существует6 разныхприоритетов заказа, причем 5 из них встречаются примерно с одинаковойчастотой,
а один – очень редко
• Число пустыхзначений – важныйпоказатель, поскольку пропущенныезначения вызываютпроблемы при
расчетах и должны обрабатываться специальным образом, либо отфильтровываться
14
Предварительный анализ данных
• По клику в поле Гистограмма, отображается расширенная гистограмма илистолбиковая диаграмма
• Например, мы видим, что распределение затрат на доставку асимметрично: очень много относительно
небольшихзначений, однако изредка встречаются значения, превышающие«типичный» диапазон: 0.5-
25 у.е. в несколько раз
• Выбрав полеShipMode, можно видеть, что самыйпопулярныйспособ доставки– авиаперевозки по
стандартному тарифу (Regular Air).
• При большом количествекатегорийудобно отсортировать столбикипо убыванию частоты (клик в
заголовкеполя Кол-во)
15
Вопросы для предварительногоанализа данных
• Наиболее типичные вопросы для предварительного анализа данныхнацелены на выявлениевозможных
проблем призагрузкеили ошибок в источнике данных:
1. Являются лидиапазоны значений для непрерывныхполейвозможнымис точкизрения практики?
2. Есть ли поля с пропущеннымизначениями?
3. Есть ли поля, содержащиетолько одно значение в каждойстроке?
4. Есть ли поля, содержащиеуникальныезначения (число значений совпадаетс числом строк в
наборе)
5. Есть ли нетипично частые или нетипично редкие значения? Это можетсвидетельствовать об
ошибках– например, опечатках привводе данных.
• Задание: изучите распределения значений во всех столбцахнабора данныхи ответьте на перечисленные
выше вопросы. Есть ли подозрительныеполя?
16
Результаты предварительного анализа
• Уникальным полем в этом наборе данных является код строки – Row ID. Коды заказов не уникальны.
• В таблице содержатся данные о 1263 продуктахи2703 клиентах
• В полеProductBase Margin содержится 72 пропущенныхзначения
• Количество и выручка находятся в разумныхпределах
• Прибыль по некоторым позициям заказов отрицательна
• ПолеOrder Priority содержит нетипичные значения: приоритет: «Critical» представленв таблице частот2
раза, причем второй вариант встречается в таблице только один раз
• При более пристальном рассмотрении, можно видеть, что во втором случае в концесодержится пробел
(в результате ошибки ввода). Эту проблему можно устранить.
17
Замена данных• В Deductor Studio невозможно напрямую вводить или
изменять данныев таблице. Эта система ориентирована
на автоматическую обработку данныхбез участия
человека. Однако можно изменять данныес помощью
обработчика «Замена данных»
• Выберите в дереве проекта ранее добавленныйузел
импорта текстового файла. В контекстном меню этого
узла выберите команду: Мастеробработки. Можно
воспользоваться аналогичнойкнопкойна панели
инструментов
• В разделеТрансформацияданных выберите обработчик:
Заменаданных
• Для поля Order Priority укажитев таблице замены
данных, что «Critical » (с пробелом в конце) нужно
заменять на «Critical» (без пробела). Для добавления
значения в таблицу рекомендуется использовать функцию
«список значений»
• Красным цветом в списке полейвыделены поля, для
которыхиспользуется замена значений
• На следующихшагахмастера никаких настроек не требуется
18
Настройка набора данных
• Послезамены в набор данныхдобавилось поле:
Order Priority_REPLACE. В статистике видно, что категорий
приоритетности теперь 5 и все они имеют примерно одинаковую
частоту
• Проблема устранена, поэтому старое полеOrder Priority можно удалить
• Операции по удалению, переименованию, изменению типа данныхили порядка столбцов можно
выполнять с помощью обработчика: Настройканабора данных
• Удалите старое полеOrder Priority, переименуйте полеOrder Priority_REPLACEв Order Priority и
передвиньте его на место старого поля
• Чтобы удалить полеиз набора, выберите его в спискеи укажитеНазначение: Неиспользуемое
19
Преобразование даты и времени
• В текущем наборе данныхдаты размещения и отправкизаказа указаны с точностью
до одного дня. При анализе тенденций это слишком короткийинтервал, обычно
в таком случае необходимо агрегирование датдо недель, месяцев или кварталов
• Преобразовать дату к нужному уровню детализации можно с помощью
обработчика: Дата и время
• Добавьте к узлу Настройка набора данных еще один
обработчик – Дата и время
• Выберите в спискеполеOrder Date. ВыберитеНазначение:
Используемое иукажите, какиекомпоненты даты следует
выделять: Год+Квартал и Год+Месяц (в формате Дата)
• В наборе данных будутсозданы столбцы с округленнымидо требуемойдетализациидатами
• Результатпоказанна рисунке справа: все даты заменены на первый день месяца/квартала
• При необходимости, вы можететакже выделить определенныйкомпонентдаты (месяц, год, квартал,
неделю, день недели). Это можно использовать, например, для анализа сезонности
20
OLAP-куб
• OLAP-куб в Deductor – это визуализатор, которыйпозволяет
в интерактивной формепредставлять данныес требуемым
уровнем детализации и анализировать их
• Выберите в контекстном меню узла Преобразование даты
и времени или на панелиинструментов команду: Мастер
визуализации
• В мастере визуализации выберите способ отображения
в виде OLAP-куба
• На следующем шагесделайтеполя: Customer Name,
Customer Segment, Product Category, Product Sub-Category,
Product Name, Order Date (Год+Квартал) –
измерениями; поля: Profit, Quantity Ordered,
Sales – фактами; остальныеполя сделайте
информационными
• При необходимости, можно выделить
несколько полей, используя клавиши
Shift и Ctrl и изменить назначение
для всех выделенныхполейсразу
21
Назначения полей куба
• Измерения и факты участвуют
в построении куба. Измеренияпозволяют
задавать нужный уровень детализации
и анализировать данные.
• Факты – это количественныепоказатели
некоторого процесса (в нашем случае–
процесса продаж), которыебудут
представляться в разрезе выбранных
измерений.
• Информационные поляв кубе
не отображаются, но их можно увидеть
в детализации ячейки куба.
• Неиспользуемые поляскрываются
из набора данных. Это можно
использовать для упрощения структуры
данныхи экономиипамяти при большом
объеме данных
22
Настройка измерений и фактов
• На следующем шагемастера визуализации
выберите структуру измерений куба, как
показано на рисунке. По строкам таблицы
мы создаем иерархию измерений:
на верхнем уровне – сегментклиента,
на нижнем – отдельныеклиенты
• На следующем шагевыберите, какие
факты будутдоступны в кубе и какие
агрегирующиефункциик ним должны
применяться. Выберите все факты: Profit,
Quantity Ordered, Sales. По умолчанию
выбирается агрегирующая функция: Сумма
• Полученныйотчетпоказанна рисунке
23
Детализация данных
• В целом, по каждому сегменту
клиентов прибыль положительна
• Результаты продаж по каждому
клиенту из выбранного сегмента
можно увидеть, нажав на кнопку: +
рядом с названием сегмента, либо
можно детализировать сразу
все сегменты, воспользовавшись
кнопкой+ в заголовкетаблицы
• Можно видеть, что некоторые
клиенты оказались убыточными
• Чтобы увидеть причины, можно
посмотреть все строки заказов,
на основе которыхполучилась
каждая сумма. Для этого выберите
интересующую вас ячейку и
нажмите на кнопку: детализация
на панели инструментов
24
Диаграмма и сохранение конфигурации отчета
• Данные можно представить
в наглядном виде, нажав кнопку:
Показать/скрыть диаграмму на
панели инструментов
• Диаграмму можно переместить
(мышью за заголовок)
и пристыковать в нужную позицию
• Сохраните текущее представление
отчета, нажав на кнопку:
(управлениеконфигурациями)
• В дальнейшем можно быстро
вернуться к текущему виду отчета,
выбрав конфигурацию из списка
25
Изменение конфигурации куба
• Теперь проведем анализ прибылиот продаж в разрезе клиентов и товарныхкатегорий. Нажав на кнопку:
Настройка фактов, оставьте выделение только для факта: Profit
• Перетащите измерение ProductCategory в область заголовков столбцов
• Скройте (вытащите из таблицы) измерение Customer Name
• Результатпоказанна рисунке справа
26
Изменение диаграммы
• Используя кнопкиформатирования на панелиинструментов кросс-диаграммы, получитевид диаграммы,
показанныйна рисунке
• Сохраните конфигурацию отчета: «Продажипо категориям и сегментам»
• Попробуйтепереключаться между сохраненнымиконфигурациямиотчета
27
Динамика продаж
• Замените в областистрок измерение
Customer Segment на измерение
Order Date (Год + Квартал), для этого
перетащите новое полеповерх старого, курсор должениметь вид, как на рисунке)
• Выберите тип диаграммы: Линии, чтобы получить вид кросс-диаграммы, как на рисункевнизу
• Сохраните конфигурацию отчета: Динамикапродаж по категориям
28
Сохранение отчетов
• Узлы сценария, в которыхсодержатся важныерезультаты анализа, можно добавить в список отчетов.
В этом случаеих не потребуется искать в дереве сценария
• Включитеотображение панели отчетов и перейдите на
вкладку панелиотчетов
• Нажав на кнопку: Добавитьузел, добавьтеузел с построенным
на предыдущем этапекубом в список отчетов
• Переименуйте отчет в: Динамикапродаж
• Запустив мастер визуализации для отчета Динамика продаж,
скройте визуализатор Таблица, оставив только куб
• Узел можно добавлять в список отчетов несколько раз.
В контекстном меню отчета выберите: Копировать узел.
Переименуйте копию отчета в Прибыльпо сегментам
и выберите для куба сохраненную конфигурацию:
Прибыль, количествои оборот по сегментам
• Отчеты можно организовать с помощью папок
29
Группировка
• Визуализатор куб агрегируетданные только для отображения.
Структура набора данныхпри этом не изменяется.
Чтобы агрегировать данныев наборе необходимо
использовать обработчик: Группировка
• Переключитесь на панель сценариев и добавьте к узлу:
Преобразование даты еще один узел – Группировка
• Мы будем анализировать прибыльность каждого клиента,
поэтому необходимо вычислить суммарную прибыль
в разрезе каждого клиента
• Настройка группировкианалогична настройкекуба:
полеCustomer Name необходимо сделать измерением,
а поля: Profit, Quantity Ordered, Sales –фактами, с
агрегирующейфункцией– Сумма
• Результатгруппировкипоказанна рисунке внизу
30
Сортировка набора данных
• В таблице клиенты упорядочены по алфавиту. Можно
отсортировать ее по прибыли(клик по заголовку столбца),
однако порядок строк изменится только для отображения.
Чтобы изменить порядок строк в наборе данных, необходимо
использовать обработчик: Сортировка
• Добавьте обработчик Сортировка послеузла Группировка
• В настройках укажите, что сортировку необходимо вести по столбцу Profit, по убыванию
• Результатпоказанна рисунке внизу
31
Фильтрация данных
• Разобъем всех клиентов на две группы: приносящиеприбыль
и убыточные. Этого можно добиться, отфильтровав строки
набора данныхпо значению поля Profit
• Добавьте к отсортированному набору данныхузел:
Фильтрация
• В настройках фильтрации, укажитеполеProfit
и условие: <= 0
• Сделайте копию узла Фильтр (команда Копировать узел в контекстном меню)
• Переименуйте копию, как показано на рисунке
• Выберите в контекстном меню копиикоманду: Настроить и поменяйте
условиеотбора на: > 0
32
Вычисляемый столбец
• Введем обозначения групп клиентов: D – убыточные,
A, B, C – прибыльные(по убыванию прибыльности)
• Проще всего определить группу для убыточных
клиентов. Для всех отфильтрованныхклиентов
с отрицательнойприбылью необходимо назначить
одну и ту же группу –D
• Добавить новый вычисляемыйстолбецв набор
данныхможно с помощью узла: Калькулятор
• Добавьте после узла: Фильтр ([Profit] <= 0) узел Калькулятор
• В области Выражениевведитеформулу для вычисления нового столбца – строковую константу “D” (в
кавычках)
• Полеимеет строковый
тип данных, поэтому,
нажав на кнопку:
Редактировать параметры
выражения, укажите
этот тип данных и
задайте имя и метку поля,
показанныена рисунке
• Всегда задавайте понятные
имена и метки для
вычисляемыхстолбцов!
33
Нарастающий итог и сумма по столбцу
• Для разделения прибыльныхклиентов на группы A, B, C, используем принцип Парето и нарастающий итог
по полю Profit
• Добавьте к узлу: Фильтр ([Profit] > 0) обработчик Калькулятор
• Задайте для нового поля тип данных: Вещественный,
имя: CumulativeProfitи метку: Cumulative Profit
• Формула, показанная на рисунке внизу, вычисляетпроцентныйвклад каждого клиента в общую прибыль.
Поскольку, как ив SQL, для вычисления доступны только значения из текущей строки набора данных, для
расчета вклада с нарастающим итогом приходится использовать специальную функцию –
CumulativeSum(). Также, чтобы посчитать общий итог в знаменателедроби, нужна еще одна функция –
Stat(), которая вычисляетстатистику по столбцу (в данном случае– сумму).
• Список функций по категориям доступенв правой части окна калькулятора.
• Для предотвращения опечаток рекомендуем принаборе формул всегда использовать функцию
автодополнения (Ctrl-пробел), которая позволяетбыстро выбирать из списка имена полей и функцийпо
нескольким начальным символам
• Убедитесь, что в рассчитанном столбцеCumulative Profitпоследнеезначение - 100
34
Квантование
• На основе вклада в общий итог по прибыли, разделим всех клиентов на группы –A (первые80%), B (до
95%) иC (оставшиеся 5%)
• Для разделения можно использовать калькулятор
и функцию IF(), однако прощеиспользовать другой
обработчик – Квантование. Этот узел позволяет
разбить значения поля на дискретныекатегории
согласно установленным границам каждой
категории
• Добавьте после узла Калькулятор, гдебыл
рассчитан вклад в общий итог обработчик:
Квантование
• Деление будет производиться по полю Cumulative Profit.Настройкиквантования и границы интервалов
показаны на рисунке
35
Объединение наборов данных
• Мы классифицироваливсех клиентов, однако
результаты содержатся в разных таблицах.
• Чтобы объединить их в одну, добавьте после
узла Квантование обработчик: Слияние с узлом
• Выберите тип слияния: Объединениеиузел
связи: Калькулятор (гдевычислялась группа для
убыточныхклиентов). На экране
схематично показано, как будутобъединены
таблицы: вторая будет добавлена послепервой)
36
Объединение наборов данных
• На следующем шагенеобходимо установить соответствие полей. В данном случае, поскольку число
столбцов одинаково и почти все имена совпадают, соответствие установлено автоматически. В общем
случаенеобходимо выбрать соответствующееполе для набора в узлесвязииз списка. Для объединения
таблиц требуется, чтобы у них былиоднотипныеполя
• Далее требуется выбрать, какие поля оставить в результирующем набореданных. Задайте для поля
группы имя и метку, указанныена рисунке
37
Форматирование таблицы
• По умолчанию числа в таблицах отображаются с максимальнойточностью. Это затрудняетанализ отчетов
из-за большого количества незначащихцифр. Формат представления чисел в таблице и набор
отображаемыхстолбцов можно настроить, нажав на кнопку: Настройкаполей на панелиинструментов
таблицы.
• Получитеформаттаблицы для списка клиентов с указанием группы, показанныйна рисунке
38
Добавление куба и сохранение отчета
• Запустив мастер визуализации, добавьте визуализатор OLAP-куб со отчетом, показанным на рисунке
• Добавьте этот узел на панель отчетов в папку Интерактивные отчеты по продажам и сделайте так, чтобы
при выбореотчета сразу открывался куб
39
Продолжение следует
• Сохраните свой проект в той же папке, где и файлы данных.
Он вам понадобится в следующий раз!
40
АНАЛИЗ ВОЗВРАТОВ
Часть II
41
Анализ возвратов
• В этой части тренинга мы создадим сценарий, позволяющий анализировать долю возвратов
в разрезе отдельных клиентов и групп. Выполненный на первом этапе анализ будет
дополнен данными о возвратах, находящихся в файле returns.csv
• Откройте разработанный в I части сценарий. Используя мастер импорта, загрузите файл
returns.csv в новую ветвь сценария.
– При импорте не забудьте отредактировать путь к файлу, оставьте только имя файла
– Для столбца Order ID при импорте укажите имя OrderID, целочисленный тип данных и
дискретный вид данных
– Для поля Status будет автоматически выбран строковый тип данных и правильное имя
• Результат импорта данных показан на рисунке
42
Добавление данных о заказах
• В файле с возвратами перечислены лишь коды заказов, которыебыливозвращены клиентами. Для
анализа нам потребуются исходныеданные о продажах. Ониуже есть в сценарии, необходимо
воспользоваться обработчиком «Слияниес узлом» идополнить таблицу в узлезагрузкивозвратов
даннымио заказах
• Выбрав узел, в котором загружались данные
о возвратах, запуститемастер обработки
и добавьте обработчик «Слияние с узлом».
• Выберите тип слияния: Внешнее правое
соединение. Левая таблица - это узел, к
которому добавляется обработчик. Правая
таблица – это узел связи (см. рисунок внизу)
Внешнее правое соединение гарантирует
наличие всех записей из правой таблицы,
т.е. всех заказов в результирующейтаблице
• Укажите ключевоеполедля связи: Order ID
• Выберите для результирующейтаблицы
поля, показанныена рисункесправа. Задайте
метки и имена полейкак на рисунке
43
Замена пропущенных значений
• В результате соединения наборов данныхполученсписок всех строк заказов. Еслизаказ был возвращен,
то в столбцеStatus указано Returned (эти данные попалив таблицу из файла returns.csv). Для техзаказов,
которыене были в спискевозвращенных, в столбце Status пропущенноезначение
• С помощью обработчика Заменаданных замените пустыезначения на Completed
• Послезамены, в набор данных добавляется новыйстолбецStatus_REPLACE. C помощью обработчика
Настройка набора данных, измените имя и метку этого столбца на Status и удалитестарый столбецStatus
с пустымизначениями. Результат показанна рисунке
44
Кросс-таблица• Кросс-таблица работает аналогично OLAP-кубу и
позволяетподсчитать на основе исходного набора
данныхстатистику в разрезе двух и более измерений.
Однако, в отличие от визуализатора OLAP-куб,
кросс-таблица изменяет сам набор данных, а не просто
его визуальноепредставление
• Добавьте после узла Настройка набора данных
обработчик кросс-таблица. Выберите поля для строк,
столбцов и фактов, как показано на рисункесправа
• Выберите для факта OrderID агрегацию – Количество
уникальных. Поскольку в таблицеданные представлены на уровне строк заказов, коды заказов
дублируются
• На следующем шагемастера отключите вывод столбцов для пропущенных значений
• Результирующая таблица (отсортированная по убыванию возвратов) показана на рисунке внизу справа
45
Замена пропущенных значений
• В полученной на предыдущем шаге таблице есть клиенты, которые не вернули ни одного
заказа. Для таких клиентов в столбце Returned содержатся пропущенные значения.
• С помощью узла Калькулятор, добавьте новый столбец, в котором пропущенные значения
заменяются на нули. Для решения этой задачи удобно использовать функцию NVL(), которая
заменяет пустые значения на указанное пользователем (здесь – на 0), а непустые
возвращает без изменения
• Обратите внимание, что имя исходного поля с возвратами – C_2 (автоматически создано
кросс-таблицей)
• Для нового столбца задайте имя и метку: Returned, тип – целый
• Результат показан на рисунке внизу справа
46
Расчет доли возвращенных заказов
• С помощью еще одного узла Калькулятор, добавьте столбец, в котором содержится процент
возвращенных клиентами заказов
• Задайте имя нового поля: PercentReturned и метку: Percent Returned, тип - вещественный.
• Формулу для расчета запишите самостоятельно
• Результат показан на рисунке (таблица отсортирована по убыванию % возвратов)
47
Добавление данных о категории прибыльности
• К полученнойна предыдущем шагетаблице
добавьте обработчик Слияние с узлом
• В настройках укажитеузел связи – итоговая таблица
с результатами ABC-анализа клиентов (см. рисунок),
тип соединения – внутреннее (нет разницы, какой
вид соединения использовать, т.к. в обоих наборах
данныхприсутствуютвсе клиенты)
• Ключом для соединения таблицявляется поле
Customer Name
• Выберите столбцы для результирующейтаблице и задайте
для них метки и имена, как показано на рисункевнизу
(полеReturned – это рассчитанное нами полебез пропущенныхзначений, старое полес именем C_2 не
нужно включать в результирующую таблицу)
48
Отчет по возвратам
• Добавьте на панель отчетов OLAP-куб с отчетом по возвратам в разрезе категорий и
названий клиентов (на основе последней таблицы). Обратите внимание, что процент
возвратов по категории нельзя суммировать – выберите в качестве агрегирующей функции
для этого факта среднее
49
ВРЕМЕННЫЕ РЯДЫ
Часть III
50
Работа с временнЫми рядами в Deductor
• Временной ряд представляетсобойпоследовательность наблюдений, зафиксированныхчерез
определенныепромежутки. Внаборе данных эти наблюдения оказываются в последовательныхстроках
набора данных. При анализе временных рядов интерес представляетсравнение последовательных
значений, однако при работе узла Калькулятор возможендоступ только к значениям в текущей строке,
либо к статистике по столбцу в целом (с использованием функцииStat)
• Для обеспечения возможностиработы с прошлымиилипоследующимизначениямивременного ряда в
Deductor используется обработчик Скользящее окно, которыйпозволяетизвлечь несколько соседних
значений временного ряда и поместить их в текущую строку
• Параметрамискользящего окна являются глубина погружения (количество прошлыхпериодов,
включенныхв окно) и горизонтпрогнозирования (количество будущихпериодов). В наборе данных
создаются дополнительныестолбцы в заданном этими параметрамиколичестве. Например, в столбце
observation-1 содержатся прошлыезначения столбца observation (смещениена 1 период), а в столбце
observation+1 – будущиезначения (также со смещением на 1 период).
• При смещении в начале и в конце таблицы возникаютпустыеячейки, которыеобычно удаляются из
набора данных. При необходимости, их можно оставить, выбрав в настройках узла соответствующий
параметр
51
Расчет прироста: продажи за квартал
• В качестве примера, рассчитаем для каждойтоварной группы (ProductSub-Category)величину прироста
объема продаж за квартал
• Основойдля выполнения этого анализа является набор данныхв узлеПреобразование даты (Order Date:
Год + Квартал; Год + Месяц)
• Используя узел: Группировка, получитетаблицу, показаннуюна рисунке
52
Расчет прироста: скользящее окно
• Сейчас в наборе данныхсодержатся записи обо всех товарныхгруппах. Для правильного расчета
прироста необходимо отфильтровать записи только по одной товарнойгруппе(например, Appliances).
Добавьте фильтр по полю Product Sub-Category
• К отфильтрованному набору данныхдобавьте обработчик Скользящееокно. Для расчета прироста нам
необходимо одно прошлоезначение, поэтому установите параметр Глубинапогружения= 1
• Результирующая таблица показана на рисункесправа
53
Расчет прироста
• Используя узел Калькулятор, добавьте в набор данных два столбца, содержащих абсолютное
и процентное значение прироста оборота за квартал. В одном узле калькулятор можно
добавить сразу несколько столбцов
• Результирующая таблица показана на рисунке
54
Имя Метка Тип Формула
Growth Growth Вещественный Оборот в текущем периоде – Оборот в прошлом
периоде
PGrowth Percent
Growth
Вещественный 100 * (Оборот в текущем периоде – Оборот в
прошлом периоде) / Оборот в прошлом периоде
Узел Скрипт
• Узел Скрипт позволяетпрогнать новыйнабор данныхчерез одну и ту же цепочку узлов обработки
• В этом примере мы рассчитали приростдля одной из товарныхкатегорий. С помощью скрипта можно
получить приростдля другойкатегории, неповторяя необходимую последовательность узлов
• Вернитесь к узлу группировкиидобавьте еще один
фильтр, отберите любую другуюкатегорию
• К таблице данных послефильтра добавьтеузел Скрипт
• В качестве начального этапа обработкиукажите узел
Скользящее окно
• Поскольку имена столбцов в наборах данных
совпадают, автоматическивыбрано правильное соответствие
полейв исходном и результирующем наборахданных (см.
рисунок внизу слева)
• В качестве конечного этапа обработки укажитеузел
Калькулятор, в котором вы рассчитывалиприрост
• Результирующая таблица показана на рисункевнизу справа
55
Узел групповая обработка
• Узел Групповая обработка позволяетразделить набор данныхна группы записейпо значению
выбранного поля илисочетания полей. Затем к каждойгруппезаписейприменяется некоторая цепочка
узлов обработки(как в Скрипте). Результаты обработки объединяются в один набор данных, доступныйв
узлеГрупповая обработка
• Добавьте к узлу Группировка новыйузел –Групповая обработка.
Группы образуются по полю: ProductSub-Category.
• Начальныйи конечныйэтап обработки выберите такие же,
как и в узлеСкрипт. Соответствие полейпо умолчанию изменять не нужно
• Результирующая таблица (фрагмент)
показана на рисунке
56
Исходная таблица
Группа А
Группа X
Обработка
Обработка
Конечная таблица…
поледля определения групп начальныйи конечный этап обработки
Отчет по приросту продаж
• Добавьте на панель отчетов отчет в виде OLAP-куба
по динамикепродаж (оборот, прирост оборота в абсолютных
единицах и в процентах)
57
Фильтрация отчета куба по значению фактов
• С помощью кнопки «Селектор» на панели инструментов
куба отберите 3 лидирующие по обороту категории товаров
58
Пропущенные периоды
• Вернитесь к OLAP-кубу, построенномув обработчике
Преобразование даты. Запустите мастер визуализации
и добавьте в список измерений дату в формате
год + месяц
• Добавьте даты в форматегод + месяц в строки.
Добавьте в столбцы 2 измерения: ProductCategory и ProductSub-Category
• На уровнетоварных категорийданные в таблице присутствуютво всех периодах. Еслиразвернуть
измерение подкатегорий, то видно, что в некоторыепериоды продажинекоторыхподкатегорий
отсутствуют. Втаблице появляются пустыеячейки(например, Bookcases)
• Еслитеперь убрать измерение категорийи отфильтровать только подкатегорию
Bookcases, то в наборе данныхостанутся только те периоды, когда этот товар
продавался (см. рисунок справа)
• Еслиза период нет продаж, то при группировкетакойпериод исключается.
Такое поведениезатрудняет анализ временных рядов, т.к. в большинстве
случаев требуется, чтобы периоды шли последовательно ибез пропусков
59
Восстановление пропущенных периодов
• Чтобы обеспечить корректность анализа временныхрядов, может потребоваться «восстанавливать»
пропущенныепериоды. Принцип восстановления состоит в том, чтобы получить сначала список всех
сочетаний периодов и продуктов на нужном уровне детализации, а затем дополнить этотсписок
даннымио продажахиз исходного набора данных. В периодах без продаж будутпустыезначения,
которыенадо заменить на нули
• Список всех сочетаний продуктов и периодов можно получить непосредственно из исходного набора
данных. Еслисгруппировать данныетолько по продукту, то получится список всехпродуктов. Если
сгруппировать данныетолько по периоду, то получится список всехпериодов. В дальнейшем можно
перемножить эти списки (декартово произведение) и получить всевозможныесочетания продуктов и
периодов
• Добавьте после узла Преобразованиедаты две группировки:
только по месяцам и только по названиям продуктов.
Факты в группировкевыбирать не нужно, только измерение
• Результатпоказанна рисунке внизу
60
Восстановление пропущенных периодов
• Получив спискипродуктов ипериодов, мы
можем построить декартово произведение.
Для этого добавьте послесписка продуктов
обработчик Слияние с узлом
• Укажите тип слияния: полноевнешнее
соединение, узел связи – список периодов
• Ключевыеполя для соединения не задавайте
• В списке полейдля результирующего
набора данныхвыберите все поля и
укажитеимена/метки, как на рисунке
• В результате умножения получилась
большая таблица со всеми сочетаниями
продуктов и периодов
61
Данные о продажах товаров по месяцам
• Используя узел Группировка, получитеоборотпо каждому товару с детализациейдо месяца. Фрагмент
этой таблицы показанна рисунке. Видно, что в таблице с фактическими продажамистрок меньше
• Вернитесь к узлу со всеми сочетаниями товаров и периодов. Добавьте после
него обработчик Слияние с узлом, в котором присоединитетаблицу
с фактическимипродажамитоваров по месяцам, полученную выше.
Тип соединения – внешнее левое (мы хотим сохранить все сочетания продуктов ипериодов, дажеесли
не было продаж). Ключидля соединения – название продукта и дата. Для результирующего набора
данныхвыберите
поля, показанные
на рисунке
62
Восстановление пропущенных значений
• На предыдущем этапе мы получили
таблицу со всеми сочетаниями товаров
и периодов. Однако, если за период
не было продаж, то в таблице будет
неизвестное значение оборота
• Чтобы заменить пустые значения, можно
воспользоваться узлом: Замена данных
• Добавьте к таблице, полученной
на предыдущем шаге узлы: Замена данных
(замените пустые значения в поле Sales на 0)
и Настройка набора данных (удалите старое
поле Sales и измените имя/метку поля
с заменой на Sales)
• Результат показан на рисунке
63
Отчет по продажам на основе восстановленных данных
• Используя узел Слияниес узлом, добавьтев полученныйна предыдущем шагенабор данных
информацию о категориии подкатегориипродукта. Вам потребуется вначалеполучить список продуктов
с указанием категориии подкатегориина основе исходной таблицы данных.
• Добавьте на панель отчетов
отчет в виде OLAP-куба
с динамикойпродаж
по месяцам в разрезе
категорий, подкатегорий
и отдельныхпродуктов
• Убедитесь в том, что теперь
при просмотре
детализированныхпродаж
в периодах, когда не было
продаж, содержатся
не пустые значения а нули
64
Что дальше?
• В этом тренинге вы познакомились с базовыми возможностями системы Deductor,
полезными для преобразования данных и подготовки отчетов. В действительности
возможности этой системы гораздо шире – как в подготовке данных (очистка, сглаживание,
удаление некорректных значений), так и в анализе (визуализация, моделирование)
• Если вас заинтересовала тема инструментов бизнес-аналитики, - рекомендуем прочитать
книгу Паклина Н.Б. Бизнес-аналитика: от данных – к знаниям
• На сайте компании доступен бесплатный вводный курс по работе с системой Deductor.
Адрес: https://basegroup.ru/service/learning/lms-old
65

Трансформация данных в Deductor Studio

  • 1.
    Трансформация данных Узлы длятрансформации данных в Deductor Studio v 0.4 @ 02.06.16 Заходякин Г.В. postlogist@gmail.com
  • 2.
    План занятия • Постановказадачи • Загрузка и предварительный анализ данных • Замена данных и настройка набора данных • Преобразование дат • Интерактивные отчеты: OLAP-кубы и диаграммы • Трансформация данных: группировка, калькулятор, фильтрация, квантование, кросс-таблицы • Слияние наборов данных • Скрипты и групповая обработка 2
  • 3.
    Постановка задачи • Вэтом тренинге будет разработан сценарий для анализа результатов продаж компании-дистрибьютораофисных принадлежностей. На основе исходных данных (строк заказов) будут построены интерактивные отчеты для анализа продаж и проведена сегментация клиентов компании по прибыльности. На основе дополнительных данных о возвратах заказанной продукции, будет проведен анализ клиентов по риску возврата • Для выполнения заданий вам потребуются файлыданных, которые можно загрузить по ссылке: https://drive.google.com/open?id=0Bx3yHjmZqyjdaWJmSDB5REFUM0k 3
  • 4.
  • 5.
    Данные в текстовыхфайлах • Учебная версия (Deductor Academic) позволяетработать с даннымив следующихформатах: текстовые файлы (txt, csv); двоичныефайлы deductor datafile (ddf); хранилищеданных Deductor Warehouse. Текстовые файлы – наиболее универсальныйформатобмена данными, поэтому мы будем использовать именно его. • CSV-файл – это обычныйтекстовыйфайл, в строкахкоторого содержатся записи, подобныезаписям в таблице реляционнойбазы данных. Все данные (в т.ч. даты, числа, логическиезначения) представлены в виде текста, при загрузкев аналитическую программу необходимо преобразовывать их обратно в соответствующиеформаты. Эта операция требует времени и дополнительныхнастроек, поскольку на разныхсистемах текстовое представлениедат и чисел отличается. • Запись состоит из набора полей, для разделения которыхиспользуется специальныйсимвол (одини тот же во всем файле). Обычно таким символом для CSV-файлов, созданныхв Windows с русскими региональныминастройкамиявляется точка с запятой. При правильном указанииформата файла и разделителейполя, содержащиеоднородныеданные, образуютодин столбецв таблице. Обычно в первой строке CSV-файла содержатся заголовкистолбцов. Встречаются такжефайлы, гдеразделителине используются, а таблица данныхотформатирована так, чтобы каждыйстолбецначинался с определенной позиции в строке. Призагрузкенужно указать начальную позицию для каждого столбца. Этотформатмы использовать не будем, т.к. он встречается реже. 5
  • 6.
    Формат файла • Чтобыправильно задать формат данныхпри импорте, необходимо изучить структуру файла данных • Рассмотрим в качестве примера одну из строк файла sales.csv: 18606;NotSpecified;0,01;2,88;0,5;2;JaniceFletcher;Regular Air;Corporate;OfficeSupplies;Labels;Small Box;Avery 49;0,36;Central;Illinois;Addison;60101;28.05.2012;30.05.2012;1,32;2;5,9;88525 • Нужно обратить внимание на следующее: – какойразделитель используется для полей(здесь это точка с запятой) – какойразделитель используется для целойидробнойчасти числа (здесь – запятая) – используются ликавычкидля ограничения текстовыхстрок (здесь – не используются) – какойформатдат используется (здесь –традиционный российскийформат: ДД.ММ.ГГГГ) – как представлены значения Истина и Ложь для логическихполей (здесь их нет) • Выяснив эту информацию, можно приступить к загрузкефайла в Deductor Studio 6
  • 7.
    Мастер импорта 7 • Чтобызагрузить данныедля анализа, необходимо добавить в сценарий узел импорта. Для добавления этого узла, выберите корневойузел проекта и выполнитекоманду: Мастеримпортав контекстном меню корневого узла, либо воспользуйтесь кнопкойна панелиинструментов • На первом шаге мастера импорта выберите тип источника: Text • На втором шаге укажитепуть к файлу данных. Рекомендуем всегда использовать относительныйпуть (указывать толькоимяфайла). В противном случаеваш сценарий не будет работать припереносе на другойкомпьютер илив другую папку. Еслипуть неуказан, то файл долженнаходиться в той же папке, гдесохранен проект Deductor • В данном случае все остальные настройки оставьте по умолчанию
  • 8.
    Формат разделителей иданных • На 3-м шагемастера можно выбрать форматфайла (с разделителями), разделителидля строк, десятичныхдробей, дат, времени, а также форматы представления значений. Это очень важный этап, поскольку принеправильном указанииэтих параметров данные будутзагружены некорректно. • Убедитесь, что в вашем сценарии настройки соответствуютпоказанным на рисунке 8
  • 9.
    Формат разделителей столбцов •На 4 шаге мастера импорта выберите в качестве разделителя столбцов точку с запятой. Еслиразделитель указаннеправильно, то все данные сливаются в один столбеци загрузка невозможна 9
  • 10.
    Параметры столбцов • На5 шаге мастера импорта необходимо настроить параметры столбцов набора данных: указать имя, метку, тип и вид данных. Параметр «Назначение» можно пока не использовать • Имя столбцаиспользуется для ссылкина данные в этом столбцев расчетных формулахи узлах проекта. Имена столбцов в Deductor не могут содержать русскихбукв и пробелов, поэтому все не соответствующиеэтим требованиям имена при загрузкезаменяются на COL1, COL2 ит.п. Всем узлам, которыев дальнейшем предполагается использовать в расчетныхформулах, необходимо задать понятныеимена • Тип данных (Целый, Вещественный, Дата/Время, Логический, Строковый) необходимо выбирать в соответствии с теми данными, которыесодержатся в этом столбце. Автоматическоераспознавание типа данныхможет быть неправильным (особенно для числовыхи логическихполей) • Вид данных определяет, какиедействия над даннымиимеют смысл: – Непрерывные данные выражают величину или количество чего-либо и их можно агрегировать (складывать, усреднять и т.п.). Примерами непрерывных данных являются: Цена, количество, % скидки. – Дискретные данные представляют собой идентификаторы (коды) объектов или групп. Примерами таких данных являются: код товара, группа товаров, класс товара по оборачиваемости (A, B, C), категория клиента (VIP, юр.лицо, физ.лицо) и т.п. Даже если дискретное поле содержит числа (коды объектов), математические операции с этими числами не имеют смысла • Настройки, которыенеобходимо сделать в данном сценарии, приведены в таблице на следующем слайде 10
  • 11.
    Параметрыстолбцов для набораданных sales 11 Имя Метка Тип данных Вид данных Примечание RowID Row ID Целый Дискретный Код строки заказа OrderPriority Order Priority Строковый Дискретный Приоритет заказа Discount Discount Вещественный Непрерывный Скидка UnitPrice Unit Price Вещественный Непрерывный Цена за единицу товара ShippingCost Shipping Cost Вещественный Непрерывный Затраты на доставку товара клиенту CustomerID Customer ID Целый Дискретный Код клиента CustomerName Customer Name Строковый Дискретный Название клиента ShipMode Ship Mode Строковый Дискретный Способ доставки CustomerSegment Customer Segment Строковый Дискретный Сегмент клиента ProductCategory Product Category Строковый Дискретный Категория продукта ProductSubCategory Product Sub-Category Строковый Дискретный Подкатегория продукта ProductContainer Product Container Строковый Дискретный Вид упаковки ProductName Product Name Строковый Дискретный Название продукта ProductBaseMargin Product Base Margin Вещественный Непрерывный Наценка Region Region Строковый Дискретный Регион клиента StateOrProvince State or Province Строковый Дискретный Штат/область клиента City City Строковый Дискретный Город клиента PostalCode Postal Code Строковый Дискретный Почтовый индекс клиента (продолжениена следующем слайде)
  • 12.
    Параметрыстолбцов для набораданных sales • Посленастройки параметров полейперейдите на следующийшаг и запуститепроцесс импорта 12 Имя Метка Тип данных Вид данных Примечание PostalCode Postal Code Строковый Дискретный Почтовый индекс клиента Order Date OrderDate Дата/время Дискретный Дата размещения заказа ShipDate Ship Date Дата/время Дискретный Дата отгрузки заказа Profit Profit Вещественный Непрерывный Прибыль от продажи Quantity Quantity ordered Целый Непрерывный Число единиц товара Sales Sales Вещественный Непрерывный Выручка от продажи OrderID Order ID Целый Дискретный Код заказа
  • 13.
    Настройка способов отображения •Послеимпорта данныхавтоматически запускается мастер визуализации, которыйпозволяетвыбрать способ отображения набора данных • Оставьте выбранныйпо умолчанию способ отображения – табличный • Послезавершения мастера импорта окно программы принимаетвид, показанныйна рисунке: в дереве проекта добавился узел импорта из текста, в области визуализаторов отображается таблица данных, загружено 9426 строк 13
  • 14.
    Предварительный анализ данных•Перед использованием загруженныхданных, необходимо оценить их характеристики: диапазоны значений и распределениедля непрерывныхполей, набор возможныхзначений и частоты для дискретныхполей. Также важно знать, какие поля содержатпропущенныезначения, нетипичные, «странные» значения. Все это можно сделать с помощью инструмента «онлайн-статистика», доступный на панели инструментов визуализатора «Таблица» • Онлайн-статистика показываетдиапазоны ираспределение значений в каждом столбцетаблицы. Для дискретныхполей столбикив полеГистограмма отражаютчастоты каждого уникального значения (т.е. сколько раз это значение встречается в столбце). Для непрерывных полейздесь отображается гистограмма • Характеристики: минимум, максимум, среднеепозволяютоценить размах диапазона значений и его центр. Для текстовыхполейэти характеристики относятся к длине строки. Если, например, мы видим отрицательное значение количества – есть вопросы к качеству и правильностизагрузкиданных. • Стандартное отклонение и сумма квадратов позволяютоценить степень разброса значений • Для дискретных полейвыводится количество уникальныхзначений поля. Например, мы видим, что существует6 разныхприоритетов заказа, причем 5 из них встречаются примерно с одинаковойчастотой, а один – очень редко • Число пустыхзначений – важныйпоказатель, поскольку пропущенныезначения вызываютпроблемы при расчетах и должны обрабатываться специальным образом, либо отфильтровываться 14
  • 15.
    Предварительный анализ данных •По клику в поле Гистограмма, отображается расширенная гистограмма илистолбиковая диаграмма • Например, мы видим, что распределение затрат на доставку асимметрично: очень много относительно небольшихзначений, однако изредка встречаются значения, превышающие«типичный» диапазон: 0.5- 25 у.е. в несколько раз • Выбрав полеShipMode, можно видеть, что самыйпопулярныйспособ доставки– авиаперевозки по стандартному тарифу (Regular Air). • При большом количествекатегорийудобно отсортировать столбикипо убыванию частоты (клик в заголовкеполя Кол-во) 15
  • 16.
    Вопросы для предварительногоанализаданных • Наиболее типичные вопросы для предварительного анализа данныхнацелены на выявлениевозможных проблем призагрузкеили ошибок в источнике данных: 1. Являются лидиапазоны значений для непрерывныхполейвозможнымис точкизрения практики? 2. Есть ли поля с пропущеннымизначениями? 3. Есть ли поля, содержащиетолько одно значение в каждойстроке? 4. Есть ли поля, содержащиеуникальныезначения (число значений совпадаетс числом строк в наборе) 5. Есть ли нетипично частые или нетипично редкие значения? Это можетсвидетельствовать об ошибках– например, опечатках привводе данных. • Задание: изучите распределения значений во всех столбцахнабора данныхи ответьте на перечисленные выше вопросы. Есть ли подозрительныеполя? 16
  • 17.
    Результаты предварительного анализа •Уникальным полем в этом наборе данных является код строки – Row ID. Коды заказов не уникальны. • В таблице содержатся данные о 1263 продуктахи2703 клиентах • В полеProductBase Margin содержится 72 пропущенныхзначения • Количество и выручка находятся в разумныхпределах • Прибыль по некоторым позициям заказов отрицательна • ПолеOrder Priority содержит нетипичные значения: приоритет: «Critical» представленв таблице частот2 раза, причем второй вариант встречается в таблице только один раз • При более пристальном рассмотрении, можно видеть, что во втором случае в концесодержится пробел (в результате ошибки ввода). Эту проблему можно устранить. 17
  • 18.
    Замена данных• ВDeductor Studio невозможно напрямую вводить или изменять данныев таблице. Эта система ориентирована на автоматическую обработку данныхбез участия человека. Однако можно изменять данныес помощью обработчика «Замена данных» • Выберите в дереве проекта ранее добавленныйузел импорта текстового файла. В контекстном меню этого узла выберите команду: Мастеробработки. Можно воспользоваться аналогичнойкнопкойна панели инструментов • В разделеТрансформацияданных выберите обработчик: Заменаданных • Для поля Order Priority укажитев таблице замены данных, что «Critical » (с пробелом в конце) нужно заменять на «Critical» (без пробела). Для добавления значения в таблицу рекомендуется использовать функцию «список значений» • Красным цветом в списке полейвыделены поля, для которыхиспользуется замена значений • На следующихшагахмастера никаких настроек не требуется 18
  • 19.
    Настройка набора данных •Послезамены в набор данныхдобавилось поле: Order Priority_REPLACE. В статистике видно, что категорий приоритетности теперь 5 и все они имеют примерно одинаковую частоту • Проблема устранена, поэтому старое полеOrder Priority можно удалить • Операции по удалению, переименованию, изменению типа данныхили порядка столбцов можно выполнять с помощью обработчика: Настройканабора данных • Удалите старое полеOrder Priority, переименуйте полеOrder Priority_REPLACEв Order Priority и передвиньте его на место старого поля • Чтобы удалить полеиз набора, выберите его в спискеи укажитеНазначение: Неиспользуемое 19
  • 20.
    Преобразование даты ивремени • В текущем наборе данныхдаты размещения и отправкизаказа указаны с точностью до одного дня. При анализе тенденций это слишком короткийинтервал, обычно в таком случае необходимо агрегирование датдо недель, месяцев или кварталов • Преобразовать дату к нужному уровню детализации можно с помощью обработчика: Дата и время • Добавьте к узлу Настройка набора данных еще один обработчик – Дата и время • Выберите в спискеполеOrder Date. ВыберитеНазначение: Используемое иукажите, какиекомпоненты даты следует выделять: Год+Квартал и Год+Месяц (в формате Дата) • В наборе данных будутсозданы столбцы с округленнымидо требуемойдетализациидатами • Результатпоказанна рисунке справа: все даты заменены на первый день месяца/квартала • При необходимости, вы можететакже выделить определенныйкомпонентдаты (месяц, год, квартал, неделю, день недели). Это можно использовать, например, для анализа сезонности 20
  • 21.
    OLAP-куб • OLAP-куб вDeductor – это визуализатор, которыйпозволяет в интерактивной формепредставлять данныес требуемым уровнем детализации и анализировать их • Выберите в контекстном меню узла Преобразование даты и времени или на панелиинструментов команду: Мастер визуализации • В мастере визуализации выберите способ отображения в виде OLAP-куба • На следующем шагесделайтеполя: Customer Name, Customer Segment, Product Category, Product Sub-Category, Product Name, Order Date (Год+Квартал) – измерениями; поля: Profit, Quantity Ordered, Sales – фактами; остальныеполя сделайте информационными • При необходимости, можно выделить несколько полей, используя клавиши Shift и Ctrl и изменить назначение для всех выделенныхполейсразу 21
  • 22.
    Назначения полей куба •Измерения и факты участвуют в построении куба. Измеренияпозволяют задавать нужный уровень детализации и анализировать данные. • Факты – это количественныепоказатели некоторого процесса (в нашем случае– процесса продаж), которыебудут представляться в разрезе выбранных измерений. • Информационные поляв кубе не отображаются, но их можно увидеть в детализации ячейки куба. • Неиспользуемые поляскрываются из набора данных. Это можно использовать для упрощения структуры данныхи экономиипамяти при большом объеме данных 22
  • 23.
    Настройка измерений ифактов • На следующем шагемастера визуализации выберите структуру измерений куба, как показано на рисунке. По строкам таблицы мы создаем иерархию измерений: на верхнем уровне – сегментклиента, на нижнем – отдельныеклиенты • На следующем шагевыберите, какие факты будутдоступны в кубе и какие агрегирующиефункциик ним должны применяться. Выберите все факты: Profit, Quantity Ordered, Sales. По умолчанию выбирается агрегирующая функция: Сумма • Полученныйотчетпоказанна рисунке 23
  • 24.
    Детализация данных • Вцелом, по каждому сегменту клиентов прибыль положительна • Результаты продаж по каждому клиенту из выбранного сегмента можно увидеть, нажав на кнопку: + рядом с названием сегмента, либо можно детализировать сразу все сегменты, воспользовавшись кнопкой+ в заголовкетаблицы • Можно видеть, что некоторые клиенты оказались убыточными • Чтобы увидеть причины, можно посмотреть все строки заказов, на основе которыхполучилась каждая сумма. Для этого выберите интересующую вас ячейку и нажмите на кнопку: детализация на панели инструментов 24
  • 25.
    Диаграмма и сохранениеконфигурации отчета • Данные можно представить в наглядном виде, нажав кнопку: Показать/скрыть диаграмму на панели инструментов • Диаграмму можно переместить (мышью за заголовок) и пристыковать в нужную позицию • Сохраните текущее представление отчета, нажав на кнопку: (управлениеконфигурациями) • В дальнейшем можно быстро вернуться к текущему виду отчета, выбрав конфигурацию из списка 25
  • 26.
    Изменение конфигурации куба •Теперь проведем анализ прибылиот продаж в разрезе клиентов и товарныхкатегорий. Нажав на кнопку: Настройка фактов, оставьте выделение только для факта: Profit • Перетащите измерение ProductCategory в область заголовков столбцов • Скройте (вытащите из таблицы) измерение Customer Name • Результатпоказанна рисунке справа 26
  • 27.
    Изменение диаграммы • Используякнопкиформатирования на панелиинструментов кросс-диаграммы, получитевид диаграммы, показанныйна рисунке • Сохраните конфигурацию отчета: «Продажипо категориям и сегментам» • Попробуйтепереключаться между сохраненнымиконфигурациямиотчета 27
  • 28.
    Динамика продаж • Заменитев областистрок измерение Customer Segment на измерение Order Date (Год + Квартал), для этого перетащите новое полеповерх старого, курсор должениметь вид, как на рисунке) • Выберите тип диаграммы: Линии, чтобы получить вид кросс-диаграммы, как на рисункевнизу • Сохраните конфигурацию отчета: Динамикапродаж по категориям 28
  • 29.
    Сохранение отчетов • Узлысценария, в которыхсодержатся важныерезультаты анализа, можно добавить в список отчетов. В этом случаеих не потребуется искать в дереве сценария • Включитеотображение панели отчетов и перейдите на вкладку панелиотчетов • Нажав на кнопку: Добавитьузел, добавьтеузел с построенным на предыдущем этапекубом в список отчетов • Переименуйте отчет в: Динамикапродаж • Запустив мастер визуализации для отчета Динамика продаж, скройте визуализатор Таблица, оставив только куб • Узел можно добавлять в список отчетов несколько раз. В контекстном меню отчета выберите: Копировать узел. Переименуйте копию отчета в Прибыльпо сегментам и выберите для куба сохраненную конфигурацию: Прибыль, количествои оборот по сегментам • Отчеты можно организовать с помощью папок 29
  • 30.
    Группировка • Визуализатор кубагрегируетданные только для отображения. Структура набора данныхпри этом не изменяется. Чтобы агрегировать данныев наборе необходимо использовать обработчик: Группировка • Переключитесь на панель сценариев и добавьте к узлу: Преобразование даты еще один узел – Группировка • Мы будем анализировать прибыльность каждого клиента, поэтому необходимо вычислить суммарную прибыль в разрезе каждого клиента • Настройка группировкианалогична настройкекуба: полеCustomer Name необходимо сделать измерением, а поля: Profit, Quantity Ordered, Sales –фактами, с агрегирующейфункцией– Сумма • Результатгруппировкипоказанна рисунке внизу 30
  • 31.
    Сортировка набора данных •В таблице клиенты упорядочены по алфавиту. Можно отсортировать ее по прибыли(клик по заголовку столбца), однако порядок строк изменится только для отображения. Чтобы изменить порядок строк в наборе данных, необходимо использовать обработчик: Сортировка • Добавьте обработчик Сортировка послеузла Группировка • В настройках укажите, что сортировку необходимо вести по столбцу Profit, по убыванию • Результатпоказанна рисунке внизу 31
  • 32.
    Фильтрация данных • Разобъемвсех клиентов на две группы: приносящиеприбыль и убыточные. Этого можно добиться, отфильтровав строки набора данныхпо значению поля Profit • Добавьте к отсортированному набору данныхузел: Фильтрация • В настройках фильтрации, укажитеполеProfit и условие: <= 0 • Сделайте копию узла Фильтр (команда Копировать узел в контекстном меню) • Переименуйте копию, как показано на рисунке • Выберите в контекстном меню копиикоманду: Настроить и поменяйте условиеотбора на: > 0 32
  • 33.
    Вычисляемый столбец • Введемобозначения групп клиентов: D – убыточные, A, B, C – прибыльные(по убыванию прибыльности) • Проще всего определить группу для убыточных клиентов. Для всех отфильтрованныхклиентов с отрицательнойприбылью необходимо назначить одну и ту же группу –D • Добавить новый вычисляемыйстолбецв набор данныхможно с помощью узла: Калькулятор • Добавьте после узла: Фильтр ([Profit] <= 0) узел Калькулятор • В области Выражениевведитеформулу для вычисления нового столбца – строковую константу “D” (в кавычках) • Полеимеет строковый тип данных, поэтому, нажав на кнопку: Редактировать параметры выражения, укажите этот тип данных и задайте имя и метку поля, показанныена рисунке • Всегда задавайте понятные имена и метки для вычисляемыхстолбцов! 33
  • 34.
    Нарастающий итог исумма по столбцу • Для разделения прибыльныхклиентов на группы A, B, C, используем принцип Парето и нарастающий итог по полю Profit • Добавьте к узлу: Фильтр ([Profit] > 0) обработчик Калькулятор • Задайте для нового поля тип данных: Вещественный, имя: CumulativeProfitи метку: Cumulative Profit • Формула, показанная на рисунке внизу, вычисляетпроцентныйвклад каждого клиента в общую прибыль. Поскольку, как ив SQL, для вычисления доступны только значения из текущей строки набора данных, для расчета вклада с нарастающим итогом приходится использовать специальную функцию – CumulativeSum(). Также, чтобы посчитать общий итог в знаменателедроби, нужна еще одна функция – Stat(), которая вычисляетстатистику по столбцу (в данном случае– сумму). • Список функций по категориям доступенв правой части окна калькулятора. • Для предотвращения опечаток рекомендуем принаборе формул всегда использовать функцию автодополнения (Ctrl-пробел), которая позволяетбыстро выбирать из списка имена полей и функцийпо нескольким начальным символам • Убедитесь, что в рассчитанном столбцеCumulative Profitпоследнеезначение - 100 34
  • 35.
    Квантование • На основевклада в общий итог по прибыли, разделим всех клиентов на группы –A (первые80%), B (до 95%) иC (оставшиеся 5%) • Для разделения можно использовать калькулятор и функцию IF(), однако прощеиспользовать другой обработчик – Квантование. Этот узел позволяет разбить значения поля на дискретныекатегории согласно установленным границам каждой категории • Добавьте после узла Калькулятор, гдебыл рассчитан вклад в общий итог обработчик: Квантование • Деление будет производиться по полю Cumulative Profit.Настройкиквантования и границы интервалов показаны на рисунке 35
  • 36.
    Объединение наборов данных •Мы классифицироваливсех клиентов, однако результаты содержатся в разных таблицах. • Чтобы объединить их в одну, добавьте после узла Квантование обработчик: Слияние с узлом • Выберите тип слияния: Объединениеиузел связи: Калькулятор (гдевычислялась группа для убыточныхклиентов). На экране схематично показано, как будутобъединены таблицы: вторая будет добавлена послепервой) 36
  • 37.
    Объединение наборов данных •На следующем шагенеобходимо установить соответствие полей. В данном случае, поскольку число столбцов одинаково и почти все имена совпадают, соответствие установлено автоматически. В общем случаенеобходимо выбрать соответствующееполе для набора в узлесвязииз списка. Для объединения таблиц требуется, чтобы у них былиоднотипныеполя • Далее требуется выбрать, какие поля оставить в результирующем набореданных. Задайте для поля группы имя и метку, указанныена рисунке 37
  • 38.
    Форматирование таблицы • Поумолчанию числа в таблицах отображаются с максимальнойточностью. Это затрудняетанализ отчетов из-за большого количества незначащихцифр. Формат представления чисел в таблице и набор отображаемыхстолбцов можно настроить, нажав на кнопку: Настройкаполей на панелиинструментов таблицы. • Получитеформаттаблицы для списка клиентов с указанием группы, показанныйна рисунке 38
  • 39.
    Добавление куба исохранение отчета • Запустив мастер визуализации, добавьте визуализатор OLAP-куб со отчетом, показанным на рисунке • Добавьте этот узел на панель отчетов в папку Интерактивные отчеты по продажам и сделайте так, чтобы при выбореотчета сразу открывался куб 39
  • 40.
    Продолжение следует • Сохранитесвой проект в той же папке, где и файлы данных. Он вам понадобится в следующий раз! 40
  • 41.
  • 42.
    Анализ возвратов • Вэтой части тренинга мы создадим сценарий, позволяющий анализировать долю возвратов в разрезе отдельных клиентов и групп. Выполненный на первом этапе анализ будет дополнен данными о возвратах, находящихся в файле returns.csv • Откройте разработанный в I части сценарий. Используя мастер импорта, загрузите файл returns.csv в новую ветвь сценария. – При импорте не забудьте отредактировать путь к файлу, оставьте только имя файла – Для столбца Order ID при импорте укажите имя OrderID, целочисленный тип данных и дискретный вид данных – Для поля Status будет автоматически выбран строковый тип данных и правильное имя • Результат импорта данных показан на рисунке 42
  • 43.
    Добавление данных озаказах • В файле с возвратами перечислены лишь коды заказов, которыебыливозвращены клиентами. Для анализа нам потребуются исходныеданные о продажах. Ониуже есть в сценарии, необходимо воспользоваться обработчиком «Слияниес узлом» идополнить таблицу в узлезагрузкивозвратов даннымио заказах • Выбрав узел, в котором загружались данные о возвратах, запуститемастер обработки и добавьте обработчик «Слияние с узлом». • Выберите тип слияния: Внешнее правое соединение. Левая таблица - это узел, к которому добавляется обработчик. Правая таблица – это узел связи (см. рисунок внизу) Внешнее правое соединение гарантирует наличие всех записей из правой таблицы, т.е. всех заказов в результирующейтаблице • Укажите ключевоеполедля связи: Order ID • Выберите для результирующейтаблицы поля, показанныена рисункесправа. Задайте метки и имена полейкак на рисунке 43
  • 44.
    Замена пропущенных значений •В результате соединения наборов данныхполученсписок всех строк заказов. Еслизаказ был возвращен, то в столбцеStatus указано Returned (эти данные попалив таблицу из файла returns.csv). Для техзаказов, которыене были в спискевозвращенных, в столбце Status пропущенноезначение • С помощью обработчика Заменаданных замените пустыезначения на Completed • Послезамены, в набор данных добавляется новыйстолбецStatus_REPLACE. C помощью обработчика Настройка набора данных, измените имя и метку этого столбца на Status и удалитестарый столбецStatus с пустымизначениями. Результат показанна рисунке 44
  • 45.
    Кросс-таблица• Кросс-таблица работаетаналогично OLAP-кубу и позволяетподсчитать на основе исходного набора данныхстатистику в разрезе двух и более измерений. Однако, в отличие от визуализатора OLAP-куб, кросс-таблица изменяет сам набор данных, а не просто его визуальноепредставление • Добавьте после узла Настройка набора данных обработчик кросс-таблица. Выберите поля для строк, столбцов и фактов, как показано на рисункесправа • Выберите для факта OrderID агрегацию – Количество уникальных. Поскольку в таблицеданные представлены на уровне строк заказов, коды заказов дублируются • На следующем шагемастера отключите вывод столбцов для пропущенных значений • Результирующая таблица (отсортированная по убыванию возвратов) показана на рисунке внизу справа 45
  • 46.
    Замена пропущенных значений •В полученной на предыдущем шаге таблице есть клиенты, которые не вернули ни одного заказа. Для таких клиентов в столбце Returned содержатся пропущенные значения. • С помощью узла Калькулятор, добавьте новый столбец, в котором пропущенные значения заменяются на нули. Для решения этой задачи удобно использовать функцию NVL(), которая заменяет пустые значения на указанное пользователем (здесь – на 0), а непустые возвращает без изменения • Обратите внимание, что имя исходного поля с возвратами – C_2 (автоматически создано кросс-таблицей) • Для нового столбца задайте имя и метку: Returned, тип – целый • Результат показан на рисунке внизу справа 46
  • 47.
    Расчет доли возвращенныхзаказов • С помощью еще одного узла Калькулятор, добавьте столбец, в котором содержится процент возвращенных клиентами заказов • Задайте имя нового поля: PercentReturned и метку: Percent Returned, тип - вещественный. • Формулу для расчета запишите самостоятельно • Результат показан на рисунке (таблица отсортирована по убыванию % возвратов) 47
  • 48.
    Добавление данных окатегории прибыльности • К полученнойна предыдущем шагетаблице добавьте обработчик Слияние с узлом • В настройках укажитеузел связи – итоговая таблица с результатами ABC-анализа клиентов (см. рисунок), тип соединения – внутреннее (нет разницы, какой вид соединения использовать, т.к. в обоих наборах данныхприсутствуютвсе клиенты) • Ключом для соединения таблицявляется поле Customer Name • Выберите столбцы для результирующейтаблице и задайте для них метки и имена, как показано на рисункевнизу (полеReturned – это рассчитанное нами полебез пропущенныхзначений, старое полес именем C_2 не нужно включать в результирующую таблицу) 48
  • 49.
    Отчет по возвратам •Добавьте на панель отчетов OLAP-куб с отчетом по возвратам в разрезе категорий и названий клиентов (на основе последней таблицы). Обратите внимание, что процент возвратов по категории нельзя суммировать – выберите в качестве агрегирующей функции для этого факта среднее 49
  • 50.
  • 51.
    Работа с временнЫмирядами в Deductor • Временной ряд представляетсобойпоследовательность наблюдений, зафиксированныхчерез определенныепромежутки. Внаборе данных эти наблюдения оказываются в последовательныхстроках набора данных. При анализе временных рядов интерес представляетсравнение последовательных значений, однако при работе узла Калькулятор возможендоступ только к значениям в текущей строке, либо к статистике по столбцу в целом (с использованием функцииStat) • Для обеспечения возможностиработы с прошлымиилипоследующимизначениямивременного ряда в Deductor используется обработчик Скользящее окно, которыйпозволяетизвлечь несколько соседних значений временного ряда и поместить их в текущую строку • Параметрамискользящего окна являются глубина погружения (количество прошлыхпериодов, включенныхв окно) и горизонтпрогнозирования (количество будущихпериодов). В наборе данных создаются дополнительныестолбцы в заданном этими параметрамиколичестве. Например, в столбце observation-1 содержатся прошлыезначения столбца observation (смещениена 1 период), а в столбце observation+1 – будущиезначения (также со смещением на 1 период). • При смещении в начале и в конце таблицы возникаютпустыеячейки, которыеобычно удаляются из набора данных. При необходимости, их можно оставить, выбрав в настройках узла соответствующий параметр 51
  • 52.
    Расчет прироста: продажиза квартал • В качестве примера, рассчитаем для каждойтоварной группы (ProductSub-Category)величину прироста объема продаж за квартал • Основойдля выполнения этого анализа является набор данныхв узлеПреобразование даты (Order Date: Год + Квартал; Год + Месяц) • Используя узел: Группировка, получитетаблицу, показаннуюна рисунке 52
  • 53.
    Расчет прироста: скользящееокно • Сейчас в наборе данныхсодержатся записи обо всех товарныхгруппах. Для правильного расчета прироста необходимо отфильтровать записи только по одной товарнойгруппе(например, Appliances). Добавьте фильтр по полю Product Sub-Category • К отфильтрованному набору данныхдобавьте обработчик Скользящееокно. Для расчета прироста нам необходимо одно прошлоезначение, поэтому установите параметр Глубинапогружения= 1 • Результирующая таблица показана на рисункесправа 53
  • 54.
    Расчет прироста • Используяузел Калькулятор, добавьте в набор данных два столбца, содержащих абсолютное и процентное значение прироста оборота за квартал. В одном узле калькулятор можно добавить сразу несколько столбцов • Результирующая таблица показана на рисунке 54 Имя Метка Тип Формула Growth Growth Вещественный Оборот в текущем периоде – Оборот в прошлом периоде PGrowth Percent Growth Вещественный 100 * (Оборот в текущем периоде – Оборот в прошлом периоде) / Оборот в прошлом периоде
  • 55.
    Узел Скрипт • УзелСкрипт позволяетпрогнать новыйнабор данныхчерез одну и ту же цепочку узлов обработки • В этом примере мы рассчитали приростдля одной из товарныхкатегорий. С помощью скрипта можно получить приростдля другойкатегории, неповторяя необходимую последовательность узлов • Вернитесь к узлу группировкиидобавьте еще один фильтр, отберите любую другуюкатегорию • К таблице данных послефильтра добавьтеузел Скрипт • В качестве начального этапа обработкиукажите узел Скользящее окно • Поскольку имена столбцов в наборах данных совпадают, автоматическивыбрано правильное соответствие полейв исходном и результирующем наборахданных (см. рисунок внизу слева) • В качестве конечного этапа обработки укажитеузел Калькулятор, в котором вы рассчитывалиприрост • Результирующая таблица показана на рисункевнизу справа 55
  • 56.
    Узел групповая обработка •Узел Групповая обработка позволяетразделить набор данныхна группы записейпо значению выбранного поля илисочетания полей. Затем к каждойгруппезаписейприменяется некоторая цепочка узлов обработки(как в Скрипте). Результаты обработки объединяются в один набор данных, доступныйв узлеГрупповая обработка • Добавьте к узлу Группировка новыйузел –Групповая обработка. Группы образуются по полю: ProductSub-Category. • Начальныйи конечныйэтап обработки выберите такие же, как и в узлеСкрипт. Соответствие полейпо умолчанию изменять не нужно • Результирующая таблица (фрагмент) показана на рисунке 56 Исходная таблица Группа А Группа X Обработка Обработка Конечная таблица… поледля определения групп начальныйи конечный этап обработки
  • 57.
    Отчет по прироступродаж • Добавьте на панель отчетов отчет в виде OLAP-куба по динамикепродаж (оборот, прирост оборота в абсолютных единицах и в процентах) 57
  • 58.
    Фильтрация отчета кубапо значению фактов • С помощью кнопки «Селектор» на панели инструментов куба отберите 3 лидирующие по обороту категории товаров 58
  • 59.
    Пропущенные периоды • Вернитеськ OLAP-кубу, построенномув обработчике Преобразование даты. Запустите мастер визуализации и добавьте в список измерений дату в формате год + месяц • Добавьте даты в форматегод + месяц в строки. Добавьте в столбцы 2 измерения: ProductCategory и ProductSub-Category • На уровнетоварных категорийданные в таблице присутствуютво всех периодах. Еслиразвернуть измерение подкатегорий, то видно, что в некоторыепериоды продажинекоторыхподкатегорий отсутствуют. Втаблице появляются пустыеячейки(например, Bookcases) • Еслитеперь убрать измерение категорийи отфильтровать только подкатегорию Bookcases, то в наборе данныхостанутся только те периоды, когда этот товар продавался (см. рисунок справа) • Еслиза период нет продаж, то при группировкетакойпериод исключается. Такое поведениезатрудняет анализ временных рядов, т.к. в большинстве случаев требуется, чтобы периоды шли последовательно ибез пропусков 59
  • 60.
    Восстановление пропущенных периодов •Чтобы обеспечить корректность анализа временныхрядов, может потребоваться «восстанавливать» пропущенныепериоды. Принцип восстановления состоит в том, чтобы получить сначала список всех сочетаний периодов и продуктов на нужном уровне детализации, а затем дополнить этотсписок даннымио продажахиз исходного набора данных. В периодах без продаж будутпустыезначения, которыенадо заменить на нули • Список всех сочетаний продуктов и периодов можно получить непосредственно из исходного набора данных. Еслисгруппировать данныетолько по продукту, то получится список всехпродуктов. Если сгруппировать данныетолько по периоду, то получится список всехпериодов. В дальнейшем можно перемножить эти списки (декартово произведение) и получить всевозможныесочетания продуктов и периодов • Добавьте после узла Преобразованиедаты две группировки: только по месяцам и только по названиям продуктов. Факты в группировкевыбирать не нужно, только измерение • Результатпоказанна рисунке внизу 60
  • 61.
    Восстановление пропущенных периодов •Получив спискипродуктов ипериодов, мы можем построить декартово произведение. Для этого добавьте послесписка продуктов обработчик Слияние с узлом • Укажите тип слияния: полноевнешнее соединение, узел связи – список периодов • Ключевыеполя для соединения не задавайте • В списке полейдля результирующего набора данныхвыберите все поля и укажитеимена/метки, как на рисунке • В результате умножения получилась большая таблица со всеми сочетаниями продуктов и периодов 61
  • 62.
    Данные о продажахтоваров по месяцам • Используя узел Группировка, получитеоборотпо каждому товару с детализациейдо месяца. Фрагмент этой таблицы показанна рисунке. Видно, что в таблице с фактическими продажамистрок меньше • Вернитесь к узлу со всеми сочетаниями товаров и периодов. Добавьте после него обработчик Слияние с узлом, в котором присоединитетаблицу с фактическимипродажамитоваров по месяцам, полученную выше. Тип соединения – внешнее левое (мы хотим сохранить все сочетания продуктов ипериодов, дажеесли не было продаж). Ключидля соединения – название продукта и дата. Для результирующего набора данныхвыберите поля, показанные на рисунке 62
  • 63.
    Восстановление пропущенных значений •На предыдущем этапе мы получили таблицу со всеми сочетаниями товаров и периодов. Однако, если за период не было продаж, то в таблице будет неизвестное значение оборота • Чтобы заменить пустые значения, можно воспользоваться узлом: Замена данных • Добавьте к таблице, полученной на предыдущем шаге узлы: Замена данных (замените пустые значения в поле Sales на 0) и Настройка набора данных (удалите старое поле Sales и измените имя/метку поля с заменой на Sales) • Результат показан на рисунке 63
  • 64.
    Отчет по продажамна основе восстановленных данных • Используя узел Слияниес узлом, добавьтев полученныйна предыдущем шагенабор данных информацию о категориии подкатегориипродукта. Вам потребуется вначалеполучить список продуктов с указанием категориии подкатегориина основе исходной таблицы данных. • Добавьте на панель отчетов отчет в виде OLAP-куба с динамикойпродаж по месяцам в разрезе категорий, подкатегорий и отдельныхпродуктов • Убедитесь в том, что теперь при просмотре детализированныхпродаж в периодах, когда не было продаж, содержатся не пустые значения а нули 64
  • 65.
    Что дальше? • Вэтом тренинге вы познакомились с базовыми возможностями системы Deductor, полезными для преобразования данных и подготовки отчетов. В действительности возможности этой системы гораздо шире – как в подготовке данных (очистка, сглаживание, удаление некорректных значений), так и в анализе (визуализация, моделирование) • Если вас заинтересовала тема инструментов бизнес-аналитики, - рекомендуем прочитать книгу Паклина Н.Б. Бизнес-аналитика: от данных – к знаниям • На сайте компании доступен бесплатный вводный курс по работе с системой Deductor. Адрес: https://basegroup.ru/service/learning/lms-old 65