Добавить в избранное   Сделать стартовой   Главная   E-mail   Форум   Мой блог 
   
Cертификации

Errors

ETL

FAQ (по темам)

GIS

Web

wiki

Администрирование

Безопасность

Книги
Oracle, ...

Новости

ОС

Программирование

Проектирование БД

Производительность

Скачать

Советы

Тестирование

Установка

FAQ - по базам данных
FAQ - по базам данных
Установка СУБД
Oracle
Sybase
MySQL
PostgreSQL
MS SQL Server
Interbase, Firebird
Другие DB
Администрирование
Oracle
MySQL
Sybase
PostgreSQL
MS SQL Server
Interbase, Firebird
IBM DB2
Другие DB
Проектирование БД
Статьи
ETL
Теория БД
ErWin
Designer 2000
PowerDesigner
Хранилища данных
CASE средства
OLAP
Бизнес - анализ (BI)
Производительность
Oracle
MSSQL
Interbase, Firebird
IBM DB2
MySQL
PostgreSQL
SYBASE
Безопасность БД
Oracle
MS SQL Server
Инъекция SQL
Программирование
Transact-SQL
PL/SQL
C++
XML
SQL
PostgreSQL
MDX
Java
VBA Excel
Книги по базам
Oracle
Заказ книг
ОС
Установка и настройка
UBUNTU
ОС
Установка и настройка
UBUNTU
FAQ
FAQ - по базам данных
Главная arrow MDX arrow Язык MDX

Язык MDX

Печать E-mail

 Назначение языка MDX (Multidimensional Expressions) — предоставить в распоряжение разработчиков средство для более простого и эффективного доступа к многомерным структурам данных. В Microsoft SQL Server 2000 Analysis Services язык MDX используется для формирования запросов и описания алгоритмов получения вычисляемых значений. Следует сказать, что язык MDX никак не связан с Microsoft SQL Server 2000 Analysis Services, а является частью спецификации OLE DB for OLAP и, таким образом, поддерживается на уровне провайдера доступа к данным (OLE DB-провайдера), а не самого OLAP-хранилища. Этот язык можно сравнить с языком SQL. Но если SQL используется для извлечения реляционных данных, то MDX служит для извлечения многомерных данных. Естественно, что, как и в случае с языком SQL, возможны некоторые отклонения от стандарта. В этой статье мы рассмотрим язык MDX применительно к Microsoft SQL Server 2000 Analysis Services.


 



Использование языка MDX

MDX Sample Application

Для выполнения запросов на языке MDX мы будем использовать утилиту MDX Sample Application, входящую в состав Microsoft SQL Server 2000 Analysis Services. При запуске этой утилиты появляется диалоговая панель Connect, в которой следует указать имя сервера (имя компьютера, на котором установлен Microsoft SQL Server 2000 Analysis Services) и тип провайдера для связи с этим сервером — в нашем примере это будет MSOLAP.

После этого можно нажать кнопку OК. Нажатие кнопки Cancel отменяет данную диалоговую панель — в этом случае для связи с сервером следует воспользоваться командой Connect из меню File.

После соединения с сервером можно начинать создание MDX-запросов к многомерной базе данных и их выполнение. Часто бывает полезно знать структуру куба, к которому вы собираетесь обратиться. Утилита MDX Sample Application позволяет просматривать метаданные куба. Для этого необходимо выбрать интересующий вас куб в списке Cube и изучить его размерности и меры в древовидном представлении содержимого куба.

Верхняя панель утилиты MDX Sample Application предназначена для задания MDX-запросов. Мы можем либо выбрать один из предопределенных запросов (список Query), либо создать собственный. По умолчанию утилита использует запросы, находящиеся в файле MDXQuery.mdx, расположенном в папке MDXSample. Для загрузки другого файла или сохранения текущего используются команды меню File.

Можно вводить MDX-команды непосредственно в панели запросов или конструировать запрос, перетаскивая измерения и меры куба в панель запросов. Помимо этого можно использовать примеры функций из панели Syntax Examples. В этом случае в панель переносится копия примера, в котором следует изменить аргументы функций и разделители на нужные значения.

Выполнить запрос можно одним из трех способов:

  • выбрав команду Run в меню Query;

  • нажав клавиши F5;

  • нажав кнопку Run Query на панели инструментов.

