Как связаны операции OLAP-куба и MDX?

Я хотел бы понять, как связаны операции OLAP-куба (т. е. детализация вверх/вниз, нарезка/нарезка и поворот) и MDX. В настоящее время я предполагаю, что операции OLAP-куба для многомерных выражений подобны реляционной алгебре для SQL. Однако я не вижу, как некоторые базовые функции MDX соответствуют операциям с OLAP-кубами. Например, рассмотрим следующий запрос к демонстрационному кубу «Продажи», который поставляется с icCube:

SELECT {([Ottawa],[2009]), ([United States],[Feb 2010])} on Rows,
       [Measures].members on Columns
FROM [Sales]

Как использование кортежей (например, ([Ottawa],[2009])) соответствует операции OLAP-куба?


person AlwaysLearning    schedule 15.10.2017    source источник
comment
MDX возвращает "что-то" для просмотра в клиенте OLAP. Когда вы выполняете детализацию в клиенте OLAP, клиент создает новый MDX на основе того, где вы находитесь и что вы детализировали, а также определения иерархии в кубе, отправляет этот MDX и отображает результат.   -  person Nick.McDermaid    schedule 16.10.2017
comment
@ Nick.McDermaid Вы говорите, что операторы OLAP-куба - это то, что должны реализовать инструменты визуализации? В частности, если я отправляю запрос MDX прямо из своего приложения (например, написанного на C#) и получаю в результате объект, то операторы OLAP-куба имеют разные способы доступа к этому объекту?   -  person AlwaysLearning    schedule 16.10.2017
comment
Не могли бы вы уточнить, что вы подразумеваете под операторами OLAP-куба. Вы имеете в виду клиентскую программу OLAP? Или вы имеете в виду фактический оператор (+, -) на языке MDX?   -  person Nick.McDermaid    schedule 17.10.2017
comment
@Nick.McDermaid Я имел в виду операции сверления вверх/вниз, нарезки/нарезки кубиками и поворота. См. en.wikipedia.org/wiki/OLAP_cube#Operations.   -  person AlwaysLearning    schedule 17.10.2017


Ответы (3)


Да, «Операции с OLAP-кубами — это то, что должны реализовать инструменты визуализации». MDX — это язык запросов, который выполняется для куба и выдает результат. Клиенты OLAP обычно запускают MDX для куба. «Операции с кубом OLAP», как описано в этой википедии, обычно являются результатом того, что человек выполняет специальный анализ куба в клиентском приложении.

Cube предоставляет структуру и язык доступа, которые обычно упрощают (или, по крайней мере, ускоряют) эти типы операций.

Как MDX соотносится с операцией «детализации»? Например?

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

Итак, человек видит эту информацию и решает развернуть один элемент в строке (ранее этот элемент возвращался каким-то MDX). Таким образом, клиент OLAP генерирует некоторый MDX, который обеспечивает детализированное представление элемента.

Он может просто добавить дочернюю функцию MDX к рассматриваемому элементу. Или это может быть сделано как-то иначе. Это зависит от клиента.

Вот некоторая вводная информация о том, как вы можете подслушивать взаимодействие между клиентом OLAP (каким? Неважно) и кубом SSAS.

https://docs.microsoft.com/en-us/sql/analysis-services/instances/introduction-to-monitoring-analysis-services-with-sql-server-profiler

person Nick.McDermaid    schedule 17.10.2017

Вы можете думать о запросе MDX, указывающем области или области пространства внутри куба — кортеж — это основной способ дать процессору координаты, соответствующие интересующей вас части куба.

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

MDX тесно связан с теорией множеств, поскольку основными типами куба являются измерения, множества, кортежи, элементы и т. д.

person whytheq    schedule 15.10.2017
comment
Из вашего ответа звучит, что MDX не основан на операторах OLAP-куба. Итак, для чего нужны операторы OLAP-куба? - person AlwaysLearning; 16.10.2017
comment
что такое оператор куба OLAP? - person ic3; 16.10.2017
comment
@ic3 Я имел в виду операции. См. en.wikipedia.org/wiki/OLAP_cube#Operations. - person AlwaysLearning; 17.10.2017
comment
У вас есть все это и многое другое, что вы получаете с MDX. Вы уже нарисовали :-) - person ic3; 17.10.2017

Запрос MDX определяет таблицу, и для каждой ячейки таблицы у нас есть кортеж. В вашем сценарии предполагается, что у нас есть две меры ( Meas1, Meas2 ):

([Ottawa],[2009],[Meas1])                 ([Ottawa],[2009],[Meas2])
([United States],[Feb 2010],[Meas1])      ([United States],[Feb 2010],[Meas2])

В эти кортежи ячеек можно добавить предложение WHERE, SubQuery и значения по умолчанию, которые могут отличаться от ВСЕХ (не рекомендуется) . Помните, что all — это «особый» элемент, который игнорируется.

Кортеж определяет одну меру, Meas1 или Meas2, это выберет «таблицу фактов» со столбцом меры, обычно числовым значением. Другие члены используются для выбора строк в таблице, выполняя для них агрегирование, определенное мерой ( сумма , минимум, максимум .... ) для всех строк, определенных членами кортежа, например, Оттава и 2009. Как объясняет почемутек, у вас есть много преобразований, чтобы «играть» с элементами, как с наборами.

Это простое видение, поскольку вы можете использовать вычисляемые элементы. которые определяют преобразование вместо простой агрегации строк (например, разница с предыдущим годом) и некоторые агрегации немного сложнее (открыть, закрыть...).

Но если вы хорошо это понимаете, у вас есть прекрасная основа для понимания MDX.

person ic3    schedule 16.10.2017
comment
Мой комментарий к ответу @whytheq относится и к вашему ответу. - person AlwaysLearning; 16.10.2017