ProveIT. ETL как конструктор алгоритмов обработки данных.
description
Transcript of ProveIT. ETL как конструктор алгоритмов обработки данных.
![Page 1: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/1.jpg)
Техническая конференция 18 октября 2014 г., г. Казань
ETL как конструктор алгоритмов обработки данных
Иван Пестряков «БАРС Груп», г. Казань
![Page 2: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/2.jpg)
Повторяемость кода
Импорт данных Чтение из БД Чтение из Web-сервиса … Разбор XML Разбор JSON Разбор Excel … Формирование JSON Формирование Excel Формирование XML …. Запись в БД Формирование файла …
Экспорт данных
Конвертации
Трансформации
Пакетные операции
![Page 3: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/3.jpg)
Цепочка обработки (Block, Pipeline)
Чтение файла Разбор Excel Фильтрация
Отправка в web-сервис
Оповещение оператора
• Повторное использование кода блоков
• Независимость от проектной области
• Совместимость блоков по входам/выходам Запись в
таблицу БД
Формирование JSON
![Page 4: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/4.jpg)
Business Intelligence
Business Intelligence или BI бизнес-анализ, бизнес-аналитика. Это инструменты, используемые для преобразования, хранения, анализа, моделирования, доставки и трассировки информации.
ETL методика и инструмент интеграции данных
![Page 5: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/5.jpg)
Инструменты ETL
Extract
Transform
Load
SAS Data Integration Server IBM WebSphere DataStage
SAP Data Integrator Informatica PowerCenter
Oracle Data Integrator Pentaho
JasperETL AlphaBI
процедуры извлечения записи из источников данных и подготовка их к процессу преобразования
преобразование структуры данных; агрегирование данных; сортировка/фильтрация; очистка данных создание новых данных;
перенос данных в структуру хранилища данных, добавление и обновление данных
• Пакетная обработка • Репозитарий ETL-процессов • Метаданные • Циклические загрузки • ~50% трудозатрат по проекту
![Page 6: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/6.jpg)
• Direct3D • DirectShow • ASP.NET
Конвейер
• Все принципы SOLID • Логическая изоляция блоков • Инкапсуляция • Совместимость
Блок Конвейер
• FIFO • Передача управления • Передача метаданных • Контроль ошибок • Хранимый объект
![Page 7: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/7.jpg)
Типы данных
Поток Raw Data
Строка данных Row
Набор строк
Row set
![Page 8: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/8.jpg)
Входы/выходы блоков
Чтение файла с диска
Разбор файла Excel
Фильтр
Накопитель Формирование
JSON Отправка потока в
Web-сервис
![Page 9: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/9.jpg)
Метаданные
• Некоторые блоки являются поставщиками метаданных • Остальные блоки пробрасывают или изменяют метаданные • Любой блок может запросить метаданные у конвейера • Метаданные могут храниться внутри блоков
Код поля Наименование Тип данных
userLogin Логин String
userName Имя String
isActive Активен Boolean
registrationDate Дата регистрации DateTime
![Page 10: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/10.jpg)
Необходимые блоки
• Чтение потока (файл, HTTP, FTP, Blob)
• Разбор потока (JSON, XML, SOAP, Excel, CSV)
• Чтение строки (SQL-запрос, 1С-запрос, генератор)
• Трансформации (join, фильтр, калькулятор, сортировка)
• Преобразования (накопитель, итератор, приведения типов)
• Сериализация (формирование JSON, XML, Excel, CSV)
• Операции с БД (вставка, удаление, вызов Stored procedure)
• Вывод потока (в файл, POST-запрос)
![Page 11: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/11.jpg)
Реализация на C#
Step<I, O, M>
• Один блок = один класс С# • Возможность расширения библиотеки блоков через IoC • Нет зависимостей от бизнес-логики проекта • Служебные классы – Pipeline, Logger, Storage • Сериализованные ETL-процессы хранятся в MongoDB
![Page 12: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/12.jpg)
Классы блоков Step<I, O, M>
Input – набор входов Output – набор выходов Metadata – строка метаданных [Step("Json", "Извлечение (Extract)")]
public class JsonExtract : IStep, BaseStep<StreamStepData, RowStepData, MetaField>
public class StreamStepData { [StepConnectionAttribute(Name = "Поток")] public Stream Stream { get; set; } }
![Page 13: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/13.jpg)
Интерфейс блока
public interface IStep<I, O, M> {
void Execute(I inputData, IStep sender); StepMetadata<M> GetFields(PropertyInfo output = null); void InvokeAction(string actionName);
}
![Page 14: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/14.jpg)
Сериализация
• Все публичные свойства класса блока • Набор блоков и связей • Общие свойства конвейера • Настройки планировщика запуска
• Всё в одном документе MongoDB
![Page 15: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/15.jpg)
Конструктор ETL-процесса
• Настройка ETL-процессов без участия разработчика
• Разработчик сфокусирован на расширении функционала и библиотеки блоков, а не на прикладных задачах
• Накопление базы шаблонов – передача знаний
• Развитие архитектуры программной платформы, а не накопление прикладного кода
![Page 16: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/16.jpg)
Web UI конструктора
• Визуальная настройка связей и блоков
• Автоматический редактор блока по public-свойствам класса
• Предпросмотр данных на любом шаге
• Используется аналитиками в своей повседневной деятельности
![Page 17: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/17.jpg)
Аналоги
Microsoft TPL Dataflow Framework http://msdn.microsoft.com/en-us/library/hh228603(v=vs.110).aspx
Rhino ETL https://github.com/ayende/rhino-etl
Pentaho Kettle http://community.pentaho.com/projects/data-integration/
![Page 18: ProveIT. ETL как конструктор алгоритмов обработки данных.](https://reader034.fdocument.pub/reader034/viewer/2022042607/55945be01a28ab130c8b463e/html5/thumbnails/18.jpg)
Техническая конференция 18 октября 2014 г., г. Казань
Спасибо за внимание
Иван Пестряков «БАРС Груп», г. Казань