Многомерные выражения
Эта статья нуждается в дополнительных цитатах для проверки . ( июль 2016 г. ) |
Многомерные выражения ( 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 для получения подробной информации о языке запросов MDX. В Analysis Services 2005 компания Microsoft добавила некоторые расширения языка запросов многомерных выражений, например подзапросы. Такие продукты, как Microsoft Excel 2007, начали использовать эти новые расширения языка запросов MDX. Некоторые называют этот новый вариант MDX MDX 2005.
mdXML [ править ]
В 2001 году Совет XMLA выпустил стандарт XML для анализа (XMLA), который включал mdXML в качестве языка запросов. В спецификации XMLA 1.1 mdXML по существу представляет собой MDX, завернутый в XML-код. <Statement>
ярлык.
Типы данных MDX [ править ]
существует шесть основных типов данных В MDX .
- Скаляр . Скаляр — это число или строка . Его можно указать как литерал, например, число 5 или строку «OLAP», или он может быть возвращен функцией MDX, например
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]
или возвращается функцией MDX, например.PrevMember
,.Parent
,.FirstChild
и т. д. Обратите внимание, что все члены специфичны для иерархии. Если один и тот же продукт является членом двух разных иерархий ([Product].[ByManufacturer]
и[Product].[ByCategory]
), будут видны два разных элемента, которые, возможно, потребуется скоординировать в наборах и кортежах (см. ниже). - Кортеж . Кортеж — это упорядоченная коллекция из одного или нескольких членов из разных измерений. Кортежи можно указать путем перечисления их членов, например
([Time].[Fiscal].[Month].[August], [Customer].[By Geography].[All Customers].[USA], [Measures].[Sales])
или возвращается функцией MDX, например.Item
. - Набор . Set — это упорядоченная коллекция кортежей с одинаковой размерностью или иерархичностью в случае реализации Microsoft. Его можно указать, перечисляя кортежи, например
{([Measures].[Sales], [Time].[Fiscal].[2006]), ([Measures].[Sales], [Time].[Fiscal].[2007])}
или возвращается функцией или оператором MDX, напримерCrossjoin
,Filter
,Order
,Descendants
и т. д. - Другие типы данных. Свойства членов эквивалентны атрибутам в смысле хранилища данных. Их можно получить по имени в запросе с помощью предложения оси PROPERTIES запроса. Доступ к скалярному значению свойства члена для некоторого члена можно получить в выражении через MDX, либо назвав свойство (например,
[Product].CurrentMember.[Sales Price]
) или с помощью специальной функции доступа (например,[Product].CurrentMember.Properties("Sales Price")
). В ограниченном контексте MDX допускает и другие типы данных — например, массив . внутри можно использоватьSetToArray
Функция для указания массива, который не обрабатывается MDX, но передается пользовательской функции в библиотеке ActiveX. Объекты других типов данных представлены в виде скалярных строк, указывающих имена объектов, например имя группы мер в Microsoft.MeasureGroupMeasures
функция или имя ключевого показателя эффективности, например, MicrosoftKPIValue
илиKPIGoal
функции.
Пример запроса [ изменить ]
В следующем примере, адаптированном из электронной документации по SQL Server 2000, показан базовый запрос многомерных выражений, использующий оператор SELECT. Этот запрос возвращает набор результатов, содержащий объемы продаж магазинов в штате Калифорния за 2002 и 2003 годы.
SELECT
{ [Measures].[Store Sales] } ON COLUMNS,
{ [Date].[2002], [Date].[2003] } ON ROWS
FROM Sales
WHERE ( [Store].[USA].[CA] )
В этом примере запрос определяет следующую информацию о наборе результатов.
- Предложение SELECT устанавливает оси запроса как элемент «Продажи в магазине» измерения «Показатели», а также элементы 2002 и 2003 измерения «Дата».
- Предложение FROM указывает, что источником данных является куб Sales.
- Предложение WHERE определяет «ось среза» как элемент «Калифорния» измерения «Магазин».
Примечание. В запросе MDX можно указать до 128 осей запроса.
Если вы создаете две оси, одна из них должна быть осью столбца, а другая — осью строк, хотя не имеет значения, в каком порядке они появляются в запросе. Если вы создаете запрос, имеющий только одну ось, это должна быть ось столбца. Квадратные скобки вокруг конкретного идентификатора объекта не являются обязательными, если идентификатор объекта не является одним из зарезервированных слов и не содержит других символов, кроме букв, цифр или знаков подчеркивания.
SELECT
[Measures].[Store Sales] ON COLUMNS,
[Date].Members ON ROWS
FROM Sales
WHERE ( [Store].[USA].[CA] )
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б Карл Нолан. «Управление данными OLAP и их запрос с помощью ADOMD и многомерных выражений» . Майкрософт . Проверено 5 марта 2008 г.
Дальнейшее чтение [ править ]
- Джордж Споффорд, Сивакумар Харинат, Крис Уэбб, Дилан Хай Хуанг, Франческо Чиварди: Решения MDX: с помощью Microsoft SQL Server Analysis Services 2005 и Hyperion Essbase . Уайли, 2006 г., ISBN 0-471-74808-0
- Моша Пасумански , Марк Уайтхорн, Роб Заре: быстрый путь к MDX . ISBN 1-84628-174-1
- Ларри Сакетт: Отчеты и аналитика MDX с помощью SAP NetWeaver BW . SAP Press, 2008, 978-1-59229-249-3.