Top Banner
Техническая конференция 18 октября 2014 г., г. Казань ETL как конструктор алгоритмов обработки данных Иван Пестряков «БАРС Груп», г. Казань
18

ProveIT. ETL как конструктор алгоритмов обработки данных.

Jul 02, 2015

Download

Software

chester_ds

ProveIT Казань.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ProveIT. ETL как конструктор алгоритмов обработки данных.

Техническая конференция 18 октября 2014 г., г. Казань

ETL как конструктор алгоритмов обработки данных

Иван Пестряков «БАРС Груп», г. Казань

Page 2: ProveIT. ETL как конструктор алгоритмов обработки данных.

Повторяемость кода

Импорт данных Чтение из БД Чтение из Web-сервиса … Разбор XML Разбор JSON Разбор Excel … Формирование JSON Формирование Excel Формирование XML …. Запись в БД Формирование файла …

Экспорт данных

Конвертации

Трансформации

Пакетные операции

Page 3: ProveIT. ETL как конструктор алгоритмов обработки данных.

Цепочка обработки (Block, Pipeline)

Чтение файла Разбор Excel Фильтрация

Отправка в web-сервис

Оповещение оператора

• Повторное использование кода блоков

• Независимость от проектной области

• Совместимость блоков по входам/выходам Запись в

таблицу БД

Формирование JSON

Page 4: ProveIT. ETL как конструктор алгоритмов обработки данных.

Business Intelligence

Business Intelligence или BI бизнес-анализ, бизнес-аналитика. Это инструменты, используемые для преобразования, хранения, анализа, моделирования, доставки и трассировки информации.

ETL методика и инструмент интеграции данных

Page 5: ProveIT. 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% трудозатрат по проекту

Page 6: ProveIT. ETL как конструктор алгоритмов обработки данных.

• Direct3D • DirectShow • ASP.NET

Конвейер

• Все принципы SOLID • Логическая изоляция блоков • Инкапсуляция • Совместимость

Блок Конвейер

• FIFO • Передача управления • Передача метаданных • Контроль ошибок • Хранимый объект

Page 7: ProveIT. ETL как конструктор алгоритмов обработки данных.

Типы данных

Поток Raw Data

Строка данных Row

Набор строк

Row set

Page 8: ProveIT. ETL как конструктор алгоритмов обработки данных.

Входы/выходы блоков

Чтение файла с диска

Разбор файла Excel

Фильтр

Накопитель Формирование

JSON Отправка потока в

Web-сервис

Page 9: ProveIT. ETL как конструктор алгоритмов обработки данных.

Метаданные

• Некоторые блоки являются поставщиками метаданных • Остальные блоки пробрасывают или изменяют метаданные • Любой блок может запросить метаданные у конвейера • Метаданные могут храниться внутри блоков

Код поля Наименование Тип данных

userLogin Логин String

userName Имя String

isActive Активен Boolean

registrationDate Дата регистрации DateTime

Page 10: ProveIT. ETL как конструктор алгоритмов обработки данных.

Необходимые блоки

• Чтение потока (файл, HTTP, FTP, Blob)

• Разбор потока (JSON, XML, SOAP, Excel, CSV)

• Чтение строки (SQL-запрос, 1С-запрос, генератор)

• Трансформации (join, фильтр, калькулятор, сортировка)

• Преобразования (накопитель, итератор, приведения типов)

• Сериализация (формирование JSON, XML, Excel, CSV)

• Операции с БД (вставка, удаление, вызов Stored procedure)

• Вывод потока (в файл, POST-запрос)

Page 11: ProveIT. ETL как конструктор алгоритмов обработки данных.

Реализация на C#

Step<I, O, M>

• Один блок = один класс С# • Возможность расширения библиотеки блоков через IoC • Нет зависимостей от бизнес-логики проекта • Служебные классы – Pipeline, Logger, Storage • Сериализованные ETL-процессы хранятся в MongoDB

Page 12: ProveIT. ETL как конструктор алгоритмов обработки данных.

Классы блоков 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 как конструктор алгоритмов обработки данных.

Интерфейс блока

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 как конструктор алгоритмов обработки данных.

Сериализация

• Все публичные свойства класса блока • Набор блоков и связей • Общие свойства конвейера • Настройки планировщика запуска

• Всё в одном документе MongoDB

Page 15: ProveIT. ETL как конструктор алгоритмов обработки данных.

Конструктор ETL-процесса

• Настройка ETL-процессов без участия разработчика

• Разработчик сфокусирован на расширении функционала и библиотеки блоков, а не на прикладных задачах

• Накопление базы шаблонов – передача знаний

• Развитие архитектуры программной платформы, а не накопление прикладного кода

Page 16: ProveIT. ETL как конструктор алгоритмов обработки данных.

Web UI конструктора

• Визуальная настройка связей и блоков

• Автоматический редактор блока по public-свойствам класса

• Предпросмотр данных на любом шаге

• Используется аналитиками в своей повседневной деятельности

Page 18: ProveIT. ETL как конструктор алгоритмов обработки данных.

Техническая конференция 18 октября 2014 г., г. Казань

Спасибо за внимание

Иван Пестряков «БАРС Груп», г. Казань