OLAP-анализ данных: решаемые задачи, технологии, актуальные проблемы

Содержание

Слайд 2

Организационное
http://ykud.com/sigmod/2007
1,5 часа Вашего времени
Вопросы приветствуются

Организационное http://ykud.com/sigmod/2007 1,5 часа Вашего времени Вопросы приветствуются

Слайд 3

План
Задачи анализа, определение OLAP
OLAP-расширения SQL
MOLAP продукты
Вопросы, перспективные технологии

План Задачи анализа, определение OLAP OLAP-расширения SQL MOLAP продукты Вопросы, перспективные технологии

Слайд 4

Появление термина OLAP
Статья Кодда “Providing OLAP for End-User Analysis” отосланная в IEEE

Появление термина OLAP Статья Кодда “Providing OLAP for End-User Analysis” отосланная в
Computer – 12 признаков OLAP-системы

Слайд 5

12 признаков OLAP.

Многомерная концепция данных. OLAP оперирует CUBE данными, которые являются многомерными

12 признаков OLAP. Многомерная концепция данных. OLAP оперирует CUBE данными, которые являются
массивами данных. Число измерений OLAP кубов не ограничено.
Прозрачность. OLAP системы должны опираться на открытые системы, поддерживающие гетерогенные источники данных.
Доступность. OLAP системы должны представлять пользователю единую логическую схему данных.
Постоянная скорость выполнения запросов. Производительность не должна падать при росте числа измерений.
Клиент\сервер архитектура. Системы должны базироваться на открытых, модульных системах.
Различное число измерений. Системы не должны ограничиваться 3хмерной моделью представления данных. Причем измерения должны быть эквивалентны по применению любых функций.

Слайд 6

12 признаков OLAP.

Динамическое представление разреженных матриц. Идея относится к «нулям» в реляционных

12 признаков OLAP. Динамическое представление разреженных матриц. Идея относится к «нулям» в
базах данных и сжатию больших файлов, «разреженная матрица» - матрица, не каждая ячейка которой содержит данные. OLAP системы должны содержать средства хранении и обработки больших объемов данных.
Многопользовательская поддержка. OLAP системы должны поддерживать многопользовательский режим работы.
Неограниченные многомерные операции. Аналогично, требованию о различном числе измерений : все измерения считаются равными и многомерные операции не должны накладывать ограничений на отношения между ячейками.
Интуитивно понятные инструменты манипулирование данными. В идеале, пользователи не должны пользоваться различными усложненными меню и прочим, чтобы сформулировать многоуровневые запросы.
Гибкая настройка конечных отчетов. Пользователи должны иметь возможность видеть только то, что им необходимо, причем все изменения данных должны немедленно отображаться в отчетах.
Отсутствие ограничений на количество измерений и уровней агрегации данных

Слайд 7

НО

Последние 4 страницы статьи посвящены Essbase – проверка соответствия OLAP критериям
Жена Кодда

НО Последние 4 страницы статьи посвящены Essbase – проверка соответствия OLAP критериям
в это время работает в Arbor Software (разработчик Essbase)
Arbor Software спонсировало написание статьи

Слайд 8

Результат
Журнал Computer после публикации официально изымает статью Кодда из своих архивов

Результат Журнал Computer после публикации официально изымает статью Кодда из своих архивов

Слайд 9

Простое определение OLAP

Nigel Pendse -- olapreport.com
FASMI
FAST
Analysis
Shared
Multidimensional

Простое определение OLAP Nigel Pendse -- olapreport.com FASMI FAST Analysis Shared Multidimensional

Слайд 10

Для задач анализа мы вводим «многомерность» данных
В SQL измерения – обычно аргументы

Для задач анализа мы вводим «многомерность» данных В SQL измерения – обычно
запроса с Group By
Drill-up\down, slice&dice
2 задачи для примера:
Кросс-таблица
Нарастающий итог за квартал

Слайд 11

OLAP-расширения SQL

Группировка данных
Grouping Set
Rollup
Cube
Row_Number(), Rank
Window By
SQL-1999

OLAP-расширения SQL Группировка данных Grouping Set Rollup Cube Row_Number(), Rank Window By SQL-1999

Слайд 12

На чем запускать запросы

MySQL
Microsoft SQL Server
Oracle
IBM DB2
Postgres

На чем запускать запросы MySQL Microsoft SQL Server Oracle IBM DB2 Postgres

Слайд 13

Нужен
ORACLE 10.2.0.1.0 + OLAP Option (EE)
Таблицы не создаются – достаточно прав на

