架构生成向导基于 Analysis Services 中的维度和度量值组,为主题域数据库生成去规范化的关系架构。 该向导为每个维度生成一个关系表来存储维度数据,该数据称为维度表,每个度量值组的关系表用于存储事实数据表,该表称为事实数据表。 向导在生成这些关系表时会忽略链接维度、链接度量值组和服务器时间维度。
验证
在开始生成基础关系架构之前,架构生成向导会验证 Analysis Services 多维数据集和维度。 如果向导检测到错误,它会停止并将错误报告给 SQL Server Data Tools (SSDT)中的“任务列表”窗口。 阻止生成的错误示例包括:
具有多个键属性的维度。
数据类型不同于键属性的父属性。
没有度量值的度量值组。
配置不当的退化维度或度量值。
配置不当的代理键,例如,多个属性使用
ScdOriginalID
属性类型,或者某一属性使用ScdOriginalID
属性类型但未绑定到使用整数数据类型的列。
维度表
对于每个维度,架构生成向导将生成一个维度表,该表将包含在主题区域数据库中。 维度表的结构取决于在设计维度时所做的选择。
列
该向导为维度表所基于的维度中的每个属性生成一列绑定,例如每个属性的KeyColumns
、NameColumn
、ValueColumn
、CustomRollupColumn
、CustomRollupPropertiesColumn
和UnaryOperatorColumn
属性绑定。
关系
向导生成每个父属性列与维度表主键之间的关系。
向导还会在立方体中生成一个关系,该关系与定义为引用维度的每个额外维度表的主键相连(如果适用)。
约束
默认情况下,向导会根据维度的键属性为每个维度表生成主键约束。 如果生成主键约束,则默认生成单独的名称列。 即使决定不在数据库中创建主键,也会在数据源视图中创建逻辑主键。
注释
如果在维度表所基于的维度中指定了多个键属性,则会发生错误。
翻译
该向导将生成一个单独的表,用于保存任何需要翻译列的属性的翻译值。 该向导还会为每个所需语言创建单独的列。
事实数据表
对于多维数据集中的每个度量值组,架构生成向导将生成一个事实数据表,以包含在主题区域数据库中。 事实数据表的结构取决于在设计它所基于的度量值组时所做的选择,以及度量值组与任何包含维度之间建立的关系。
列
向导为每个度量值生成一列,但使用 Count
聚合函数的度量值除外。 此类度量值不需要事实数据表中的相应列。
该向导还会为度量值组中每个常规维度关系的每个粒度属性生成一列,如果适用,还会为与该度量值组存在事实维度关系的维度的每个属性关联的绑定生成一列或多列。
关系
该向导为从事实数据表到维度表粒度属性的每个常规维度关系生成一个关系。 如果粒度基于维度表的关键属性,则会在数据库和数据源视图中创建关系。 如果粒度基于另一个属性,则关系仅在数据源视图中创建。
如果选择在向导中生成索引,则会为每个关系列生成非聚集索引。
约束
主键不会在事实表中自动生成。
如果选择强制实施引用完整性,则维度表和事实数据表之间会生成引用完整性约束(如果适用)。
翻译
该向导生成一个单独的表,用于保存需要转换列的度量值组中任何属性的转换值。 该向导还会为每个所需语言创建单独的列。
数据类型转换和默认长度
架构生成向导忽略除使用 SQL Server wchar
数据类型的列以外的所有情况下的数据类型。 数据 wchar
大小直接转换为 nvarchar
数据类型。 但是,如果使用大小指定的列 wchar
长度大于 4000 字节,则架构生成向导将生成错误。
如果数据项(如属性的绑定)没有指定的长度,则下表中列出的默认长度用于该列。
数据项 | 默认长度(字节) |
---|---|
关键列 | 50 |
名称列 | 50 |
自定义汇总列 | 3000 |
自定义汇总属性列 | 500 |
一元运算符列 | 1 |