Автор работы: Пользователь скрыл имя, 18 Декабря 2012 в 12:30, реферат
DX (MultiDimensionaleXpressions — язык запросов к многомерным данным) был впервые введен в рамках спецификации OLE DB for OLAP для работы с многомерными кубами. MDX — это расширение языка SQL (изначально ориентированного, как известно, на реляционную модель данных), предназначенное для манипуляции многомерным представлением информации, наиболее удобным для задач анализа.
Предисловие
DX (MultiDimensional eXpressions — язык запросов к многомерным данным) был впервые введен в рамках спецификации OLE DB for OLAP для работы с многомерными кубами. MDX — это расширение языка SQL (изначально ориентированного, как известно, на реляционную модель данных), предназначенное для манипуляции многомерным представлением информации, наиболее удобным для задач анализа. Действительно, их синтаксис во многом схож, и для тех читателей, кому довелось работать с SQL, освоение MDX не составит особого труда. Будучи открытым стандартом, MDX является основным инструментом программирования для Microsoft SQL Server 2000 Analysis Services. Учитывая актуальность аналитических приложений в современном бизнесе, следует отметить, что знание MDX позволяет значительно упростить их разработку на всех этапах производственного цикла начиная с постановки задачи, так как этот язык специально создавался для указанной предметной области и оперирует привычными для аналитика категориями.
Эта статья носит вводный
характер. Не подменяя собой руководство
по языку MDX, она знакомит читателя с
описанием базовых
Область действия и основное назначение
существуют два основных аспекта использования MDX . Первым и наиболее распространенным является построение запросов для получения наборов данных, находящихся в многомерной структуре. При построении запроса используется метаинформация, описывающая данные в терминах предметной области.
Вторым аспектом MDX, зачастую недооцениваемым на практике, служит формирование бизнес-модели, на основе которой возможно проведение наиболее полного и емкого анализа данных предприятия или организации. Для достижения этой цели необходимы не только базовые знания языка MDX, но и профессиональное владение предметной областью (будь то финансовый анализ банковской деятельности или управление авиапредприятием).
Следует отметить, что хотя владение базовыми конструкциями языка является необходимым этапом в освоении многомерной модели, основная сила MDX осознается при следующем шаге — овладении моделированием бизнес-логики. Именно здесь происходит качественный скачок в знаниях, осуществляется их систематизация и из набора разрозненных функций и выражений образуется стройная система организации бизнес-логики и формирования запросов. Дальнейшее совершенствование в основном касается оптимизации выполнения запросов. Это также является немаловажным аспектом при построении промышленных аналитических систем.
Благодаря грамотно построенной бизнес-логике значительно упрощается задача построения запросов. Цель разработчика MDX состоит в том, чтобы скрыть от пользователя громоздкую логику формирования расчетных величин — будь то обычный нарастающий итог или значение средневзвешенной продукции, предоставив ему возможность выбора этих величин как обычных мер и членов измерений.
Задачи языка можно определить следующим образом:
MDX «понимает» многомерную модель устройства данных (куб, измерение, мера, ячейка);
язык позволяет осуществлять
навигацию по многомерному
MDX нужен не только
разработчикам и
Основные понятия многомерной модели
поскольку перевод некоторых терминов, используемых в технологиях OLAP, на русский язык еще не утвердился окончательно, мы опишем необходимый набор ключевых слов, которые будут использованы в статье.
Хранилище данных, ХД (DataWarehouse, DW) — информация, получаемая из различных источников и накапливаемая в течение продолжительного промежутка времени и отражающая основные или наиболее значимые направления деятельности предприятия, а также средства хранения этой информации и обеспечения доступа к ней.
Сервер анализа (Analysis Server) — структура хранения многомерных данных и метаданных, в простейшем случае специальным образом организованная, содержащая описания создаваемых запросов и формул и другую аналитическую информацию плюс программные средства для поддержания ее целостности и выполнения запросов.
Куб (Cube) — часть данных сервера анализа, относящаяся к определенной предметной области, с которой осуществляется работа. Куб представлен набором мер и измерений.
Мера, или факт, или показатель (Measure) — параметры предметной области, служащие предметом анализа.
Измерение (Dimension) — понятия предметной области, на основании анализируются меры. Каждое измерение может иметь иерархическую структуру уровней. В частности, измерение Время может включать уровни Год, Квартал, Месяц, Число, а измерение География может включать уровни Весь мир, Страна, Город.
Член (Member) — единица описания на каждом уровне иерархии. Например, для измерения География. На уровне городов это — Москва, Санкт-Петербург, Киев, Россия, Украина и т.д.
Кортеж (Tuple) — коллекция членов одного или нескольких разных измерений. Необходим для определения местоположения конкретной ячейки внутри многомерного куба или набора ячеек (Set), участвующих в запросе.
Множество (Set) — набор кортежей.
Пример многомерной модели (куб «Учет рейсов»)
вкачестве примера многомерной модели данных рассмотрим куб «Учет рейсов», созданный на основе данных, которые поступят из транзакционных приложений, регистрирующих деятельность абстрактного аэропорта. Сами данные (архив многомерной базы «Авиаперевозки.CAB» и резервная копия транзакционной БД Flights.bak) находятся на прилагаемом к журналу компакт-диске. Если у вас установлен Microsoft SQL Server 2000, вы можете воспользоваться ими, чтобы практическая работа с примерами была более наглядной. Для работы с приведенными здесь примерами можно использовать модельное клиентское приложение MDX Sample Application в составе Analysis Services.
Итак, данные оперативных систем погружены в куб для решения задач анализа объемных (не финансовых) результатов работы аэропорта. В этом случае будут анализироваться пассажиро- и грузопотоки, поэтому в качестве мер (показателей) куба «Учет рейсов» будут фигурировать данные о количестве пассажиров и весе перевозимых авиалайнерами грузов. Теперь рассмотрим, в каких разрезах необходимо проводить анализ, то есть какие требуются измерения. Представим, что экономической службе аэропорта требуются сравнительные отчеты общих объемов ежемесячных и квартальных перевозок, а также возможность сопоставлять объемы перевозок различных авиакомпаний (для изменения условий контрактов с ними в области льгот и снижения тарифов оплаты по амортизационным взносам). Кроме того, для организации более логичного распределения грузоперевозок представляют интерес и географический анализ, и сравнительные данные различных типов самолетов. Таким образом, в куб включаются следующие измерения и меры:
Измерения: Авиакомпания, Пункт назначения, Время, Тип самолета;
Показатели: Кол-во пасс, Вес груза.
Кубы и ячейки
для того чтобы продемонстрировать структуру многомерного куба и объяснить, каким образом организован доступ к ячейкам, обратимся к рис. 3, на котором изображен трехмерный куб, содержащий данные о количестве пассажиров, весе почты и груза, перевозимых через аэропорт под названием «Мягкой посадки», в разрезе времени отправки рейсов и принадлежности самолетов авиакомпаниям.
Модель куба представляет собой набор ячеек, каждая из которых содержит значение одного из показателей (мер) и привязана к одному из значений каждого измерения. Например, данные ячейки содержат следующую информацию:
«43»: 31 мая а/компанией «Комета» было перевезено 43 пассажира.
«50»: 1 июня а/к «Орел» доставлено 50 тонн груза.
Базовые термины языка MDX
Используя основные понятия и объекты многомерной модели, рассмотренные выше, обратимся к синтаксису языка.
Измерения и меры как частный случай измерений, например [Время], [Тип самолета], [Measures]. Analysis Services позволяет организовать несколько иерархий для одного измерения. Например, для различных отчетов могут потребоваться [Время].[недели от начала года] и [Время].[по месяцам]. В нашем примере каждое измерение имеет только одну иерархию. Остановимся более подробно на описании измерений в запросе (рис. 4).
Как правило, измерение содержит несколько уровней, по которым производится агрегация показателей.
Например, для измерения «Время» обычно имеются уровни: [All] (сумма всех загруженных в ХД дней), [Год] (сумма за год), [Месяц] (агрегация по конкретному дню), [День] (данные непосредственно за день).
Для аналитических систем регистрация временных величин ниже уровня [День] обычно не производится, так как системы поддержки и принятия решений основываются не на оперативном, а на временном, более глобальном, анализе. Измерение [Пункт назначения] разбито на уровни по географической принадлежности пунктов назначения рейсов: [Регион], [Страна], [Город].
Именование измерений
производится следующим образом. Все
заголовки, включающие специальные
символы (пробелы, русские буквы
и т.д.), заключаются в квадратные
скобки. Для указания необходимого
члена измерения можно
31 мая 2000 г [Время].[Все время].[2000].[Май].[31].
Членом измерения может быть значение на любом уровне измерения, в частности значение месяца, года или общее значение [Все время]. Необходимо отметить, что у каждого измерения существует член по умолчанию (default member), который используется в случае, если описание измерения в явном виде в запросе не участвует. Обычно в роли Default Member выступает единственный член специального уровня All, который добавляется автоматически при создании измерения и содержит совокупные результаты по всему данному измерению. Если этот уровень отсутствует (Advanced -> All Level = No), то в его роли выступает первый член следующего уровня. В Analysis Services (в отличие от OLAP Services версии 7.0) значением по умолчанию можно назначить любой член или MDX-выражение измерения.
Чтобы правильно сослаться на член измерения, необходимо описать полный путь к нему по иерархии измерения, начиная с самого верхнего уровня, например:
[Пункт назначения].[Все пункты].[Россия].[РФ].[Москва]
Однако если имя члена уникально в пределах измерения, то можно опустить наименования промежуточных уровней:
[Пункт назначения].[Москва],
а в случае уникальности среди измерений — и наименование самого измерения: [Москва],
хотя мы бы не рекомендовали это делать.
Чтобы сослаться на ячейку «43» в примере трехмерного куба, необходимо описать следующий кортеж:
([Авиакомпания].[Комета], [Время].[2000].[Май].[31], Measures.[Колво пасс]),
Помните, что не вошедшие в кортеж измерения присутствуют в нем неявно за счет наличия членов по умолчанию. Таким образом, данный кортеж в действительности эквивалентен:
([Авиакомпания].[Комета], [Время].[2000], [Пункт назначения].[Все пункты], [Тип самолета].[Все типы], [Measures].[Колво пасс])
Порядок перечисления измерений и мер в кортеже не имеет существенного значения. Обратите внимание, что кортеж заключается в круглые скобки, в то время как множество — в фигурные:
{([Время].[1997],[Measures].[
Множество можно не заключать в фигурные скобки, если оно является результатом функции, например
[Пункт назначения].Members
Набор всех членов в интервале задается при помощи двоеточия:
{[Время].[1997]:[Время].[1999]
Пример запроса
родолжим рассмотрение синтаксиса языка MDX, обратившись к простому запросу. Предположим, требуется получить сведения о ежемесячной перевозке пассажиров авиакомпанией «Орел» за январь и февраль 2000 года:
SELECT
{[Авиакомпания].[Орел]} ON COLUMNS,
{[2000].[Январь],[2000].[
FROM [Учет рейсов]
WHERE [Measures].[Колво пасс]
В запросе указаны только измерения «Авиакомпания» и «Время». По измерениям «Тип самолета», «Пункт назначения» члены не были указаны, и было принято значение «По умолчанию» (уровень [All]). В этом случае по типам самолетов и городам назначения произведена агрегация значений. Запрос с учетом всех измерений имеет следующий вид:
SELECT
{[Авиакомпания].[Орел]} ON COLUMNS,
{[Январь],[Февраль]} ON ROWS
FROM [Учет рейсов]
WHERE
([Measures].[Колво пасс] ,
[Пункт назначения].[Все пункты],
[Тип самолета].[Все типы ])
Характерным отличием языка MDX от SQL является то, что результатом запроса всегда являются значения одной или нескольких мер. Невозможно получить значения измерений, оторванные от мер (фактов). Например, в случае трех наиболее напряженных по пассажиропотоку маршрутов (рис. 6) запрос имеет следующий вид.