Хранилища данных
Download
1 / 32

Хранилища данных - PowerPoint PPT Presentation


  • 199 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Хранилища данных' - thane


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Хранилища данных

Автор: кандидат физ.-мат. наук,

Степанов Р.Г.

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

Казань, 2011


Язык MDX

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

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

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


Язык 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).


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

  • Куб (Cube);

  • Измерение (Dimension) — играет роль справочника;

  • Мера (Measure) — количественная сущность;


Пример запроса MDX баз данных

  • SELECT Measures.[Internet Sales Amount] ONCOLUMNS

  • FROM [Adventure Works]

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

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

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

  • Результат:

  • Internet Sales Amount

  • $323,561.09


Основы баз данных

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

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

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

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

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


Основы баз данных

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

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

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

    Пример:

    [Customer].[Country].[Australia]

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


Measures
Объект Measures баз данных

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

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

    Measures.[Internet Sales Amount]

  • Для каждой меры задана функция агрегации.


Срез куба баз данных

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

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

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


Кортеж баз данных

  • Примеры:

    • [Customer].[Country].[Germany]

    • ( [Date].[Calendar].[Calendar Quarter].[Q2 CY 2003], [Product].[Product Line].[Mountain], [Customer].[Country].[Australia]).

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


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

  • SELECT Measures.[Internet Sales Amount] onCOLUMNS

  • FROM [Adventure Works]

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

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


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

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

  • Пример:

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


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

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

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

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

    FROM [<cube_expression>]

    [WHERE [slicer_expression]]

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


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

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

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


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

  • SELECT Measures.[Internet Sales Amount] ONCOLUMNS,

  • [Customers].[Country].MEMBERSonROWS,

  • [Product].[Product Line].MEMBERSonPAGES

  • FROM [Adventure Works]

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

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

  • [Customers].[Country].MEMBERSon 1,

  • [Product].[Product Line].MEMBERSon 2

  • FROM [Adventure Works]


Секция FROM суммы продаж через Интернет для всех клиентов из Германии:

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

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

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


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

  • SELECT [Measures].[Internet Sales Amount] ONCOLUMNS,

  • [Product].[Product Line].MEMBERSonROWS

  • FROM [Adventure Works]

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


Секция WITH срез куба, который нас интересует.

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

  • Синтаксис:

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


Именованные наборы срез куба, который нас интересует.

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

  • WITHSET [EUROPE] AS '{[Customer].[Country].[Country].&[France],

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

  • [Country].&[United Kingdom]} '

  • SELECT Measures.[Internet Sales Amount] onCOLUMNS,

  • [EUROPE] ONROWS

  • FROM [Adventure Works]


Вычисляемые члены срез куба, который нас интересует.

  • Formula_expression := MEMBER <ИмяЧлена> AS [']<Выражение_MDX>['], [ , SOLVE_ORDER = <целое число>] [ , <СвойствоЯчейки> = <ВыражениеСвойства>]

  • WITHMEMBER [MEASURES].[Profit] AS '[Measures].[Internet Sales Amount]-[Measures].[Internet Standard Product Cost]'

  • SELECT Measures.profit ONCOLUMNS,

  • [Customer].[Country].MEMBERSONROWS

  • FROM [Adventure Works]


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]} ONCOLUMNS,

[ProductOrder] onROWS

FROM [Adventure Works]


WITH срез куба, который нас интересует.MEMBER [Date].[Calendar].[%Change] AS

100* (([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]} ONCOLUMNS,

{Measures.[Internet Sales Amount],[Measures].[Customer Count],

[Measures].[Internet Gross Profit]} ONROWS

FROM [Adventure Works]

Пример 4.


Пример 4. срез куба, который нас интересует.


Пример 5. срез куба, который нас интересует.

  • WITHMEMBER [Date].[Calendar].[First8MonthsCY2003] AS

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

  • SELECT [Date].[Calendar].[First8MonthsCY2003] ONCOLUMNS,

  • [Product].[Category].ChildrenONROWS

  • FROM [Adventure Works]

  • WHERE [Measures].[Order Quantity]


Другие элементы MDX срез куба, который нас интересует.

  • Комментарии

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

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

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

  • Арифметические операторы +, –, * и /

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

  • Операторы сравнения <, <=, >, >=, = и <>

  • Логические операторы AND, OR, XOR, NOT


Операторы наборов срез куба, который нас интересует.

  • '+' - объединение наборов

  • '-' - разность двух наборов

  • '*' - векторное произведение двух наборов

  • Двоеточие ':'

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

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

    FROM [Adventure Works]


Функции MDX срез куба, который нас интересует.

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

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

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

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

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

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


Функции MDX срез куба, который нас интересует.

  • Функции наборов

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

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

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

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

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


Пример 6. срез куба, который нас интересует.

  • SELECT Measures.[Internet Sales Amount] ONCOLUMNS,

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

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

  • [Internet Sales Amount] >2000000) ONROWS

  • FROM [Adventure Works]


Пример 6. Результаты запроса срез куба, который нас интересует.


Exists
Функция 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]


Функции MDX. Продолжение срез куба, который нас интересует.

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

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


ad