Многомерные выражения

Многомерные выражения ( MDX ) — это язык запросов для онлайн-аналитической обработки (OLAP) с использованием системы управления базами данных . Подобно SQL , это язык запросов для кубов OLAP . [1] Это также язык вычислений с синтаксисом, похожим на формулы электронных таблиц.

Фон

Язык MultiDimensional eXpressions (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 for Analysis ссылалась на спецификацию OLE DB for OLAP для получения подробной информации о языке запросов MDX. В Analysis Services 2005 компания Microsoft добавила некоторые расширения языка запросов MDX, такие как подвыборки. Такие продукты, как Microsoft Excel 2007, начали использовать эти новые расширения языка запросов MDX. Некоторые называют этот новый вариант MDX MDX 2005.

mdXML

В 2001 году Совет XMLA выпустил стандарт XML for Analysis (XMLA), который включал mdXML как язык запросов. В спецификации XMLA 1.1 mdXML по сути является MDX, завернутым в <Statement>тег XML.

Типы данных MDX

В MDX существует шесть основных типов данных .

  • Скаляр . Скаляр — это число или строка . Он может быть указан как литерал, например, число 5 или строка "OLAP", или может быть возвращен функцией MDX, например Aggregate(число), UniqueName(строка), .Value(число или строка) и т. д.
  • Измерение / Иерархия . Измерение — это измерение куба . Измерение — это основной организатор информации об измерениях и атрибутах в кубе. MDX не знает и не предполагает никаких зависимостей между измерениями — предполагается, что они взаимно независимы. Измерение будет содержать некоторые элементы (см. ниже), организованные в некоторую иерархию или иерархии, содержащие уровни. Оно может быть указано его уникальным именем, например, или его[Time] может вернуть функция MDX, например .Dimension, . Иерархия — это иерархия измерений куба . Оно может быть указано его уникальным именем, например , или его может вернуть функция MDX, например , . Иерархии содержатся в измерениях. ( Спецификация OLEDB для OLAP MDX не различает типы данных измерений и иерархий. Некоторые реализации, такие как Microsoft Analysis Services, обрабатывают их по-разному. )[Time].[Fiscal].Hierarchy
  • Уровень . Уровень — это уровень в иерархии измерений. Он может быть указан по своему уникальному имени, например [Time].[Fiscal].[Month], или может быть возвращен функцией MDX, например .Level.
  • Член . Член — это член иерархии измерений. Он может быть указан по своему уникальному имени, например [Time].[Fiscal].[Month].[August 2006], по квалифицированному имени, например, [Time].[Fiscal].[2006].[Q3].[August 2006]или возвращен функцией MDX, например .PrevMember, и т. д. Обратите внимание, что все члены являются специфичными для иерархии. Если один и тот же продукт является членом двух разных иерархий ( .Parentи ), будут видны два разных члена, которые, возможно, необходимо будет скоординировать в наборах и кортежах (см. ниже)..FirstChild[Product].[ByManufacturer][Product].[ByCategory]
  • Tuple . Tuple — это упорядоченная коллекция из одного или нескольких членов из разных измерений. Кортежи могут быть указаны путем перечисления членов, например ([Time].[Fiscal].[Month].[August], [Customer].[By Geography].[All Customers].[USA], [Measures].[Sales]), или возвращены функцией MDX, например .Item.
  • Set . 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 также допускает другие типы данных - например, Array может использоваться внутри SetToArrayфункции для указания массива, который не обрабатывается MDX, а передается в определяемую пользователем функцию в библиотеке ActiveX. Объекты других типов данных представлены в виде скалярных строк, указывающих имена объектов, такие как имя группы мер в функции Microsoft MeasureGroupMeasuresили имя KPI, например, в функциях Microsoft KPIValueили KPIGoal.

Пример запроса

Следующий пример, адаптированный из SQL Server 2000 Books Online, показывает базовый запрос MDX, который использует оператор SELECT. Этот запрос возвращает набор результатов, содержащий объемы продаж магазинов за 2002 и 2003 годы для магазинов в штате Калифорния.

ВЫБИРАТЬ { [ Меры ] . [ Продажи в магазине ] } В СТОЛБЦАХ ,     { [ Дата ] . [ 2002 ] , [ Дата ] . [ 2003 ] } В СТРОКАХ     ОТ Продаж ГДЕ ( [ Магазин ] . [ США ] . [ КАЛИФОРНИЯ ] )   

В этом примере запрос определяет следующую информацию о наборе результатов:

  • Предложение SELECT устанавливает оси запроса в качестве элемента Store Sales измерения Measures и элементов 2002 и 2003 измерения Date.
  • Предложение FROM указывает, что источником данных является куб Sales.
  • Предложение WHERE определяет «ось среза» как элемент «Калифорния» измерения «Магазин».

Примечание: в запросе MDX можно указать до 128 осей запроса.

Если вы создаете две оси, одна должна быть осью столбцов, а другая — осью строк, хотя неважно, в каком порядке они появляются в запросе. Если вы создаете запрос, который имеет только одну ось, это должна быть ось столбцов. Квадратные скобки вокруг конкретного идентификатора объекта необязательны, если только идентификатор объекта не является одним из зарезервированных слов и не содержит иных символов, кроме букв, цифр или подчеркиваний.

ВЫБИРАТЬ [ Меры ] . [ Продажи в магазине ] НА КОЛОННАХ ,   [ Дата ] . Участники В РЯДАХ  ОТ Продаж ГДЕ ( [ Магазин ] . [ США ] . [ КАЛИФОРНИЯ ] )   

Ссылки

  1. ^ ab Карл Нолан. "Манипулирование и запрос данных OLAP с использованием ADOMD и многомерных выражений". Microsoft . Получено 2008-03-05 .

Дальнейшее чтение

  • Джордж Споффорд, Сивакумар Харинат, Крис Уэбб, Дилан Хай Хуан, Франческо Чиварди: MDX-решения: с Microsoft SQL Server Analysis Services 2005 и Hyperion Essbase . Wiley, 2006, ISBN 0-471-74808-0 
  • Моша Пасумански , Марк Уайтхорн, Роб Заре: Быстрый путь к MDX . ISBN 1-84628-174-1 
  • Ларри Сакетт: Отчетность и аналитика MDX с SAP NetWeaver BW . SAP Press, 2008, 978-1-59229-249-3
  • Справочник по многомерным выражениям (MDX) из Microsoft Docs
Взято с "https://en.wikipedia.org/w/index.php?title=Многомерные_выражения&oldid=1173211821"