View
248
Download
3
Category
Preview:
DESCRIPTION
ProveIT Казань.
Citation preview
Техническая конференция 18 октября 2014 г., г. Казань
ETL как конструктор алгоритмов обработки данных
Иван Пестряков «БАРС Груп», г. Казань
Повторяемость кода
Импорт данных Чтение из БД Чтение из Web-сервиса … Разбор XML Разбор JSON Разбор Excel … Формирование JSON Формирование Excel Формирование XML …. Запись в БД Формирование файла …
Экспорт данных
Конвертации
Трансформации
Пакетные операции
Цепочка обработки (Block, Pipeline)
Чтение файла Разбор Excel Фильтрация
Отправка в web-сервис
Оповещение оператора
• Повторное использование кода блоков
• Независимость от проектной области
• Совместимость блоков по входам/выходам Запись в
таблицу БД
Формирование JSON
Business Intelligence
Business Intelligence или BI бизнес-анализ, бизнес-аналитика. Это инструменты, используемые для преобразования, хранения, анализа, моделирования, доставки и трассировки информации.
ETL методика и инструмент интеграции данных
Инструменты ETL
Extract
Transform
Load
SAS Data Integration Server IBM WebSphere DataStage
SAP Data Integrator Informatica PowerCenter
Oracle Data Integrator Pentaho
JasperETL AlphaBI
процедуры извлечения записи из источников данных и подготовка их к процессу преобразования
преобразование структуры данных; агрегирование данных; сортировка/фильтрация; очистка данных создание новых данных;
перенос данных в структуру хранилища данных, добавление и обновление данных
• Пакетная обработка • Репозитарий ETL-процессов • Метаданные • Циклические загрузки • ~50% трудозатрат по проекту
• Direct3D • DirectShow • ASP.NET
Конвейер
• Все принципы SOLID • Логическая изоляция блоков • Инкапсуляция • Совместимость
Блок Конвейер
• FIFO • Передача управления • Передача метаданных • Контроль ошибок • Хранимый объект
Типы данных
Поток Raw Data
Строка данных Row
Набор строк
Row set
Входы/выходы блоков
Чтение файла с диска
Разбор файла Excel
Фильтр
Накопитель Формирование
JSON Отправка потока в
Web-сервис
Метаданные
• Некоторые блоки являются поставщиками метаданных • Остальные блоки пробрасывают или изменяют метаданные • Любой блок может запросить метаданные у конвейера • Метаданные могут храниться внутри блоков
Код поля Наименование Тип данных
userLogin Логин String
userName Имя String
isActive Активен Boolean
registrationDate Дата регистрации DateTime
Необходимые блоки
• Чтение потока (файл, HTTP, FTP, Blob)
• Разбор потока (JSON, XML, SOAP, Excel, CSV)
• Чтение строки (SQL-запрос, 1С-запрос, генератор)
• Трансформации (join, фильтр, калькулятор, сортировка)
• Преобразования (накопитель, итератор, приведения типов)
• Сериализация (формирование JSON, XML, Excel, CSV)
• Операции с БД (вставка, удаление, вызов Stored procedure)
• Вывод потока (в файл, POST-запрос)
Реализация на C#
Step<I, O, M>
• Один блок = один класс С# • Возможность расширения библиотеки блоков через IoC • Нет зависимостей от бизнес-логики проекта • Служебные классы – Pipeline, Logger, Storage • Сериализованные ETL-процессы хранятся в MongoDB
Классы блоков 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; } }
Интерфейс блока
public interface IStep<I, O, M> {
void Execute(I inputData, IStep sender); StepMetadata<M> GetFields(PropertyInfo output = null); void InvokeAction(string actionName);
}
Сериализация
• Все публичные свойства класса блока • Набор блоков и связей • Общие свойства конвейера • Настройки планировщика запуска
• Всё в одном документе MongoDB
Конструктор ETL-процесса
• Настройка ETL-процессов без участия разработчика
• Разработчик сфокусирован на расширении функционала и библиотеки блоков, а не на прикладных задачах
• Накопление базы шаблонов – передача знаний
• Развитие архитектуры программной платформы, а не накопление прикладного кода
Web UI конструктора
• Визуальная настройка связей и блоков
• Автоматический редактор блока по public-свойствам класса
• Предпросмотр данных на любом шаге
• Используется аналитиками в своей повседневной деятельности
Аналоги
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/
Техническая конференция 18 октября 2014 г., г. Казань
Спасибо за внимание
Иван Пестряков «БАРС Груп», г. Казань
Recommended