如何获取SSAS多维数据集所有维度的启用与禁用属性/层次结构?
解决方案
原脚本依赖$system.MDSchema_hierarchies,但这个DMV仅返回已启用属性层次结构(即AttributeHierarchyEnabled = TRUE)的项。要获取所有维度属性(包括禁用的),需要改用$system.MDSchema_attributes这个DMV,它包含维度的所有属性定义,无论是否启用属性层次结构。
针对SQL Server 2008 R2,可使用以下脚本:
SELECT [CATALOG_NAME] AS [DATABASE], CUBE_NAME AS [CUBE], DIMENSION_UNIQUE_NAME AS [DIMENSION], ATTRIBUTE_DISPLAY_FOLDER AS [FOLDER], ATTRIBUTE_CAPTION AS [DIMENSION ATTRIBUTE], ATTRIBUTE_IS_VISIBLE AS [VISIBLE], ATTRIBUTE_HIERARCHY_ENABLED AS [HIERARCHY_ENABLED] -- 明确标识属性层次结构是否启用 FROM $system.MDSchema_attributes WHERE CUBE_NAME = 'MyCube' AND DIMENSION_TYPE = 2 -- 仅筛选常规维度(排除度量值维度) ORDER BY DIMENSION_UNIQUE_NAME, ATTRIBUTE_CAPTION;
关键说明:
ATTRIBUTE_HIERARCHY_ENABLED字段直接对应属性的AttributeHierarchyEnabled设置,值为TRUE表示启用,FALSE表示禁用。DIMENSION_TYPE = 2用于排除度量值维度,只返回业务维度的属性;如果需要包含度量值维度,可去掉这个条件。- 若需要区分“用户自定义层次结构”和“属性层次结构”,可结合
$system.MDSchema_hierarchies做关联查询,但如果只需要所有属性(包括禁用的),上述脚本已足够。
内容的提问来源于stack exchange,提问作者HandsomePig
相关产品推荐
相关产品推荐

