![Page 1: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/1.jpg)
Аналитический SQL в Oracle Database 12c
Ольга Горчинская
Форс
![Page 2: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/2.jpg)
Oracle SQL для анализа данных
Аналитика • Aggregation functions
• Window functions
• Ranking
• Lag/lead
• Top-N
• Pivot/Unpivot
• Model clause
• Pattern matching
Статистика • DBMS_STATS_FUNCS (дескриптивная статистика)
• Statistical aggregates
• Линейная регрессия
• Корреляции
• Cross Tabs
• Проверка гипотез
• Подбор распределений
![Page 3: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/3.jpg)
Pattern Matching Сопоставление с образцом , шаблоном
Выявление заданного шаблона (паттерна, образца) в последовательности объектов
Pattern Matching и Pattern Recognition
Поиск шаблонов в символьных последовательностях, деревьях
текстовый поиск, биоинформатика,
языки функционального программирования , символьной обработки
![Page 4: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/4.jpg)
Pattern Matching в Oracle Database 12c
Новая конструкция в Oracle SQL MATCH_RECOGNIZE
Часть SQL запроса
Поиск паттернов в последовательностях строк таблицы
Использует идеи аналитических функций и язык регулярных выражений
Охватывает широкий круг прикладных задач
![Page 5: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/5.jpg)
«SQL – the best analysis language for big data»
Презентация на Oracle Open World 2013 Andrew Mendelsohn
Демонстрация Pattern Matching in Oracle Database 12c
Выявление подозрительных транзакций по кредитным картам
![Page 6: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/6.jpg)
Oracle Database vs Hadoop
Программа на MapReduce Java более 600 строк кода
около 10 мин
SQL запрос с конструкцией Match_Recognize 15 строк кода
10 секунд
![Page 7: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/7.jpg)
SQL Pattern Matching vs MapReduce Java
![Page 8: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/8.jpg)
Как устроен MATCH_RECOGNIZE Подробный пример
Пример -- анализ вэб-сессий Web Sessionization (Вэб-сессионизация )
Сессия – последовательность кликов одного и того же пользователя, которые происходят в близкие моменты времени (задано ограничение на временной интервал)
Задача – выделить сессии и для каждой сессии сформировать ее характеристики пользователь, начало сессии, ее продолжительность, …
![Page 9: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/9.jpg)
Исходные данные Результат
![Page 10: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/10.jpg)
Конструкция MATCH_RECOGNIZE
SELECT * FROM events
MATCH_RECOGNIZE (
. . .
)
events
![Page 11: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/11.jpg)
Спецификация групп и последовательности
SELECT * FROM events
MATCH_RECOGNIZE (
PARTITION BY user_id
ORDER BY time
. . .
)
events
![Page 12: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/12.jpg)
Спецификация шаблона
SELECT * FROM events
MATCH_RECOGNIZE (
PARTITION BY user_id
ORDER BY time
. . .
PATTERN (strt s*)
DEFINE
s as (s.time - prev(s.time) < 10
)
events
![Page 13: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/13.jpg)
Определение структуры результата
SELECT * FROM Events
MATCH_RECOGNIZE (
PARTITION BY user_id ORDER BY time
MEASURES user_id,
match_number() session_id,
count(*) as no_of_events,
first(time) start_time,
last(time) - first(time) duration
PATTERN (strt s*) …
)
![Page 14: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/14.jpg)
Опции результата
SELECT * FROM Events
MATCH_RECOGNIZE (
PARTITION BY user_id ORDER BY time
MEASURES user_id,
match_number() session_id,
count(*) as no_of_events,
first(time) start_time,
last(time) - first(time) duration
ONE ROW PER MATCH
PATTERN (strt s*) …
)
![Page 15: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/15.jpg)
Анализ торгов поиск V-паттерна
Select * from Ticker
MATCH_RECOGNIZE (
PARTITION BY symbol
ORDER BY timestamp
MEASURES
Count(*) as total_no_of_days,
Count(DOWN.*) as down_days,
Count (UP.*) as up_days,
AVG(DOWN.price) as avg_down_price,
AVG(UP.price) as avg_up_price
ONE ROW MATCHAFTER MATCH SKIP TO LAST UP
PATTERN (STRT, DOWN+,UP+)
DEFINE
DOWN as DOWN.price < PREV(DOWN.price)
UP as UP.price > PREV(UP.price)
) MR
ORDER BY MR.symbol, MR.timestamp
![Page 16: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/16.jpg)
Примеры использования
Тема Входные данные
Паттерн
Интернет-сессии weblogs Клики одного пользователя
Мошенничество в банках
Транзакции по кредитным картам
Две транзакции по карточке «одновременно» из удаленных друг от друга мест
Фондовая биржа Ticker logs Поиск известных шаблонов, например, v-паттернов
Мошенничество в телекоме
CDR SIM карта используется двумя разными мобильниками в течении заданного периода
![Page 17: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/17.jpg)
Примеры использования
Тема Входные данные
Паттерн
In-game purchase Game log Последовательность событий, которая приводит к покупке
Money laundering Логи транзакций
Последовательность мелких переводов завершается переводом большой суммы
Call service quality CDR
Login security Логи приложений
SIM карта используется двумя разными мобильниками в течении заданного периода
![Page 18: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/18.jpg)
Дополнительная информация
Analytical SQL Home Page on OTN
Keith Laker’s blog http://oracle-big-data.blogspot.ru/2013/11/sql-analytical-mash-ups-deliver-real.html
![Page 19: Аналитический SQL Oracle Database 12coraclebiru.s3.amazonaws.com/.../Pattern_Matching... · Pattern Matching в Oracle Database 12c ... ONE ROW MATCHAFTER MATCH SKIP](https://reader035.vdocuments.site/reader035/viewer/2022081419/5f0275af7e708231d4045e81/html5/thumbnails/19.jpg)
Спасибо за внимание!