32
Хранилища данных Автор: кандидат физ.-мат. наук, Степанов Р.Г. Казанский (Приволжский) Федеральный Университет Казань, 2011

Хранилища данных

  • Upload
    thane

  • View
    52

  • Download
    0

Embed Size (px)

DESCRIPTION

Хранилища данных. Автор: кандидат физ.-мат. наук, Степанов Р.Г. Казанский (Приволжский) Федеральный Университет Казань, 2011. Язык MDX. SQL — Structured Query Language (язык структурированных запросов). Служит для выполнения запросов к реляционной базе данных. - PowerPoint PPT Presentation

Citation preview

Page 1: Хранилища данных

Хранилища данных

Автор: кандидат физ.-мат. наук,Степанов Р.Г.

Казанский (Приволжский) Федеральный Университет

Казань, 2011

Page 2: Хранилища данных

Язык MDX

SQL — Structured Query Language (язык структурированных запросов). Служит для выполнения запросов к реляционной базе данных.

MDX — Multi-Dimendional eXpressions (язык многомерных выражений). Используется для извлечения из баз данных OLAP. Язык MDX позволяет выполнять более сложные операции, чем SQL.

Изначально MDX разработан компанией Microsoft в 1998 г.

Page 3: Хранилища данных

Язык MDX

MDX поддерживается многими ведущими производителями решений для OLAP. Серверы: MS SQL Server Analysis Services,

Mondrian, Palo, Applix, Microstrategy, SAS, SAP, Whitelight, NCR

Клиенты: Panorama Software, Proclarity, AppSource, Cognos, Business Objects, Brio Technology, Crystal Reports, MS Excel, и т.д.

MDX — стандартный язык запросов в спецификации XML for Analysis (XMLA).

Page 4: Хранилища данных

Основные объекты многомерных баз данных

Куб (Cube); Измерение (Dimension) — играет роль

справочника; Мера (Measure) — количественная

сущность;

Page 5: Хранилища данных

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

SELECT Measures.[Internet Sales Amount] ON COLUMNS

FROM [Adventure Works]

WHERE ( [Date].[Calendar].[Calendar Quarter].&[2003]&[2],

[Product].[Product Line].[Mountain],

[Customer].[Country].[Australia])

Результат:

Internet Sales Amount

$323,561.09

Page 6: Хранилища данных

Основы

Измерение содержит одну или несколько иерархий.

Каждый уровень иерархии измерения содержит набор элементов, называемых членами (members).

Каждый член иерархии имеет уникальное имя.

Пример: член уровня [Calendar Quarter] иерархии [Calendar] измерения [Date]:

[Date].[Calendar].[Calendar Quarter].[Q2 CY 2005]

Page 7: Хранилища данных

Основы

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

[Имя измерения].[Имя иерархии].[Имя уровня].[Имя члена].

[<Èçìåðåíèå>].[<Èåðàðõèÿ>].[<×ëåí âåðõíåãî óðîâíÿ>]. … .[<×ëåí íèæíåãî óðîâíÿ>]

Пример:

[Customer].[Country].[Australia]

[Место]. [Иерархия_Место].[РФ].[Москва]

Page 8: Хранилища данных

Объект Measures

Объект Measures (меры) — специальное измерение, содержащее в качестве членов набор мер.

Пример — мера Internet Sales Amount:

Measures.[Internet Sales Amount] Для каждой меры задана функция агрегации.

Page 9: Хранилища данных

Срез куба

Ячейка (cell) куба идентифицируется набором членов измерений, на пересечении которых находится эта ячейка.

Срез куба (slice) также задается набором членов измерений, определяющих срез.

Синтаксис: в круглых скобках перечисляются члены измерений, разделенные запятыми. Если кортеж задается только одним членом измерения, то скобки можно опускать.

Page 10: Хранилища данных

Кортеж

Примеры: [Customer].[Country].[Germany] ( [Date].[Calendar].[Calendar Quarter].[Q2

CY 2003], [Product].[Product Line].[Mountain], [Customer].[Country].[Australia]).

Подобное выражение на языке MDX называется кортежем (tuple).

Page 11: Хранилища данных

Пример 1. Запрос для получения суммы продаж через Интернет для всех клиентов из Германии:

SELECT Measures.[Internet Sales Amount] on COLUMNS

FROM [Adventure Works]

WHERE ([Customer].[Country].[Germany])

Результат: $2,894,312.34

