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

Многомерные выражения (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 - это, по сути, MDX, завернутый в XML. <Statement> тег.

Типы данных многомерных выражений

Есть шесть основных типы данных в многомерных выражениях

  • Скалярный. Скаляр - это либо номер или нить. Его можно указать как литерал, например число 5 или строка "OLAP", или он может быть возвращен функцией многомерных выражений, например Совокупный (номер), Уникальное имя (нить), .Ценить (число или строка) и т. д.
  • Измерение/Иерархия. Размерность - это измерение из куб. Измерение - это основной организатор информации о показателях и атрибутах в кубе. MDX не знает и не предполагает каких-либо зависимостей между измерениями - они считаются взаимно независимыми. Измерение будет содержать некоторые элементы (см. Ниже), организованные в некоторую иерархию или иерархии, содержащие уровни. Его можно указать по уникальному имени, например [Время] или он может быть возвращен функцией многомерных выражений, например .Измерение. Иерархия - это измерение иерархия из куб. Его можно указать по уникальному имени, например [Время]. [Финансовые] или он может быть возвращен функцией многомерных выражений, например .Hierarchy. Иерархии содержатся в измерениях. (Спецификация OLEDB для OLAP MDX не различает типы данных измерения и иерархии. Некоторые реализации, такие как Microsoft Analysis Services, рассматривают их по-разному.)
  • Уровень. Уровень - это уровень в иерархии измерений. Его можно указать по уникальному имени, например [Время]. [Финансовый]. [Месяц] или он может быть возвращен функцией многомерных выражений, например .Уровень.
  • Член. Член - это член иерархии измерений. Его можно указать по уникальному имени, например [Время]. [Финансовые]. [Месяц]. [Август 2006 г.], по квалифицированному имени, например [Время]. [Финансовый]. [2006]. [Q3]. [Август 2006] или возвращается функцией многомерных выражений, например .PrevMember, .Parent, .Первый ребенок и т.д. Обратите внимание, что все элементы относятся к иерархии. Если один и тот же продукт является членом двух разных иерархий ([Продукт]. [ByManufacturer] и [Продукт]. [По категории]), будут видны два разных члена, которые, возможно, потребуется скоординировать в наборах и кортежах (см. ниже).
  • Кортеж. Кортеж - это упорядоченная коллекция из одного или нескольких элементов из разных измерений. Кортежи могут быть указаны путем перечисления членов, например ([Время]. [Финансовый]. [Месяц]. [Август], [Клиент]. [По географическому региону]. [Все клиенты]. [США], [Меры]. [Продажи] ») или возвращается функцией многомерных выражений, например .Элемент.
  • Набор. Set - это упорядоченный набор кортежей с одинаковой размерностью или иерархией в случае реализации Microsoft. Его можно указать, перечисляя кортежи, например {([Меры]. [Продажи], [Время]. [Финансовые]. [2006]), ([Меры]. [Продажи], [Время]. [Финансовые]. [2007])} или возвращается функцией или оператором многомерных выражений, например Crossjoin, Фильтр, Заказ, Потомки и т.п.
  • Другие типы данных. Свойства элемента эквивалентны атрибуты в смысле хранилища данных. Их можно получить по имени в запросе с помощью предложения оси PROPERTIES запроса. Доступ к скалярным данным свойства элемента для некоторого элемента можно получить в выражении через многомерные выражения, либо путем присвоения имени свойству (например, [Продукт] .CurrentMember. [Цена продажи]) или с помощью специальной функции доступа (например, [Продукт] .CurrentMember.Properties («Цена продажи»)). В ограниченном контексте MDX допускает также другие типы данных, например Множество можно использовать внутри SetToArray функция, чтобы указать массив, который не обрабатывается многомерными выражениями, но передается пользовательской функции в библиотеке ActiveX. Объекты других типов данных представлены в виде скалярных строк, указывающих имена объектов, например, имя группы мер в Microsoft. MeasureGroupMeasures название функции или KPI, например, в Microsoft KPIValue или же КПИЦель функции.

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

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

1 ВЫБРАТЬ2 {[Меры].[Магазин продаж]}НАКОЛОННЫ,3 {[Дата].[2002],[Дата].[2003]}НАРЯДЫ4 ИЗПродажи5 КУДА([Магазин].[Соединенные Штаты Америки].[CA])

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

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

Примечание. В запросе многомерных выражений можно указать до 128 осей.

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

1 ВЫБРАТЬ2 [Меры].[Магазин продаж]НАКОЛОННЫ,3 [Дата].ЧленыНАРЯДЫ4 ИЗПродажи5 КУДА([Магазин].[Соединенные Штаты Америки].[CA])

Рекомендации

  1. ^ а б Карл Нолан. «Управление данными 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
  • Ларри Сакетт: Отчетность и аналитика многомерных выражений с помощью SAP NetWeaver BW. SAP Press, 2008, 978-1-59229-249-3

внешняя ссылка