架構產生精靈會根據 Analysis Services 中的維度和量值群組,為主體區域資料庫產生反正規化的關係架構。 精靈會為每個維度產生關係型數據表來儲存維度數據,該數據稱為維度數據表,以及每個量值群組用來儲存事實數據的關係型數據表,這稱為事實數據表。 精靈會在產生這些關係型數據表時,忽略連結維度、連結量值群組和伺服器時間維度。
驗證
開始產生基礎關係架構之前,架構產生精靈會驗證 Analysis Services Cube 和維度。 如果精靈偵測到錯誤,它會停止並將錯誤報告至 SQL Server Data Tools (SSDT) 中的 [工作清單] 視窗。 防止產生的錯誤範例包括下列各項:
具有多個關鍵屬性的維度。
與鍵屬性具有不同資料類型的父屬性。
沒有量值的量值群組。
未正確設定的變質維度或量值。
未正確配置的 Surrogate 鍵,例如使用
ScdOriginalID屬性類型的多個屬性,或者使用ScdOriginalID屬性未綁定到使用整數數據類型的列。
維度資料表
針對每個維度,架構產生精靈會產生要包含在主旨區域資料庫中的維度數據表。 維度數據表的結構取決於在設計其基礎維度時所做的選擇。
欄位
精靈會針對維度數據表所依據之維度中每個屬性相關聯的系結產生一個數據行,例如每個屬性的 KeyColumns、 NameColumn、 ValueColumn、 CustomRollupColumn、 CustomRollupPropertiesColumn和 UnaryOperatorColumn 屬性的系結。
關係
精靈會在每個父屬性的欄位和維度表的主鍵之間建立關聯。
如果適用,精靈也會在 Cube 中定義為參考維度的每個其他維度數據表中,產生主鍵的關聯性。
限制條件
根據預設,精靈會根據維度的索引鍵屬性,為每個維度數據表產生主鍵條件約束。 如果產生主鍵條件約束,預設會產生個別的名稱數據行。 即使您決定不要在資料庫中建立主鍵,仍會在數據源檢視中建立邏輯主鍵。
備註
如果在維度數據表所依據的維度中指定了多個索引鍵屬性,就會發生錯誤。
翻譯
向導程式會生成一個獨立的數據表,用於存放任何屬性需要翻譯欄位的翻譯值。 精靈也會為每個必要語言建立單獨的欄。
事實資料表
針對 Cube 中的每個量值群組,[架構產生精靈] 會產生要包含在主旨區域資料庫中的事實數據表。 事實數據表的結構取決於在設計其所依據之量值群組時所做的選擇,以及量值群組與任何內含維度之間建立的關聯性。
欄位
精靈會為每個量值產生一個數據行,但使用聚合函數的 Count 量值除外。 這類量值不需要事實數據表中的對應數據行。
如果適用的話,精靈也會針對量值群組上每個一般維度關聯性的每個數據粒度屬性數據行產生一個數據行,以及與這個數據表所依據之量值群組有事實維度關聯性之維度的每個屬性相關聯之系結的一或多個數據行。
關係
精靈會針對從事實數據表到維度數據表的數據粒度屬性,為每個一般維度關聯性產生一個關聯性。 如果數據粒度是以維度數據表的索引鍵屬性為基礎,則會在資料庫和數據源檢視中建立關聯性。 如果數據粒度是以另一個屬性為基礎,則只會在數據源檢視中建立關聯性。
如果您選擇在精靈中產生索引,就會為每個關聯性數據行產生非叢集索引。
限制條件
主鍵不會在事實數據表上產生。
如果您選擇強制執行引用完整性,則適用時會在維度表與事實表之間產生引用完整性約束。
翻譯
精靈會生成一個專門的數據表,用於保存量值群組中任何屬性所需的翻譯值。 精靈程式也會為每個必要語言建立個別的欄。
數據類型轉換和預設長度
架構產生精靈在所有情況下都會忽略數據類型,但使用 SQL Server wchar 數據類型的數據行除外。 數據 wchar 大小會直接轉譯為 nvarchar 數據類型。 不過,如果使用wchar大小的欄位指定長度大於 4000 個字節,架構生成精靈會引發錯誤。
如果數據項,例如屬性的系結,沒有指定的長度,下表所列的預設長度會用於數據行。
| 資料項目 | 預設長度(位元組數) |
|---|---|
| 主鍵欄 | 50 |
| 名稱欄位 | 50 |
| 自定彙總欄 | 3000 |
| 自訂匯總屬性欄 | 500 |
| 一元運算符欄位 | 1 |