关于数据仓库中的子维度

 

发布日期: 2016年7月

适用于: System Center 2012 SP1 - Service Manager,System Center 2012 R2 Service Manager,System Center 2012 - Service Manager

System Center 2012 – Service Manager 内数据仓库中的子维度实质上是一个可将值集按逻辑组的列表。 下表显示两个示例,这两个示例展示用于指示优先级和 Windows 操作系统的值的逻辑组。

优先级
中等
Windows 操作系统
Windows XP
Windows Vista
Windows 7

子维度在两种方法上非常有用:

  • 在 Service Manager 控制台中创建和查看报表时,你可使用来自子维度的离散值作为报表参数的下拉菜单。

  • 你可使用子维度值将数据在报表中分组以进行高级分析。

数据仓库中的子维度可针对一个或多个类属性并将它们整合到单个离散值集中。 这些属性只能是字符串或 ManagementPackEnumeration 数据类型。 如果它们基于枚举,子维度还会保留层次结构。Service Manager 不支持在数据类型上定义而不是在字符串或 ManagementPackEnumeration 上定义的子维度。

虽然定义枚举子维度的好处较为明显,但定义字符串列子维度具有数据仓库基础结构将实例空间中属性的不同值合并成小清单的优势。 然后,你可以在报表中以易用的下拉列表形式使用该清单。 例如,基于字符串的子维度有 Computer 类的 Manufacturer 属性,它作为 Service Manager 数据库中的字符串建模。 通过定义该属性的子维度,Service Manager 将使你能够从下拉列表中选择值,而非让你在所采购的计算机的制造商中搜索。

若要查看如何在参数标头的报表中使用子维度的示例,请打开 Service Manager 控制台、导航到“报表、活动管理”,然后运行“活动分配”报表。 接下来,审阅“状态”列表以查看子维度的值。 在下列示例中,你可以看到如何在管理包中对子维度进行建模。 请注意 System.WorkItem.Activity 类,它在 System.Workitem.Activity.Library 管理包中定义:

<ClassType ID="System.WorkItem.Activity" Accessibility="Public" Base="WorkItem!System.WorkItem" Hosted="false" Abstract="true">   
< Property ID="SequenceId" Type="int" />     
<Property ID="Notes" Type="richtext" MaxLength="4000" />     
<Property ID="Status" Type="enum" EnumType="ActivityStatusEnum" />     
<Property ID="Priority" Type="enum" EnumType="ActivityPriorityEnum" />     
<Property ID="Area" Type="enum" EnumType="ActivityAreaEnum" />    
<Property ID="Stage" Type="enum" EnumType="ActivityStageEnum" />                      
</ClassType>  

接着,建议你定义基于枚举属性 Status 的子维度。 下列示例显示你可以如何在你选择的管理包中定义子维度:

<Outrigger ID="ActivityStatus" Accessibility="Public">   
<Attribute ID="Status" PropertyPath="$Context/Property[Type='CoreActivity!System.WorkItem.Activity']/Status$" />     
</Outrigger>  

如前所述,作为管理包作者,你可以定义有关一个或多个类属性的子维度。 每个类属性均按子维度中相应的特性建模。 基于枚举的子维度的可视化示例如下。 在此示例中,活动状态基于 ActivityStatusEnum:

<EnumerationTypes>   
<EnumerationValue ID="ActivityStatusEnum" Accessibility="Public" />   
<EnumerationValue ID="ActivityStatusEnum.Ready" Parent="ActivityStatusEnum" Accessibility="Public" Ordinal="5.0" />   
<EnumerationValue ID="ActivityStatusEnum.Active" Parent="ActivityStatusEnum" Accessibility="Public" Ordinal="10.0" />    
<EnumerationValue ID="ActivityStatusEnum.OnHold" Parent="ActivityStatusEnum" Accessibility="Public" Ordinal="15.0" />   
<EnumerationValue ID="ActivityStatusEnum.Completed" Parent="ActivityStatusEnum" Accessibility="Public" Ordinal="20.0" />   
<EnumerationValue ID="ActivityStatusEnum.Failed" Parent="ActivityStatusEnum" Accessibility="Public" Ordinal="25.0" />   
<EnumerationValue ID="ActivityStatusEnum.Cancelled" Parent="ActivityStatusEnum" Accessibility="Public" Ordinal="30.0" />   
<EnumerationValue ID="ActivityStatusEnum.Rerun" Parent="ActivityStatusEnum" Accessibility="Public" Ordinal="35.0" />     
...   
</EnumerationTypes>  

在子维度的离散值集中包括每个值。 下表列出了来自 ActivityStatus 子维度的列 ID 和 ActivityStatusValue,其中包含 ActivityStatusEnum 的所有枚举值。

ID ActivityStatusValue
ActivityStatusEnum.Completed 已完成
ActivityStatusEnum 活动状态
ActivityStatusEnum.Active 正在进行
ActivityStatusEnum.OnHold 保持
ActivityStatusEnum.Rerun 重新运行
ActivityStatusEnum.Failed 已失败
ActivityStatusEnum.Ready 挂起
ActivityStatusEnum.Cancelled 已取消

在上一个表中,子维度的 ID 列包含 ActivityStatus 枚举类型的所有 EnumerationValue ID。 ActivityStatusValue 是在报表下拉菜单中出现的用户友好的实际显示名称。

下列示例提供有关如何构建子维度并为子维度建模的更多详细信息。 ActivityStatus 子维度同样将用作示例:

<Outrigger ID="ActivityStatus" Accessibility="Public">  
<Attribute ID="Status" PropertyPath="$Context/Property[Type='CoreActivity!System.WorkItem.Activity']/Status$" />     
</Outrigger>  

下表描述了 <Outrigger> 标记的属性。

属性 描述
ID 子维度元素的唯一标识符。 这也是子维度在数据仓库和数据市场中的表名。
辅助功能 该元素应始终设置为“公共”。

每个 <Outrigger> 父标记均包含一个或多个 <Attribute> 子元素标记。 下表描述此标记的属性。

属性 描述
ID 每个子维度属性的唯一标识符
PropertyPath PropertyPath 语法,必须唯一标识将被子维度属性设定为目标的类和属性。

请参阅

自定义数据仓库