Page 12: Хранилища данных

Набор

Набор (set) — это совокупность кортежей, которые определены с использованием одинакового количества одних и тех же измерений. Набор обычно заключается в фигурные скобки {}.

Пример:

{(Customer.Country.Australia), (Customer.Country.Canada)}

Page 13: Хранилища данных

MDX-запрос

Синтаксис MDX-запроса:

[WITH <formula_expression> [, <formula_expression> ...]]

SELECT [<axis_expression>, [<axis_expression>...]]

FROM [<cube_expression>]

[WHERE [slicer_expression]]

Фразы WITH и WHERE являются необязательными.

Page 14: Хранилища данных

Оси в MDX

<axis_expression> := <набор> ON (ось) | Axis (номер оси) | (номер оси)

Пять осей имеют псевдонимы: COLUMNS, ROWS, PAGES, SECTIONS и CHAPTERS. Последующие оси указываются с помощью слова Axis, за которым следует номер оси. В запросе можно указать до 128 осей.

Page 15: Хранилища данных

Пример 2.

SELECT Measures.[Internet Sales Amount] ON COLUMNS,

[Customers].[Country].MEMBERS on ROWS,

[Product].[Product Line].MEMBERS on PAGES

FROM [Adventure Works]

эквивалентен

SELECT Measures.[Internet Sales Amount] ON 0,

[Customers].[Country].MEMBERS on 1,

[Product].[Product Line].MEMBERS on 2

FROM [Adventure Works]

Page 16: Хранилища данных

Секция FROM

Предложение FROM в MDX-запросе определяет куб, из которого необходимо извлечь данные для анализа.

В запросе MDX можно указать имя только одного куба данных.

Данные из других кубов можно получить, используя функцию LookupCube языка MDX.

Page 17: Хранилища данных

Секция WHERE - здесь указывается срез куба, который нас интересует.

SELECT [Measures].[Internet Sales Amount] ON COLUMNS,

[Product].[Product Line].MEMBERS on ROWS

FROM [Adventure Works]

WHERE ([Product].[Color].[Silver])

Internet Sales Amount

All Products $5,113,389.08

Accessory $40,307.67

Components (null)

Mountain $5,073,081.41

Page 18: Хранилища данных

Секция WITH

Используется для выполнения дополнительных вычислений в рамках запроса.

Синтаксис:

[WITH <formula_expression> [, <formula_expression> …]]

Page 19: Хранилища данных

Именованные наборы

Formula_expression := [DYNAMIC] SET <псевдоним_набора> AS [']<набор>[']

WITH SET [EUROPE] AS '{[Customer].[Country].[Country].&[France],

[Customer].[Country].[Country].&[Germany],[Customer].[Country].

[Country].&[United Kingdom]} '

SELECT Measures.[Internet Sales Amount] on COLUMNS,

[EUROPE] ON ROWS

FROM [Adventure Works]

Page 20: Хранилища данных

Вычисляемые членыFormula_expression := MEMBER <ИмяЧлена> AS

[']<Выражение_MDX>['], [ , SOLVE_ORDER = <целое число>] [ , <СвойствоЯчейки> = <ВыражениеСвойства>]

WITH MEMBER [MEASURES].[Profit] AS '[Measures].[Internet Sales Amount]-[Measures].[Internet Standard Product Cost]'

SELECT Measures.profit ON COLUMNS,

[Customer].[Country].MEMBERS ON ROWS

FROM [Adventure Works]

Page 21: Хранилища данных

ProductRank Sales Amount

All Products 1 $109,809,274.20

Road 2 $48,262,055.15

Mountain 3 $42,456,731.56

Touring 4 $16,010,837.10

Accessory 5 $2,539,401.59

Components 6 $540,248.80

WITH

SET [ProductOrder] AS 'Order([Product].[Product Line].MEMBERS,

[Internet Sales Amount], BDESC)'

MEMBER [Measures].[ProductRank] AS 'Rank([Product].[Product Line].CURRENTMEMBER, [ProductOrder])'

SELECT {[ProductRank],[Sales Amount]} ON COLUMNS,

[ProductOrder] on ROWS

FROM [Adventure Works]

Page 22: Хранилища данных

Пример 4.

