ݺߣ

ݺߣShare a Scribd company logo
Техническая конференция 
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 г., г. Казань 
Спасибо за внимание 
Иван Пестряков «БАРС Груп», г. Казань

More Related Content

What's hot (7)

Управление данными (хранилища данных и OLAP)
Управление данными (хранилища данных и OLAP)Управление данными (хранилища данных и OLAP)
Управление данными (хранилища данных и OLAP)
Ural Federal University named after First President of Russia B.N. Yeltsin
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио..."PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
Badoo Development
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Mail.ru Group
АИС ЭЛАР-Архив 2017
АИС ЭЛАР-Архив 2017АИС ЭЛАР-Архив 2017
АИС ЭЛАР-Архив 2017
Корпорация ЭЛАР
ЭЛАР Саперион 16.0
ЭЛАР Саперион 16.0ЭЛАР Саперион 16.0
ЭЛАР Саперион 16.0
Корпорация ЭЛАР
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
it-people
Обзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов OracleОбзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов Oracle
BAKOTECH
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио..."PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
Badoo Development
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Mail.ru Group
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
it-people
Обзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов OracleОбзор инструментов Toad для администраторов Oracle
Обзор инструментов Toad для администраторов Oracle
BAKOTECH

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

Презентация Microsoft PowerPoint
Презентация Microsoft PowerPointПрезентация Microsoft PowerPoint
Презентация Microsoft PowerPoint
webhostingguy
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Yandex
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
Sergey Skvortsov
Обзор протокола Netconf/YANG и его применение для управления услугами
Обзор протокола Netconf/YANG и его применение для управления услугамиОбзор протокола Netconf/YANG и его применение для управления услугами
Обзор протокола Netconf/YANG и его применение для управления услугами
Cisco Russia
Новая платформа сбора показателей
Новая платформа сбора показателейНовая платформа сбора показателей
Новая платформа сбора показателей
Bars Group
NetCat. Ульяновск
NetCat. УльяновскNetCat. Ульяновск
NetCat. Ульяновск
Denis Kulikov
RESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationRESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentation
Mikhail Shcherbakov
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Yandex
SharePoint и внешние данные
SharePoint и внешние данныеSharePoint и внешние данные
SharePoint и внешние данные
Vitaly Baum
Новости Global summit 2015
Новости Global summit 2015Новости Global summit 2015
Новости Global summit 2015
Timur Safin
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
Pavlo Iuriichuk
06 Ввод-вывод
06 Ввод-вывод06 Ввод-вывод
06 Ввод-вывод
phearnot
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
GeeksLab Odessa
Автоматизация: технологии и средства
Автоматизация: технологии и средстваАвтоматизация: технологии и средства
Автоматизация: технологии и средства
Cisco Russia
Описание и архитектура TFS 2008
Описание и архитектура TFS 2008Описание и архитектура TFS 2008
Описание и архитектура TFS 2008
Александр Шамрай
Entity framework
Entity frameworkEntity framework
Entity framework
Scaiper
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Герман Криммель
Java осень 2013 лекция 8
Java осень 2013 лекция 8Java осень 2013 лекция 8
Java осень 2013 лекция 8
Technopark
Управление услугами с помощью NETCONF/YANG и оркестратора Cisco NSO
Управление услугами с помощью NETCONF/YANG и оркестратора Cisco NSOУправление услугами с помощью NETCONF/YANG и оркестратора Cisco NSO
Управление услугами с помощью NETCONF/YANG и оркестратора Cisco NSO
Cisco Russia
Msu.Center.Lectures.J06 Io
Msu.Center.Lectures.J06 IoMsu.Center.Lectures.J06 Io
Msu.Center.Lectures.J06 Io
olegol
Презентация Microsoft PowerPoint
Презентация Microsoft PowerPointПрезентация Microsoft PowerPoint
Презентация Microsoft PowerPoint
webhostingguy
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Yandex
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
Sergey Skvortsov
Обзор протокола Netconf/YANG и его применение для управления услугами
Обзор протокола Netconf/YANG и его применение для управления услугамиОбзор протокола Netconf/YANG и его применение для управления услугами
Обзор протокола Netconf/YANG и его применение для управления услугами
Cisco Russia
Новая платформа сбора показателей
Новая платформа сбора показателейНовая платформа сбора показателей
Новая платформа сбора показателей
Bars Group
NetCat. Ульяновск
NetCat. УльяновскNetCat. Ульяновск
NetCat. Ульяновск
Denis Kulikov
RESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationRESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentation
Mikhail Shcherbakov
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Yandex
SharePoint и внешние данные
SharePoint и внешние данныеSharePoint и внешние данные
SharePoint и внешние данные
Vitaly Baum
Новости Global summit 2015
Новости Global summit 2015Новости Global summit 2015
Новости Global summit 2015
Timur Safin
06 Ввод-вывод
06 Ввод-вывод06 Ввод-вывод
06 Ввод-вывод
phearnot
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
Многофункциональный сервер приложений, обеспечивающий среду запуска, и дающий...
GeeksLab Odessa
Автоматизация: технологии и средства
Автоматизация: технологии и средстваАвтоматизация: технологии и средства
Автоматизация: технологии и средства
Cisco Russia
Entity framework
Entity frameworkEntity framework
Entity framework
Scaiper
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Герман Криммель
Java осень 2013 лекция 8
Java осень 2013 лекция 8Java осень 2013 лекция 8
Java осень 2013 лекция 8
Technopark
Управление услугами с помощью NETCONF/YANG и оркестратора Cisco NSO
Управление услугами с помощью NETCONF/YANG и оркестратора Cisco NSOУправление услугами с помощью NETCONF/YANG и оркестратора Cisco NSO
Управление услугами с помощью NETCONF/YANG и оркестратора Cisco NSO
Cisco Russia
Msu.Center.Lectures.J06 Io
Msu.Center.Lectures.J06 IoMsu.Center.Lectures.J06 Io
Msu.Center.Lectures.J06 Io
olegol

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

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