Поделиться через


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

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

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

Автоматическая проверка существования и пространство куба

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

Например, пространство куба, содержащего иерархию атрибута City, иерархию атрибута Country и меру Internet Sales Amount, включает только те элементы, которые существуют друг с другом. Например, если иерархия атрибутов 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) (многомерные выражения) для получения набора элементов иерархии атрибута Gender по оси столбцов и выполняется перекрестное соединение этого набора с заданным набором элементов из иерархии атрибута Customer по оси строк.

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

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

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

Примечание

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

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

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])  

Значения ячеек будут совпадать, хотя метаданные в результирующем наборе будут разными. Например, в предыдущем запросе иерархия Country перемещена на ось среза (в предложении 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 по умолчанию будет связанный элемент иерархии атрибута Country. Тем не менее, это действительно так, только если определена связь атрибутов между иерархиями атрибутов City и 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 (многомерные выражения) и Name (многомерные выражения) . Дополнительные сведения см. в разделе Базовый запрос многомерных выражений (MDX).

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

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

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

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

См. также:

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