Многомерные выражения (MDX) - это язык запросов для оперативной аналитической обработки (OLAP) с использованием системы управления базами данных . Как и SQL , это язык запросов для кубов OLAP . [1] Это также язык вычислений с синтаксисом, аналогичным формулам электронных таблиц.
Задний план
Язык многомерных выражений (MDX) предоставляет специализированный синтаксис для запросов и управления многомерными данными, хранящимися в кубах OLAP . [1] Хотя некоторые из них можно перевести в традиционный SQL, часто требуется синтез неуклюжих выражений SQL даже для очень простых выражений MDX. MDX был принят подавляющим большинством поставщиков OLAP и стал стандартом для систем OLAP.
История
MDX был впервые представлен как часть спецификации OLE DB для OLAP в 1997 году от Microsoft . Он был изобретен группой инженеров SQL Server, в которую входил Моша Пасумански . За спецификацией быстро последовал коммерческий выпуск Microsoft OLAP Services 7.0 в 1998 году, а затем и Microsoft Analysis Services . Последняя версия спецификации OLE DB для OLAP была выпущена Microsoft в 1999 году.
Хотя это был не открытый стандарт, а спецификация, принадлежащая Microsoft, он был принят широким кругом поставщиков OLAP.
Спецификация XML для анализа ссылается на спецификацию OLE DB для OLAP для получения подробной информации о языке запросов многомерных выражений. В Analysis Services 2005 Microsoft добавила некоторые расширения языка запросов многомерных выражений, такие как подзапросы. Такие новые расширения языка запросов MDX начали использовать в таких продуктах, как Microsoft Excel 2007. Некоторые называют этот новый вариант MDX MDX 2005.
mdXML
В 2001 году Совет XMLA выпустил стандарт XML для анализа (XMLA), который включал mdXML в качестве языка запросов. В спецификации XMLA 1.1 mdXML, по сути, представляет собой многомерные выражения, заключенные в
тег XML .
Типы данных многомерных выражений
В многомерных выражениях есть шесть основных типов данных.
- Скалярный . Скаляр - это число или строка . Его можно указать как литерал, например число 5 или строку «OLAP», или он может быть возвращен функцией многомерных выражений, например
Aggregate
(число),UniqueName
(строка),.Value
(число или строка) и т. Д. - Измерение / Иерархия . Размер является измерением из куба . Измерение - это основной организатор информации о показателях и атрибутах в кубе. MDX не знает и не предполагает никаких зависимостей между измерениями - они считаются взаимно независимыми. Измерение будет содержать некоторые элементы (см. Ниже), организованные в некоторую иерархию или иерархии, содержащие уровни. Он может быть определен своим уникальным именем, например,
[Time]
или может быть возвращен функцией MDX, например.Dimension
. Иерархия представляет собой измерение иерархии из куба . Он может быть определен своим уникальным именем, например,[Time].[Fiscal]
или может быть возвращен функцией MDX, например.Hierarchy
. Иерархии содержатся в измерениях. ( Спецификация OLEDB для OLAP MDX не различает типы данных измерения и иерархии. Некоторые реализации, такие как Microsoft Analysis Services, обрабатывают их по-разному. ) - Уровень . Уровень - это уровень в иерархии измерений. Он может быть определен своим уникальным именем, например,
[Time].[Fiscal].[Month]
или может быть возвращен функцией MDX, например.Level
. - Член . Член - это член иерархии измерений. Он может быть определен своим уникальным именем, например
[Time].[Fiscal].[Month].[August 2006]
, квалифицированным именем, например,[Time].[Fiscal].[2006].[Q3].[August 2006]
или возвращенным функцией многомерных выражений, например.PrevMember
,.Parent
и.FirstChild
т. Д. Обратите внимание, что все элементы специфичны для иерархии. Если один и тот же продукт является членом двух разных иерархий ([Product].[ByManufacturer]
и[Product].[ByCategory]
), будут видны два разных элемента, которые, возможно, потребуется скоординировать в наборах и кортежах (см. Ниже). - Кортеж . Кортеж - это упорядоченная коллекция из одного или нескольких элементов из разных измерений. Кортежи могут быть указаны путем перечисления членов, например,
([Time].[Fiscal].[Month].[August], [Customer].[By Geography].[All Customers].[USA], [Measures].[Sales])
или возвращены функцией многомерных выражений, например.Item
. - Установить . Set - это упорядоченный набор кортежей с одинаковой размерностью или иерархией в случае реализации Microsoft. Можно указать перечисляя кортежи, например ,
{([Measures].[Sales], [Time].[Fiscal].[2006]), ([Measures].[Sales], [Time].[Fiscal].[2007])}
или возвращаемый функцией или оператором MDX, напримерCrossjoin
,Filter
,Order
, иDescendants
т.д. - Другие типы данных. Свойства элементов эквивалентны атрибутам в смысле хранилища данных. Их можно получить по имени в запросе с помощью предложения оси PROPERTIES запроса. К значению скалярных данных свойства члена для некоторого члена можно получить доступ в выражении через многомерные выражения, присвоив свойству имя (например,
[Product].CurrentMember.[Sales Price]
) или используя специальную функцию доступа (например,[Product].CurrentMember.Properties("Sales Price")
). В ограниченном контексте MDX допускает также другие типы данных - например, Array можно использовать внутриSetToArray
функции для указания массива, который не обрабатывается MDX, но передается в пользовательскую функцию в библиотеке ActiveX. Объекты других типов данных представлены как скалярные строки, указывающие имена объектов, такие как имя группы мер вMeasureGroupMeasures
функции Microsoft или имя KPI, например, в функциях MicrosoftKPIValue
илиKPIGoal
.
Пример запроса
В следующем примере, адаптированном из электронной документации по SQL Server 2000, показан базовый запрос многомерных выражений, в котором используется инструкция SELECT. Этот запрос возвращает набор результатов, содержащий суммы продаж магазинов в 2002 и 2003 годах для магазинов в штате Калифорния.
ВЫБРАТЬ { [ Меры ] . [ Продажи в магазине ] } НА КОЛОНКАХ , { [ Дата ] . [ 2002 ] , [ Дата ] . [ 2003 ] } ПО РЯДАМ ОТ ПРОДАЖ ГДЕ ( [ Магазин ] . [ США ] . [ CA ] )
В этом примере запрос определяет следующую информацию о наборе результатов
- Предложение SELECT устанавливает оси запроса в качестве члена "Продажи магазина" измерения "Меры" и элементов 2002 и 2003 гг. Измерения "Дата".
- Предложение FROM указывает, что источником данных является куб Sales.
- Предложение WHERE определяет «ось среза» как член California измерения Store.
Примечание. В запросе многомерных выражений можно указать до 128 осей.
Если вы создаете две оси, одна должна быть осью столбца, а другая - осью строки, хотя не имеет значения, в каком порядке они появляются в запросе. Если вы создаете запрос, который имеет только одну ось, это должна быть ось столбца. Квадратные скобки вокруг конкретного идентификатора объекта являются необязательными, если идентификатор объекта не является одним из зарезервированных слов и не содержит других символов, кроме букв, цифр или подчеркиваний.
ВЫБРАТЬ [ Меры ] . [ Продажи в магазине ] НА КОЛОНКАХ , [ Дата ] . Члены НА ПОЯСАХ ОТ ПРОДАЖ ГДЕ ( [ Магазин ] . [ США ] . [ CA ] )
Рекомендации
- ^ а б Карл Нолан. «Управление данными OLAP и запросы к ним с помощью ADOMD и многомерных выражений» . Microsoft . Проверено 5 марта 2008 .
дальнейшее чтение
- Джордж Споффорд, Сивакумар Харинатх, Крис Уэбб, Дилан Хай Хуанг, Франческо Чиварди: MDX-решения: с помощью Microsoft SQL Server Analysis Services 2005 и Hyperion Essbase . Wiley, 2006 г., ISBN 0-471-74808-0
- Моша Пасумански , Марк Уайтхорн, Роб Заре: Быстрый переход к MDX . ISBN 1-84628-174-1
- Ларри Сакетт: Отчетность и аналитика многомерных выражений с помощью SAP NetWeaver BW . SAP Press, 2008, 978-1-59229-249-3