Лекция 4.
Поговорим об OLAP’е.
Вообще ОЛАП – это про всякие кубы данных и срезы по разным измерениям.
Смысл куба в том, что это не прсото табличка, а матрица. У нее первый столбец и первая строчка – это значения атрибутов. Посередине – цифры.
Типы:
Multidimensional OLAP (MOLAP) – и детальные данные хранятся в многомерной БД
Relational OLAP (ROLAP) – все хранится в реляционной БД, агрегаты хрятятся в служебных таблицах
Hybrid (HOLAP) – детальные данные хранятся в реляционнй БД, а агрегаты хранятся в многомерной БД.
Примеры многомерных БД: SSAS, Oracle Essbase, IBM TM1.
Смысл многомерных БД – это повысить производительность БД для анализа.
Но на данный момент из-за роста производительности железок разница в быстродействии невелика.
По идее ХД должно содержать агрегированную информацию и детальную. Первое удобнее хранить в многомерке, второе – в реляционной. Но при этом на трансфер из реляционной БД в многмерную тоже тратится время и ресурсы, поэтому сейчас, когда все можно релизовать на реляционной БД, это можно вполне делать.
MOLAP хранит только числа, в этом ограничение.
SSAS в принципе может реализовывать все типы OLAP’а.
Ключевое требование OLAP – поддержка иерархий и множественных иерархий
Операции с кубиками:
Slice and dice – взятие подкуба
Roll up -- сворачивание
Drill down – детализация данных в кубе
Pivot – транспонирование, различная визуализация одной и той же инфы
Drill through – переход к детальным данным, хранящимся в оперативной БД.
SSAS
2008 и 2005 SQL сервер – достаточно мощные продукты.
Есть два подхода – простой анализ и data mining.
MDX – аналог SQL для работы с многомерными БД. Разработка MS’а.
SSAS делает пре-агрегацию автоматически.
UDM – unified dimensional model – фишка МСа про то, чтобы процесс перехода от реляционной модели данных в многомерную (удобную пользователю, понятную по сути) был прозрачен.
Data Source View – это реляционное представление предметной области. Источников этих «взглядов» может быть несколько.
Партиции в кубах – это разбивка данных внутри кубов по способу хранения. Это используется для обновления данных.
Атрибуты могут быть организованны иерархии.
Группы атрибутов круче чем иерархии, так как понятнее.
Типы атрибутов:
Key
Parent key
Regular
Parent-Child иерерахии (несбалансированные) используют связь самих с собой, для того, чтобы задать начальников элементов таблицы из этой же таблицы.
Для каждой табицы фактов надо создавать свою группу.
Вырожденное измерение – то, которое строиться на основе таблицы фактов, а не собственной таблицы. Это удобно, когда атрибутов у измерения немного (1-2).
Вычисления бывают:
Calculated members
Named sets
Scoped assignments
Вычисления задаются на языке MDX.
Объекты OLAP состоят из трех типов данны:
Метаданные – описание объекта
Данные – элементы измерений, записи таблиц фактов
Агрегаты – пре-агрегированные данные таблиц фактов.
Все данные можно разбивать на патриции и обновлять только их.
Лекция 5.
MDX – multi dimensional expressions. Создан MS’ом, стал сейчас стандартом.
Основные понятия:
Куб (Cube)
Мера, факт, показатель (measure)
Член (Member) – элемент измерения
Кортеж (Tuple) – коллекция членов, набор элементов из разных измерений
Множество (Set) – множество кортежей
При обращении к члену через идентификатор, надо перед ним ставить символ “&”
Кортежи заключаются в ().
Перечисления кортежей (множества) заключаются в “{}”, диапазон задается с помощью “:”
Наборы из разных типов членов не могут существовать.
При запросе типа SELECT надо после каждого выбираемого поля указывать, куда их пихать – в колонки (on columns) или в строки (on rows). Также есть вообще говоря другие оси, их может быть аж до 128, первые пять имеют псевдонимы – columns, rows, pages, и еще что-то там.
WITH – это штука чтобы определять наборы. Это вроде как USING в c#. Так проще потом запрос писать. Экономии в вычислениях это не дает. =(
Функции:
Crossjoin – это тупо декартово произведение
Filter – это фильтр. =) Не срез, а именно фильтр. То есть сначала выбираем, а потом что-нибудь отбираем. Where же позволяет взять срез, там нельзя указать точное значение.
Topcount – это первые несколько значений.
Bottomcount – аналог только с сортировкой от меньшего к большему.
Функуции управления членами:
Default member – это обычно обращение к верхнему элементу
Prevmember и nextmember – это про предыдущей и последующие элементы в рамках иерархии, используется для задания функций.
ParallelPeriod это для задания смещений при сравнении данных за какие-то периоды
И так далее.
Функции управления наборами:
Children, Descendants(), Ascendants(),
Levels() – это для того, чтобы обращаться к элементам иерархии одного уровня.
Почитать Кинбалла – ETL, проектирование ХД, ЖЦ ХД, проектирование ХД в SQL Server 2008 R2.