Результат выполнения запроса отображается в нижней части экрана или, если выбрана опция View | Results, во весь экран.

Отметим, что MDX Sample Application не выполняет проверку корректности введенного MDX-запроса перед отсылкой его серверу на обработку.

Теперь вы готовы приступить к изучению языка MDX. Этой теме будет посвящена следующая часть данной статьи. В качестве исходных данных для выполнения примеров мы воспользуемся многомерной базой данных FoodMart, входящей в комплект поставки Microsoft SQL Server Analysis Services.

Синтаксис языка MDX

Запрос на языке MDX представляет собой набор команд, который выглядит следующим образом:

SELECT [<axis_specification>
       [, <axis_specification>...]]
  FROM [<cube_specification>]
[WHERE
[<slicer_specification>]]

где:

  • axis_specification — содержит описание осей куба;

  • cube_specification — содержит название куба;

  • slicer_specification — содержит описание срезов куба.

В языке MDX выражение SELECT используется для задания набора данных, содержащего подмножество многомерных данных. Простейший SELECT-запрос может выглядеть так:

SELECT FROM Sales

В этом примере мы получили общее число продаж (Unit Sales) для всего куба. Поскольку в запросе мы не указали имена членов измерений, были выбраны члены по умолчанию из каждого измерения. Наш запрос эквивалентен следующему:

SELECT {([Measures].[Unit Sales])} ON COLUMNS
FROM SALES

Более полный SELECT-запрос должен содержать следующую информацию:

  • число осей (в одном запросе можно указать до 128 осей);

  • список членов измерения, которые должны быть включены для каждой оси;

  • имя куба, к которому производится запрос;

  • список членов среза.

Рассмотрим более сложный пример, который позволит нам разобраться с различными элементами MDX-запроса:

SELECT
   { [Measures].[Unit Sales], [Measures].[Store Sales] } ON COLUMNS,
   { [Time].[1997], [Time].[1998] } ON ROWS
FROM Sales
WHERE ( [Store].[USA].[CA] )

 SELECT определяет используемые оси. В нашем примере их две: одна — задает значения для колонок, другая — для рядов:

{ [Measures].[Unit Sales], [Measures].[Store Sales] } ON COLUMNS,
{ [Time].[1997], [Time].[1998] } ON ROWS

Выражение FROM определяет источник многомерных данных, к которому обращен наш запрос. В данном примере — это куб Sales.

Выражение WHERE задает размерности или члены, используемые в качестве среза. В нашем примере мы ограничили данные размерностью Store.

Рассмотрим еще несколько запросов. В первом запросе мы получаем данные по продажам всех товаров для всех лет:

SELECT[Product].[Product Category].Members ON COLUMNS FROM Sales

Данные для целого года (1997):

SELECT[Product].[Product Category].Members ON COLUMNS,
  {[Time].[1997]} ON ROWS
FROM Sales

Данные по кварталам:

SELECT {([Measures].[Unit Sales])} ON COLUMNS,
{[Time].[Quarter].Members} ON ROWS
FROM Sales

Данные для первого квартала:

SELECT {([Measures].[Unit Sales])} ON COLUMNS,
{[Time].[1997].[Q1]} ON ROWS
FROM Sales

Данные для первого месяца первого квартала:

SELECT {([Measures].[Unit Sales])} ON COLUMNS,
{[Time].[1997].[Q1].[1]} ON ROWS
FROM Sales

Продажи для всех клиентов в США:

SELECT {([Measures].[Unit Sales])} ON COLUMNS,
{[Customers].[All Customers].[USA]} ON ROWS
FROM Sales

Продажи для всех клиентов в штате Калифорния:

SELECT {([Measures].[Unit Sales])} ON COLUMNS,
{[Customers].[All Customers].[USA].[CA]} ON ROWS
FROM Sales

Продажи товаров по категориям для всех клиентов в штате Калифорния:

SELECT {([Measures].[Unit Sales])} ON COLUMNS,
{[Product].[Product Family].Members} ON ROWS
FROM Sales
WHERE [Customers].[All Customers].[USA].[CA]

Продажи товаров по категориям для всех клиентов в штате Калифорния в первом квартале 1997 года:

