Кортеж уникальным образом определяет ячейку на основе сочетания элементов атрибута, состоящих из атрибутов каждой иерархии атрибута куба. При определении кортежа в запросе многомерных выражений или в многомерном выражении не обязательно явно включать элемент атрибута из каждой иерархии атрибута. Если элемент из иерархии атрибута не включен явно в запрос или выражение, в кортеж неявным образом включается элемент по умолчанию данной иерархии атрибута. Если в кубе явно не указано обратное, элементом по умолчанию любой иерархии атрибута считается элемент "(Все)", если он существует. Если такой элемент отсутствует в иерархии атрибута, элементом по умолчанию считается элемент верхнего уровня иерархии. Мерой по умолчанию является первая мера указанного куба, если только мера по умолчанию не определена явно.
Например, следующий кортеж определяет одну ячейку в базе данных Adventure Works, явно определяя только один элемент в измерении Measures.
(Measures.[Reseller Sales Amount])
В примере уникально определена ячейка, состоящая из элемента Reseller Sales Amount из измерения Measures и элемента по умолчанию из каждой иерархии атрибута в кубе. Элементом по умолчанию для каждой иерархии атрибута, кроме Destination Currency, является элемент "(Все)". Элементом по умолчанию для иерархии Destination Currency является элемент US Dollar (он определен в сценарии многомерных выражений в кубе Adventure Works ).
Следующий запрос возвращает значение ячейки, на которую ссылается кортеж, указанный в предыдущем примере:
SELECT Measures.[Reseller Sales Amount] ON COLUMNS FROM [Adventure Works]
Размерностью кортежа называют последовательность или порядок его элементов. Поскольку неявные элементы всегда расположены в одном и том же порядке, размерность практически всегда зависит от элементов кортежа, определенных явно. Порядок элементов кортежа важен при определении набора кортежей. В следующем примере кортеж содержит два элемента по оси столбцов:
SELECT ([Measures].[Reseller Sales Amount],[Date].[Calendar Year].[CY 2004]) ON COLUMNS FROM [Adventure Works]
Кортеж в запросе возвращает ячейку куба на пересечении меры Reseller Sales Amount измерения Measures и элемента CY 2004 иерархии атрибута Calendar Year в измерении Date.
Набором называют упорядоченное множество кортежей одинаковой размерности. Для обозначения набора кортежей используются фигурные скобки {}. Пример набора:
SELECT { ([Measures].[Reseller Sales Amount], [Date].[Calendar Year].[CY 2003]), ([Measures].[Reseller Sales Amount], [Date].[Calendar Year].[CY 2004]) } ON COLUMNS FROM [Adventure Works]
В примере все кортежи набора имеют одинаковую размерность, поскольку первый элемент каждого кортежа принадлежит измерению Measures, а второй элемент - иерархии атрибута Calendar Year.
Можно создать набор с псевдонимом, называемый именованным набором. Применение именованных наборов в запросах многомерных выражений упрощает их восприятие и дальнейшее использование при работе со сложными многомерными выражениями. Для работы с именованным набором используется ключевое слово AS вместе с необходимым псевдонимом в конце идентификатора набора.
В языке многомерных выражений можно обращаться с запросом к таким многомерным объектам, как кубы, и возвращать многомерные наборы ячеек, содержащие данные куба.
Базовый запрос многомерных выражений - это инструкция SELECT, наиболее частый запрос в многомерных выражениях. Чтобы получить основательные знания о применении многомерных выражений для запроса многомерных данных, необходимо понять, как в инструкции многомерных выражений SELECT определяется результирующий набор, синтаксис инструкции SELECT и как с ее помощью создавать простые запросы.
В многомерном выражении инструкция SELECT указывает результирующий набор, содержащий подмножество многомерных данных, возвращаемое из куба. Чтобы указать результирующий набор, запрос многомерных выражений должен содержать следующие данные:
Для указания осей запроса куба, задающего контекст запроса, и осей среза в инструкции многомерных выражений SELECT используются следующие предложения:
Синтаксис базовой инструкции SELECT с использованием предложений SELECT, FROM и WHERE:
[ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ] SELECT [ * | ( <SELECT query axis clause> [ , <SELECT query axis clause> ... ] ) ] FROM <SELECT subcube clause> [ <SELECT slicer axis clause> ] [ <SELECT cell property list clause> ]
Далее приведен базовый запрос многомерных выражений на основе инструкции SELECT:
SELECT { [Measures].[Sales Amount], [Measures].[Tax Amount] } ON COLUMNS, { [Date].[Fiscal].[Fiscal Year].&[2002], [Date].[Fiscal].[Fiscal Year].&[2003] } ON ROWS FROM [Adventure Works] WHERE ( [Sales Territory].[Southwest] )
Этот запрос возвращает результирующий набор, содержащий продажи за 2002 и 2003 годы и сумму налогов для юго-западных областей продаж. Запрос содержит следующие сведения о результирующем наборе:
Обратите внимание, что в запросе используются псевдонимы осей COLUMNS и ROWS.
В службах SSAS сценарии многомерных выражений состоят из одного или нескольких многомерных выражений или инструкций, заполняющих куб вычислениями.
Сценарий многомерных выражений определяет процесс вычислений для куба. Сценарий многомерных выражений также считается частью самого куба. Поэтому изменение сценария многомерных выражений, связанного с кубом, сразу изменяет процесс вычислений для куба.
Для создания сценариев многомерных выражений можно воспользоваться конструктором кубов в среде BI Dev Studio.
Существует два типа сценариев многомерных выражений:
Сценарий многомерных выражений по умолчанию, создаваемый службами SSAS при определении куба, содержит одну инструкцию CALCULATE. Эта инструкция CALCULATE находится в начале сценария многомерных выражений по умолчанию и говорит о том, что весь куб должен быть рассчитан во время первого этапа вычислений.
Сценарий многомерных выражений по умолчанию также включает в себя команды, создающие именованные наборы, назначения и вычисляемые элементы, созданные в конструкторе кубов:
Если с кубом не связан ни один сценарий многомерных выражений, куб вычисляется по сценарию многомерных выражений по умолчанию. Куб должен быть связан хотя бы с одним сценарием многомерных выражений, поскольку только в сценарии определяется порядок вычисления куба.