Нужен ORACLE 10.2.0.1.0 + OLAP Option (EE) Таблицы не создаются – достаточно прав на TEMP
TEMP

Слайд 14

Grouping Set (grouping_sets.sql)

EMPID DEPT JOB_TITLE
1 hr manager
2 it sysadmin
3 it dba
4 hr clerk
5 it networkadmin
6 hr clerk
7 it networkadmin
8 it clerk

DEPT JOB_TITLE STAFF_QUANTITY
hr 3
it 5
networkadmin 2
dba 1
clerk 3
sysadmin 1
manager 1

select dept,job_title, count(*) as staff_quantity
from
emp_data
group

Grouping Set (grouping_sets.sql) EMPID DEPT JOB_TITLE 1 hr manager 2 it sysadmin
by grouping sets (dept,job_title)

Слайд 15

Rollup (rollup.sql)

EMPID DEPT JOB_TITLE
1 hr manager
2 it sysadmin
3 it dba
4 hr clerk
5 it networkadmin
6 hr clerk
7 it networkadmin
8 it clerk

DEPT JOB_TITLE STAFF_QUANTITY
hr clerk 2
hr manager 1
hr 3
it dba 1
it clerk 1
it sysadmin 1
it networkadmin 2
it 5
8

select dept,job_title, count(*) as staff_quantity
from
emp_data
group by

Rollup (rollup.sql) EMPID DEPT JOB_TITLE 1 hr manager 2 it sysadmin 3
rollup (dept,job_title)

Group By Rollup (a,b,c) == Group by grouping sets (a,b,c)(a,b)(a)()

EMP_Data

Слайд 16

Cube (cube.sql)

EMPID DEPT JOB_TITLE
1 hr manager
2 it sysadmin
3 it dba
4 hr clerk
5 it networkadmin
6 hr clerk
7 it networkadmin
8 it clerk

DEPT JOB_TITLE STAFF_QUANTITY
8
dba 1
clerk 3
manager 1
sysadmin 1
networkadmin 2
hr 3
hr clerk 2
hr manager 1
it 5
it dba 1
it clerk 1
it sysadmin 1
it networkadmin 2

select dept,job_title, count(*) as staff_quantity
from
emp_data
group by

Cube (cube.sql) EMPID DEPT JOB_TITLE 1 hr manager 2 it sysadmin 3
cube (dept,job_title) ;

Group By Cube == Group by grouping sets (a,b,c)(a,b)(b,a)(b,c)(a)(b)(c)()

EMP_Data

Слайд 17

Row_Number

Возвращает номер кортежа
Варианты определения:
IDENTITY (MicroSoft) – колонка в таблице
ROWID (ORACLE) –

Row_Number Возвращает номер кортежа Варианты определения: IDENTITY (MicroSoft) – колонка в таблице
физический номер в сегменте
ROW_NUMBER() – функция (Sybase WatCom SQL)

Слайд 18

Row_Number (rownum.sql)

select dept,job_title, row_number() over (order by empid) as row_num
from

Row_Number (rownum.sql) select dept,job_title, row_number() over (order by empid) as row_num from
emp_data;

DEPT JOB_TITLE ROW_NUM
hr manager 1
it sysadmin 2
it dba 3
hr clerk 4
it networkadmin 5
hr clerk 6
it networkadmin 7
it clerk 8

Слайд 19

Ранжирование

RANK RANK | DENSE_RANK RANK | DENSE_RANK | PERCENT_RANK RANK |

Ранжирование RANK RANK | DENSE_RANK RANK | DENSE_RANK | PERCENT_RANK RANK |
DENSE_RANK | PERCENT_RANK | CUME_DIST -- разные типы ранжирования по значению меры

Слайд 20

Window By (window_by.sql)

REGION MONTH SALES
south 1 20
south 2 30
south 3 20
south 4 40
south 5 50
south 6 60
north 1 5
north 2 7
north 3 10
north 4 20
north 5 5
north 6 10

REGION MONTH SALES MOVING_AVERAGE
north 1 5 5
north 2 7 12
north 3 10 22
north 4 20 37
north 5 5 35
north 6 10 35
south 1 20 20
south 2 30 50
south 3 20 70
south 4 40 90
south 5 50 110
south 6 60 150


select region,month, sales, sum(sales)
over (partition by region
order

Window By (window_by.sql) REGION MONTH SALES south 1 20 south 2 30
by month asc
rows 2 preceding)
as moving_average
from
sales_data