SELECT {([Measures].[Unit Sales])} ON COLUMNS,
{[Product].[Product Family].Members} ON ROWS
FROM Sales
WHERE ([Customers].[All Customers].[USA].[CA], [Time].[1997].[Q1])

Продажи морепродуктов для всех клиентов в штате Калифорния в первом квартале 1997 года:

SELECT {([Measures].[Unit Sales])} ON COLUMNS,
{[Product].[Product Department].[Seafood]} ON ROWS
FROM Sales
WHERE ([Customers].[All Customers].[USA].[CA], [Time].[1997].[Q1])

Функции языка MDX

Функции, реализованные в языке MDX, разделяются на несколько групп, как показано в таблице.

Группы функций и входящие в них функции

Array Functions

SetToArray

 

 

 

 

Dimension, Hierarchy and Level Functions

 

 

 

 

Dimension

Dimensions

Hierarchy

Level

Levels

Logical Functions

 

 

 

 

Is

IsAncestor

IsEmpty

IsGeneration

IsLeaf

IsSibling

 

 

 

 

Member Functions

 

 

 

 

Ancestor

ClosingPeriod

Cousin

CurrentMember

DataMember

DefaultMember

FirstChild

FirstSibling

Ignore

Item

Lag

LastChild

LastSibling

Lead

LinkMember

Members

NextMember

OpeningPeriod

ParallelPeriod

Parent

PrevMember

StrToMember

ValidMeasure

 

 

Numeric Functions

 

 

 

 

Aggregate

Avg

CalculationCurrentPass

CalculationPassValue

CoalesceEmpty

Correlation

Count

Covariance

CovarianceN

DistinctCount

IIf

LinRegIntercept

LinRegPoint

LinRegR2

LinRegSlope

LinRegVariance

LookupCube

Max

Median

Min

Ordinal

Predict

Rank

RollupChildren

Stddev

StddevP

Stdev

StdevP

StrToValue

Sum

Value

Var

Variance

VarianceP

VarP

Set Functions

 

 

 

 

AddCalculatedMembers

AllMembers

Ancestors

Ascendants

Axis

BottomCount

BottomPercent

BottomSum

Children

Crossjoin

Descendants

Distinct

DrilldownLevel

DrilldownLevelBottom

DrillDownLevelTop

DrilldownMember

DrilldownMemberBottom

DrilldownMemberTop

DrillupLevel

DrillupMember

Except

Extract

Filter

Generate

Head

Hierarchize

Intersect

LastPeriods

Members

Mtd

NameToSet

NonEmptyCrossjoin

Order

PeriodToDate

Qtd

Siblings

StripCalculatedMembers

StrToSet

Subset

Tail

ToggleDrillState

TopCount

TopPercent

TopSum

Union

VisualTotals

Wtd

Ytd

 

 

String Functions

 

 

 

 

CalculationPassValue

CoalesceEmpty

Generate

IIf

LookupCube

MemberToStr

Name

Properties

SetToStr

TupleToStr

UniqueName

UserName

 

 

 

Tuple Functions

 

 

 

 

Current

Item

StrToTuple

 

 

Other Functions

 

 

 

 

Call

 

 

 

 

Кроме того, перечисленные функции языка MDX могут использоваться при вычислении различных выражений, в том числе при создании вычисляемых измерений. Кроме того, при необходимости для применения в MDX можно создавать функции, определенные пользователем (User Defined Functions, UDF), с помощью средств разработки, поддерживающих создание COM DLL.

Более подробные сведения о синтаксисе этого языка вы можете найти в Microsoft SQL Server Books Online, а примеры его практического применения  — в статье «Введение в MDX», опубликованной в этом номере журнала.

В следующей части статьи мы рассмотрим создание OLAP-клиентов, использующих для доступа к многомерным данным механизмы ADO и ADOMD.

 
 
« Пред.   След. »
Взаимосвязанные статьи
     

Последние добавленные статьи
Поиск
Ссылки
Главная
Скачать
Курсы
Роль АБД (SYSDBA)
Карта сайта
Автостекла
Контакты
Войти на сайт
Популярные статьи
Online - тесты
1Z0-042
Rambler's Top100 МЕТА - Украина. Рейтинг сайтов хостинг от freehost.com.ua

Все права защищены.SYSDBA 2010 | Если у Вас есть хороший материал пришлите его нам.