WITH MEMBER [Date].[Calendar].[%Change] AS100* (([Date].[Calendar].[Calendar Quarter].[Q2 CY 2002] -[Date].[Calendar].[Calendar Quarter].[Q1 CY 2002]) /[Date].[Calendar].[Calendar Quarter].[Q2 CY 2002])SELECT {[Date].[Calendar].[Calendar Quarter].[Q1 CY 2002],[Date].[Calendar].[Calendar Quarter].[Q2 CY 2002],[Date].[Calendar].[%Change]} ON COLUMNS,{Measures.[Internet Sales Amount],[Measures].[Customer

Count],[Measures].[Internet Gross Profit]} ON ROWSFROM [Adventure Works]

Page 23: Хранилища данных

Пример 4.

Q1 CY 2002 Q2 CY 2002 %Change

Internet Sales Amount $1,791,698.45 $2,014,012.13 11.0383486486941

Customer Count 558 635 12.1259842519685

Internet Gross Profit $719,198.90 $812,350.79 11.4669534172378

Page 24: Хранилища данных

Пример 5.WITH MEMBER [Date].[Calendar].[First8MonthsCY2003] AS

Aggregate(YTD([Date].[Calendar].[Month].[August 2003]))

SELECT [Date].[Calendar].[First8MonthsCY2003] ON COLUMNS,

[Product].[Category].Children ON ROWS

FROM [Adventure Works]

WHERE [Measures].[Order Quantity]

First8MonthsCY2003

Accessories 9,98

Bikes 21,62

Clothing 18,85

Components 13,3

Page 25: Хранилища данных

Другие элементы MDX

Комментарии

// здесь следует комментарий

-- здесь следует комментарий

/* здесь следует комментарий */ Арифметические операторы +, –, * и / Операторы наборов Операторы сравнения <, <=, >, >=, = и <> Логические операторы AND, OR, XOR, NOT

Page 26: Хранилища данных

Операторы наборов

'+' - объединение наборов '-' - разность двух наборов '*' - векторное произведение двух наборов

Двоеточие ':'SELECT [Measures].[Internet Sales Amount] ON 0,

{[Date].[Calendar].[CY 2001]:[Date].[Calendar].[CY 2003]} ON 1FROM [Adventure Works]

Page 27: Хранилища данных

Функции MDX Функции для members

Members — при применении к иерархии возвращает набор всех членов иерархии, независимо от уровня; при применении к уровню возвращает набор всех членов измерения на данном уровне.

Children, Parent — перемещение вверх и вниз по уровням.

PrevMember, NextMember, Lag, Lead — перемещение в пределах одного уровня

FirstChild, LastChild — возвращает первый (последний) потомок данного элемента.

MemberToStr(<Выражение члена>), StrToMember(<Строка>);

Page 28: Хранилища данных

Функции MDX

Функции наборов CrossJoin возвращает все возможные

комбинации членов наборов, указанных в качестве ее аргументов.

CrossJoin(Выражение_набора [, Выражение_набора …])

Filter ограничивает результаты запроса на основе некоторого условия.

Filter( Выражение_набора, {Логическое_выражение |

[CAPTION | KEY | NAME] = Строковое_выражение})

Page 29: Хранилища данных

Пример 6.

SELECT Measures.[Internet Sales Amount] ON COLUMNS,

FILTER(CROSSJOIN( {Product.[Product Line].[Product Line].MEMBERS},

{[Customer].[Country].MEMBERS}),

[Internet Sales Amount] >2000000) ON ROWS

FROM [Adventure Works]

Page 30: Хранилища данных

Пример 6. Результаты запроса

Internet Sales Amount

Mountain All Customers $10,251,183.52

Mountain Australia $2,906,994.45

Mountain United States $3,547,956.78

Road All Customers $14,624,108.58

Road Australia $5,029,120.41

Road United States $4,322,438.41

Touring All Customers $3,879,331.82

Page 31: Хранилища данных

Функция Exists

Exists( Set_Expression1 , Set_Expression2 [, MeasureGroupName] ) - возвращает кортежи из набора 1, которые существуют вместе с одним или более кортежем из набора 2.

Клиенты из Калифорнии:

SELECT [Measures].[Internet Sales Amount] ON 0,

EXISTS([Customer].[Customer].[Customer].MEMBERS

, {[Customer].[State-Province].&[CA]&[US]}) ON 1

FROM [Adventure Works]

Page 32: Хранилища данных

Функции MDX. Продолжение

Справочник по функциям MDX в составе MSDN:

http://msdn.microsoft.com/en-us/library/ms145970.aspx