Moving_Total – нарастающий
итог за квартал

Слайд 21

Oracle Model By


MODEL [main]
[reference models]
[PARTITION BY ()]
DIMENSION BY

Oracle Model By MODEL [main] [reference models] [PARTITION BY ( )] DIMENSION
()
MEASURES ()
[IGNORE NAV] | [KEEP NAV]
[RULES
[UPSERT | UPDATE]
[AUTOMATIC ORDER | SEQUENTIAL ORDER]
[ITERATE (n) [UNTIL ] ]
( = ... )

http://www.oracle.com/technology/products/bi/db/10g/model_examples.html

Слайд 22

REGION MONTH SALES
south 1 20
south 2 30
south 3 20
south 4 40
south 5 50
south 6 60
north 1 5
north 2 7
north 3 10
north 4 20
north 5 5
north 6 10

REGION MONTH SALES
north 1 5
north 2 7
north 3 10
north 4 20
north 5 5
north 6 10
north 7 7,5
south 1 20
south 2 30
south 3 20
south 4 40
south 5 50
south 6 60
south 7 55

select region,month, sales
from sales_data
model
partition by (region)

REGION MONTH SALES south 1 20 south 2 30 south 3 20
dimension by (month)
measures (sales)
rules (sales[7] = (sales[5]+sales[6])/2)
order by region, month;

Oracle Model By (model_by_simple.sql)

Считаем продажи в 7ом месяце

Слайд 23

Oracle Model By (model_by_running_total.sql)

select region,month, sales,sales_rt
from
sales_data
model

Oracle Model By (model_by_running_total.sql) select region,month, sales,sales_rt from sales_data model partition by

partition by (region)
dimension by (month)
measures (sales,0 sales_rt)
rules
(sales_rt[any] = case
when cv(month) = 1 then (sales[cv(month)])
else (sales_rt[cv(month)-1] + sales[cv(month)])
end
)
order by region, month;

Running_Total (Sales_RT) – накопленный итог продаж

Слайд 24

REGION MONTH SALES
south 1 20
south 2 30
south 3 20
south 4 40
south 5 50
south 6 60
north 1 5
north 2 7
north 3 10
north 4 20
north 5 5
north 6 10

REGION MONTH SALES SALES_RT
north 1 5 5
north 2 7 12
north 3 10 22
north 4 20 42
north 5 5 47
north 6 10 57
south 1 20 20
south 2 30 50
south 3 20 70
south 4 40 110
south 5 50 160
south 6 60 220

Oracle Model By (model_by_running_total.sql)

Running_Total (Sales_RT) – накопленный итог продаж

REGION MONTH SALES south 1 20 south 2 30 south 3 20

Слайд 25

Oracle Model By (model_by_iterate.sql)

select region,month, sales, sales_forecast
from
sales_data
model

Oracle Model By (model_by_iterate.sql) select region,month, sales, sales_forecast from sales_data model return
return updated rows
partition by (region)
dimension by (month)
measures (sales, 0 sales_forecast)
rules ITERATE(100) UNTIL (ABS((PREVIOUS(sales_forecast[6]) - sales_forecast[6]) ) < 0.001 )
( sales_forecast[any] = case
when sales_forecast[cv(month)-1] > 0 then (sales[cv(month) -1] + sales_forecast [cv(month)-1])/2 -- (sales_forecast[cv(month)] +
else (1.5 * sales[cv(month)-1])
end
)
order by region, month

Прогноз продаж считаем на базе предыдущего прогноза и факта

Слайд 26

Oracle Model By (model_by_iterate.sql)

REGION MONTH SALES
south 1 20
south 2 30
south 3 20
south 4 40
south 5 50
south 6 60
north 1 5
north 2 7
north 3 10
north 4 20
north 5 5
north 6 10

REGION MONTH SALES SALES_FORECAST
north 1 5
north 2 7 7,5
north 3 10 7,25
north 4 20 8,625
north 5 5 14,3125
north 6 10 9,65625
south 1 20
south 2 30 30
south 3 20 30
south 4 40 25
south 5 50 32,5
south 6 60 41,25

Прогноз продаж считаем на базе предыдущего прогноза и

Oracle Model By (model_by_iterate.sql) REGION MONTH SALES south 1 20 south 2
факта

Слайд 27

Проблемы ROLAP

Хранение агрегатов (материализация) или вычисление на лету
Моделирование измерений и вычислений
Схемы хранения

Проблемы ROLAP Хранение агрегатов (материализация) или вычисление на лету Моделирование измерений и
«снежинка» и «звезда» (Кимбалл и Инмон)

Слайд 28

Достаточно ли подобных расширений SQL?

Достаточно ли подобных расширений SQL?

Слайд 29

4 типа OLAP систем по Кодду

Categorical – простые запросы
Exegetical – многомерный анализ,

4 типа OLAP систем по Кодду Categorical – простые запросы Exegetical –
drill-up\down
Contemplative – изменение расчетных результатов, при изменении входных параметров
Formulaic – задание правил поведения системы и цель, сценарное моделирование

Слайд 30

Задачи 3его, 4го типа

Goal-Seeking, BackSolving – многомерные обратные расчеты уравнений
Вводим данные

Задачи 3его, 4го типа Goal-Seeking, BackSolving – многомерные обратные расчеты уравнений Вводим
в ячейку, являющуюся пересечением формул по двум измерениям (например, Продажи по всем продуктам (сумма), в Год (сумма))
Пересчет по профилям

Слайд 31

Многомерные Базы Данных
Статисческие базы данных (SBD)
Модель данных изначально включающая измерения (с иерархиями)

Многомерные Базы Данных Статисческие базы данных (SBD) Модель данных изначально включающая измерения
как объекты
Особая роль измерения Время
Использование многомерных формул

Слайд 32

MOLAP-продукты

Essbase
Express
Ms Analysis Services

MOLAP-продукты Essbase Express Ms Analysis Services

Слайд 33

Hyperion Essbase

Extended Spread Sheet database
Arbor Software
Роберт Эйрль – column-based storage

Hyperion Essbase Extended Spread Sheet database Arbor Software Роберт Эйрль – column-based storage

Слайд 34

Oracle Express

MIT (1975) ->…->IRI Software->Oracle (1995)
Express 4GL
Схема работы Model By

Oracle Express MIT (1975) ->…->IRI Software->Oracle (1995) Express 4GL Схема работы Model By

Слайд 35

Схема работы Model By

Схема работы Model By

Слайд 36

MicroSoft
Analysis Services – HOLAP движок
Новая разработка
Panorama -> Microsoft
MDX – новый язык

MicroSoft Analysis Services – HOLAP движок Новая разработка Panorama -> Microsoft MDX
запросов к многмерным данным (поддерживается Hyperion)

Слайд 37

MDX (пример синтаксиса)

SELECT
{ [Measures].[Dollar Sales], [Measures].[Unit Sales] }
on columns,
{ [Time].[Q1, 2005], [Time].[Q2,

MDX (пример синтаксиса) SELECT { [Measures].[Dollar Sales], [Measures].[Unit Sales] } on columns,
2005] }
on rows
FROM [Sales]
WHERE ([Customer].[MA])

Слайд 38

А что же IBM?

Перепродавали Essbase, как IBM OLAP Server, прекратили в 2006
Сделали

А что же IBM? Перепродавали Essbase, как IBM OLAP Server, прекратили в
IBM Cube Views – не продавался

Слайд 39

Open-Source

Mondrian – ROLAP, поддерживает MDX
PALO – memory-based MOLAP, новая разработка

Open-Source Mondrian – ROLAP, поддерживает MDX PALO – memory-based MOLAP, новая разработка

Слайд 40

Стандарты OLAP

OLAP Council.
JOLAP – поддерживался Hyperion и Mondrian => мертв
APB-1 Benchmark

Стандарты OLAP OLAP Council. JOLAP – поддерживался Hyperion и Mondrian => мертв
– набор тестов для определения производительности OLAP-движка
XML\A – стандарт взаимодействия с MS Analysis Services (описание сервиса). Использует MDX.

Слайд 41

Выводы и замечания

Что такое OLAP?
Нет стандартов, ни в модели данных, ни

Выводы и замечания Что такое OLAP? Нет стандартов, ни в модели данных,
в языках
Статистические пакеты сближаются с OLAP-приложениями
Сервера отчетности не используют возможности SQL

Слайд 42

Новые решения
Языки векторного программирования (APL, K)
In-memory базы данных (TimesTen, Applix, KX) как

Новые решения Языки векторного программирования (APL, K) In-memory базы данных (TimesTen, Applix,
буфера для хранения агрегатов в СУРБД.
Streaming OLAP.
Имя файла: OLAP-анализ-данных:-решаемые-задачи,-технологии,-актуальные-проблемы.pptx
Количество просмотров: 283
Количество скачиваний: 2