Внутренние свойства элементов (многомерные выражения)
Analysis Services предоставляет внутренние свойства членов измерения, которые можно включать в запрос для получения дополнительных данных или метаданных для использования в приложении, а также для изучения или построения модели. Если вы используете клиентские средства SQL Server, то можете просмотреть их в SQL Server Management Studio (SSMS).
К таким свойства относятся ID, KEY, KEYx и NAME. Они предоставляются каждым членом на всех уровнях. Также можно получить позиционные сведения, такие как LEVEL_NUMBER или PARENT_UNIQUE_NAME.
В зависимости от структуры запроса и клиентского приложения, используемого для выполнения запросов, меняется видимость свойств членов в результирующем наборе. Если для тестирования и выполнения запросов используется SQL Server Management Studio, можно дважды щелкнуть элемент в результирующем наборе, чтобы открыть окно его свойств со значениями для каждого внутреннего свойства.
Описание использования свойств членов см. в разделе Просмотр свойств членов SSAS в окне запроса MDX в среде SSMS.
![]() |
---|
Как поставщик, выполняющий требования раздела OLAP спецификации OLE DB, принятой в марте 1999 года (версия 2.6), службы Microsoft SQL Server Analysis Services поддерживают внутренние свойства элементов, указанные в этом разделе. Другие поставщики (не службы SQL ServerAnalysis Services) могут поддерживать дополнительные внутренние свойства элементов. Дополнительные сведения о внутренних свойствах элементов, поддерживаемых другими поставщиками, см. в документации по этим поставщикам. |
Типы свойств элементов
Службы SQL Server Analysis Services поддерживают два типа внутренних свойств элементов.
Свойства элементов, зависящие от контекста
Эти свойства элементов должны использоваться в контексте конкретной иерархии или уровня и передавать значения для каждого элемента заданного измерения или уровня.Заметьте, как в следующем примере включается путь к свойству KEY. MEMBER [Measures].[Parent Member Key] AS [Product].[Product Categories].CurrentMember.Parent.PROPERTIES("KEY").
Свойства элементов, не зависящие от контекста
Эти свойства элементов нельзя использовать в контексте конкретного измерения или уровня, они возвращают значения для всех элементов оси.Свойства, нечувствительные к контексту, не включают сведения о пути. Заметьте, что в следующем примере не указывается измерение или уровень для PARENT_UNIQUE_NAME. DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS
Независимо от зависимости внутреннего свойства элемента от контекста, действуют следующие правила их использования.
Можно указывать только те внутренние свойства элементов, которые связаны с элементами измерения, проецируемым на оси.
В одном запросе можно одновременно обращаться к свойствам элементов как зависящим, так и не зависящим от контекста.
Для обращения к свойству используется ключевое слово PROPERTIES.
В следующих разделах описаны внутренние свойства элементов, доступные в службах SQL ServerAnalysis Services (зависящие и не зависящие от контекста), а также использование ключевого слова PROPERTIES со свойствами каждого типа.
Свойства элементов, зависящие от контекста
Все элементы измерения и уровня поддерживают группу внутренних свойств, зависящих от контекста. Эти свойства перечислены в следующей таблице.
Свойство |
Описание |
---|---|
ID |
Внутренний идентификатор элемента. |
Key |
Значение ключа элемента в исходном типе данных. Параметр MEMBER_KEY сохранен в целях обратной совместимости. Параметр MEMBER_KEY имеет то же самое значение, что и KEY0 для несоставного ключа, и имеет значение NULL для составных ключей. |
KEYx |
Ключ для элемента, где x — это начинающийся с нуля порядковый номер ключа. Значение KEY0 доступно для составных и несоставных ключей, но в основном используется для составных ключей. Что касается составных ключей, KEY0, KEY1, KEY2 и т. д., то они совместно формируют составной ключ. В запросе можно использовать каждый из них в отдельности для получения нужной части составного ключа. Например, задание KEY0 обеспечивает возвращение первой части составного ключа, KEY1 дает следующую часть, и так далее. Если ключ несоставной, то KEY0 эквивалентен Key. Следует учитывать, что KEYx может использоваться как в контексте, так и вне него. Поэтому он появляется в обоих списках. Пример использования данного свойства элемента см. в разделе Простой пример многомерного выражения: Key0, Key1, Key2. |
Name |
Имя элемента. |
Синтаксис ключевого слова PROPERTIES для свойств, зависящих от контекста
Данные свойства элементов используются в контексте конкретного измерения или уровня и передают значения для каждого элемента заданного измерения или уровня.
Для свойств элемента измерения перед именем свойства указывается имя измерения, к которому относится свойство. Правильный синтаксис показан в следующем примере.
DIMENSION PROPERTIES Dimension.Property_name
Имя свойства элемента уровня может быть предварено только именем уровня или (для дополнительного уточнения) как именем измерения, так и и именем уровня. Правильный синтаксис показан в следующем примере.
DIMENSION PROPERTIES [Dimension.]Level.Property_name
Необходимо вернуть список имен всех указанных элементов в измерении [Sales]. Чтобы получить список этих имен, в запрос многомерных выражений включена следующая инструкция:
DIMENSION PROPERTIES [Sales].Name
Свойства элементов, не зависящие от контекста
Все элементы поддерживают группу внутренних свойств элементов, одинаковых вне зависимости от контекста. Эти свойства несут дополнительные сведения, используемые приложениями для создания более удобной пользовательской среды.
В следующей таблице перечислены внутренние свойства, которые поддерживаются службами SQL Server Analysis Services и не зависят от контекста.
![]() |
---|
Столбцы в наборе строк схемы MEMBERS поддерживают внутренние свойства элементов, перечисленные в следующей таблице. Дополнительные сведения о наборе строк схемы MEMBERS см. в разделе Набор строк MDSCHEMA_MEMBERS. |
Свойство |
Описание |
---|---|
CATALOG_NAME |
Имя куба, которому принадлежит элемент. |
CHILDREN_CARDINALITY |
Количество потомков элемента. Значение этого свойства может быть приблизительным, поэтому не стоит рассчитывать на него для определения точного числа. Поставщики должны возвращать наилучшее возможное приближение. |
CUSTOM_ROLLUP |
Пользовательское выражение элемента. |
CUSTOM_ROLLUP_PROPERTIES |
Пользовательские свойства элемента. |
DESCRIPTION |
Понятное описание элемента. |
DIMENSION_UNIQUE_NAME |
Уникальное имя измерения, которому принадлежит элемент. Для поставщиков, формирующих уникальные имена путем использования квалификаторов, компоненты имени разделяются между собой. |
HIERARCHY_UNIQUE_NAME |
Уникальное имя иерархии. Если элемент принадлежит нескольким иерархиям, свойство содержит строку для каждой из этих иерархий. Для поставщиков, формирующих уникальные имена путем использования квалификаторов, компоненты имени разделяются между собой. |
IS_DATAMEMBER |
Логическое значение, указывающее, является ли элемент элементом данных. |
IS_PLACEHOLDERMEMBER |
Логическое значение, указывающее, является ли элемент заполнителем. |
KEYx |
Ключ для элемента, где x — это начинающийся с нуля порядковый номер ключа. KEY0 доступен для составных и несоставных ключей. Если ключ несоставной, то KEY0 эквивалентен Key. Что касается составных ключей, KEY0, KEY1, KEY2 и т. д., то они совместно формируют составной ключ. В запросе можно указывать каждый по отдельности для получения нужной части составного ключа. Например, задание KEY0 обеспечивает возвращение первой части составного ключа, KEY1 дает следующую часть, и так далее. Следует учитывать, что KEYx может использоваться как в контексте, так и вне него. Поэтому он появляется в обоих списках. Пример использования данного свойства элемента см. в разделе Простой пример многомерного выражения: Key0, Key1, Key2. |
LCIDx |
Перевод заголовка элемента в шестнадцатеричное значение локали, где x — десятичное значение локали (например, LCID1009 для канадского английского). Доступно, только если перевод имеет столбец заголовков, привязанный к источнику данных. |
LEVEL_NUMBER |
Расстояние от элемента до корня иерархии. Корневой уровень является нулевым. |
LEVEL_UNIQUE_NAME |
Уникальное имя уровня, которому принадлежит элемент. Для поставщиков, формирующих уникальные имена путем использования квалификаторов, компоненты имени разделяются между собой. |
MEMBER_CAPTION |
Метка или заголовок, связанный с элементом. Заголовок используется главным образом при отображении элемента. Если заголовок отсутствует, запрос возвращает MEMBER_NAME. |
MEMBER_KEY |
Значение ключа элемента в исходном типе данных. Параметр MEMBER_KEY сохранен в целях обратной совместимости. Параметр MEMBER_KEY имеет то же самое значение, что и KEY0 для несоставного ключа, и имеет значение NULL для составных ключей. |
MEMBER_NAME |
Имя элемента. |
MEMBER_TYPE |
Тип элемента. Это свойство может принимать одно из следующих значений:
Значение MDMEMBER_TYPE_FORMULA имеет больший приоритет, чем MDMEMBER_TYPE_MEASURE. Поэтому, если в измерении мер есть формула (вычисляемый элемент), то свойством MEMBER_TYPE для вычисляемого элемента будет MDMEMBER_TYPE_FORMULA. |
MEMBER_UNIQUE_NAME |
Уникальное имя элемента. Для поставщиков, формирующих уникальные имена путем использования квалификаторов, компоненты имени разделяются между собой. |
MEMBER_VALUE |
Значение элемента в исходном типе данных. |
PARENT_COUNT |
Количество родительских элементов данного элемента. |
PARENT_LEVEL |
Расстояние от родительского элемента данного элемента до корневого уровня иерархии. Корневой уровень является нулевым. |
PARENT_UNIQUE_NAME |
Уникальное имя родителя элемента. Для любых элементов на корневом уровне возвращается значение NULL. Для поставщиков, формирующих уникальные имена путем использования квалификаторов, компоненты имени разделяются между собой. |
SKIPPED_LEVELS |
Количество пропущенных уровней элемента. |
UNARY_OPERATOR |
Унарный оператор элемента. |
UNIQUE_NAME |
Полное имя элемента в следующем формате: [dimension].[level].[key6.] |
Синтаксис ключевого слова PROPERTIES для свойств, не зависящих от контекста
Для обращения к внутреннему свойству элемента, не зависящему от контекста, используется следующий синтаксис ключевого слова PROPERTIES.
DIMENSION PROPERTIES Property
Обратите внимание, что такой синтаксис не позволяет указывать для этого свойства измерение или уровень, поскольку внутреннее контекстно-независимое свойство элемента применяется ко всем элементам оси.
Например, инструкция многомерных выражений, обращающаяся к внутреннему свойству элемента DESCRIPTION, будет иметь следующий синтаксис:
DIMENSION PROPERTIES DESCRIPTION
Инструкция возвращает описание каждого элемента в оси измерения. Если добавить в качестве квалификатора свойства измерение или уровень, например Dimension.DESCRIPTION или Level.DESCRIPTION, то инструкция будет недопустимой.
Пример
В следующих примерах показаны запросы MDX, возвращающие внутренние свойства.
Пример 1. Используйте в запросе внутренние свойства, в которых учитывается контекст
В следующем примере возвращаются родительский идентификатор, ключ и имя для каждой категории продуктов. Обратите внимание, что свойства представлены как меры. Это позволяет просматривать свойства в наборе ячеек при запуске запроса, а не в окне свойства элементов в среде SSMS. Вы можете выполнить запрос, подобный этому, для получения метаданных элементов из уже развернутого куба.
WITH
MEMBER [Measures].[Parent Member ID] AS
[Product].[Product Categories].CurrentMember.Parent.PROPERTIES("ID")
MEMBER [Measures].[Parent Member Key] AS
[Product].[Product Categories].CurrentMember.Parent.PROPERTIES("KEY")
MEMBER [Measures].[Parent Member Name] AS
[Product].[Product Categories].CurrentMember.Parent.PROPERTIES("Name")
SELECT
{[Measures].[Parent Member ID], [Measures].[Parent Member Key], [Measures].[Parent Member Name] } on COLUMNS,
[Product].[Product Categories].AllMembers on ROWS
FROM [Adventure Works]
Пример 2. Внутренние свойства, не зависящие от контекста
В следующем примере приведен полный список внутренних свойств, не зависящих от контекста. После выполнения запроса в среде SSMS для просмотра свойств в соответствующем окне выбирайте в нем отдельные элементы.
SELECT [Measures].[Sales Amount Quota] on COLUMNS,
[Employee].[Employees].members
DIMENSION PROPERTIES
CATALOG_NAME ,
CHILDREN_CARDINALITY ,
CUSTOM_ROLLUP ,
CUSTOM_ROLLUP_PROPERTIES ,
DESCRIPTION ,
DIMENSION_UNIQUE_NAME ,
HIERARCHY_UNIQUE_NAME ,
IS_DATAMEMBER ,
IS_PLACEHOLDERMEMBER ,
KEY0 ,
LCID ,
LEVEL_NUMBER ,
LEVEL_UNIQUE_NAME ,
MEMBER_CAPTION ,
MEMBER_KEY ,
MEMBER_NAME ,
MEMBER_TYPE ,
MEMBER_UNIQUE_NAME ,
MEMBER_VALUE ,
PARENT_COUNT ,
PARENT_LEVEL ,
PARENT_UNIQUE_NAME ,
SKIPPED_LEVELS ,
UNARY_OPERATOR ,
UNIQUE_NAME
ON ROWS
FROM [Adventure Works]
WHERE [Employee].[Employee Department].[Department].&[Sales]
Пример 3. Возвращает свойства членов как данные в результирующем наборе.
Следующий пример возвращает переведенный заголовок элемента категории продукта в измерении Product куба Adventure Works для указанной локали.
WITH
MEMBER Measures.CategoryCaption AS Product.Category.CurrentMember.MEMBER_CAPTION
MEMBER Measures.SpanishCategoryCaption AS Product.Category.CurrentMember.Properties("LCID3082")
MEMBER Measures.FrenchCategoryCaption AS Product.Category.CurrentMember.Properties("LCID1036")
SELECT
{ Measures.CategoryCaption, Measures.SpanishCategoryCaption, Measures.FrenchCategoryCaption } ON 0
,[Product].[Category].MEMBERS ON 1
FROM [Adventure Works]
См. также
Справочник
PeriodsToDate (многомерные выражения)
Children (многомерные выражения)
Hierarchize (многомерные выражения)
Count (набор) (многомерные выражения)
Filter (многомерные выражения)
AddCalculatedMembers (многомерные выражения)
DrilldownLevel (многомерные выражения)
Properties (многомерные выражения)
PrevMember (многомерные выражения)
Справочник по функциям многомерных выражений (многомерные выражения)