Пространство куба

Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Пространство куба — это продукт элементов иерархий атрибутов куба с мерами куба. Таким образом, пространство куба определяется комбинаторным продуктом всех элементов иерархии атрибутов в кубе и мерах куба и определяет максимальный размер куба. Важно отметить, что это пространство включает все возможные сочетания элементов иерархии атрибутов; даже сочетания, которые могут считаться невозможными в реальном мире, т. е. сочетания, где город является Парижем и странами/ регионами Англии, Испании или Японии или Индии или в других местах.

Автоэкзистенция и кубическое пространство

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

Например, если у вас есть куб с иерархией атрибутов City, иерархией атрибутов Country и мерой "Объем продаж в Интернете", пространство этого куба включает только те элементы, которые существуют друг с другом. Например, если иерархия атрибутов City включает города Нью-Йорк, Лондон, Париж, Токио и Мельбурн; и иерархия атрибутов Country включает страны и регионы США, Соединенное Королевство, Франция, Япония и Австралия; затем пространство куба не включает пространство (ячейку) на пересечении Парижа и Соединенных Штатов.

При запросе ячеек, которые не существуют, не существующие ячейки возвращают значения NULL; То есть они не могут содержать вычисления и не могут определять вычисления, записываемые в это пространство. Например, следующая инструкция содержит ячейки, которые не существуют.

SELECT [Customer].[Gender].[Gender].Members ON COLUMNS,  
{[Customer].[Customer].[Aaron A. Allen]  
   ,[Customer].[Customer].[Abigail Clark]} ON ROWS   
FROM [Adventure Works]  
WHERE Measures.[Internet Sales Amount]  

Замечание

Этот запрос использует функцию Members (Set) (MDX) для возврата набора элементов иерархии атрибутов "Гендер" на оси столбцов и пересекает этот набор с указанным набором элементов из иерархии атрибутов "Клиент" на оси строк.

При выполнении предыдущего запроса ячейка на пересечении Aaron A. Allen и Female отображает значение NULL. Аналогичным образом, ячейка на пересечении Абигила Кларка и Мужчины отображает значение NULL. Эти ячейки не существуют и не могут содержать значение, но ячейки, которые не существуют, могут отображаться в результате, возвращаемом запросом.

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

SELECT CROSSJOIN  
   (  
      {[Customer].[Country].[United States]},  
         [Customer].[State-Province].Members  
  ) ON 0   
FROM [Adventure Works]  
WHERE Measures.[Internet Sales Amount]  

Замечание

Обратите внимание, что 0 используется для обозначения оси столбца, которая является сокращенной для оси (0) — то есть оси столбцов.

Предыдущий запрос возвращает ячейки только для членов из каждой иерархии атрибутов в запросе, которые сосуществуют друг с другом. Предыдущий запрос также можно записать с помощью новой версии * функции * Crossjoin (MDX).

SELECT   
   [Customer].[Country].[United States] *   
      [Customer].[State-Province].Members  
ON 0   
FROM [Adventure Works]  
WHERE Measures.[Internet Sales Amount]  

Предыдущий запрос также можно записать следующим образом:

SELECT [Customer].[State-Province].Members  
ON 0   
FROM [Adventure Works]  
WHERE (Measures.[Internet Sales Amount],  
   [Customer].[Country].[United States])  

Возвращаемые значения ячеек будут идентичными, хотя метаданные в результирующем наборе будут отличаться. Например, при предыдущем запросе иерархия "Страна" была перемещена на ось среза (в предложении WHERE) и поэтому не отображается явно в результирующем наборе.

Каждый из этих трех предыдущих запросов демонстрирует влияние автоматического поведения в SQL Server SQL Server Analysis Services.

Пользовательские иерархии и пространство куба

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

Например, запрос CROSSJOIN в предыдущем разделе также может быть написан следующим образом:

SELECT CROSSJOIN  
   (  
      {[Customer].[Country].[United States]},  
         [Customer].[Customer Geography].[State-Province].Members  
   )   
ON 0   
FROM [Adventure Works]  
WHERE Measures.[Internet Sales Amount]  

В предыдущем запросе определяемая пользователем иерархия Customer Geography в измерении Customer используется для определения позиции в пространстве куба, которое ранее было определено с помощью иерархии атрибутов. Идентичная позиция в пространстве куба может быть определена с помощью иерархий атрибутов или определяемых пользователем иерархий.

Связи атрибутов и пространство куба

Определение связей атрибутов между связанными атрибутами повышает производительность запросов (упрощая создание соответствующих агрегатов) и влияет на член связанной иерархии атрибутов, которая отображается с элементом иерархии атрибутов. Например, если вы определяете кортеж, который включает элемент из иерархии атрибутов City, и кортеж не явно определяет элемент из иерархии атрибутов Country, можно ожидать, что элемент по умолчанию из иерархии атрибутов Country будет тем соответствующим элементом. Однако это верно только в том случае, если определено отношение атрибутов между иерархией атрибутов города и иерархией атрибутов страны.

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

WITH MEMBER Measures.x AS   
   Customer.Country.CurrentMember.Name  
SELECT Measures.x ON 0,  
Customer.City.Members ON 1  
FROM [Adventure Works]  

Замечание

Обратите внимание, что ключевое слово WITH используется с функциями CurrentMember (MDX) и Name (MDX) для создания вычисляемого элемента для использования в запросе. Дополнительные сведения см. в разделе "Базовый MDX-запрос (MDX)".

В предыдущем запросе возвращается имя члена иерархии атрибутов Country, связанной с каждым элементом иерархии атрибутов State. Появится ожидаемый член страны (так как между атрибутами города и страны определена связь атрибутов). Однако если связь атрибутов между иерархиями атрибутов в одном измерении не определена, возвращается элемент (Все), как показано в следующем запросе.

WITH MEMBER Measures.x AS   
   Customer.Education.Currentmember.Name  
SELECT Measures.x  ON 0,   
Customer.City.Members ON 1  
FROM [Adventure Works]  

В предыдущем запросе возвращается член (All) ("Все клиенты"), так как связь между образованием и городом отсутствует. Таким образом, элемент "(Все)" будет являться членом иерархии атрибутов образования по умолчанию, используемым в любом кортеже с иерархией атрибутов "City", где член атрибута образования не предоставляется в явной форме.

Контекст вычисления

См. также

Основные понятия MDX (службы Analysis Services)
Кортежи
Автосуществование
Работа с элементами, кортежами и наборами (MDX)
Визуальные итоги и невизуальные итоги
Справочник по языку MDX (многомерные выражения)
Справочник по многомерным выражениям