設計以 Cube 為基礎的報表模型

報表模型是使用報表管理員或是 Microsoft Office SharePoint Server 2007 或 SharePoint Server 2010 (在 SharePoint 整合模式中執行時),從 SQL Server Analysis Services (SSAS) Cube 中產生。您必須是 Analysis Services 資料庫的管理員,才能從 SSAS Cube 建立報表模型。模型產生之後,將無法修改它。如果您決定要變更資料庫的內容,請再次重新產生此模型,以併入您的變更。

連接字串

依據 Analysis Services 資料庫建立報表模型時,您的連接字串類似如下:

Data Source=<reportserver>;Initial Catalog=<database name>

[!附註]

如果您的 Analysis Services 資料庫包含 Cube 翻譯,您可以建立翻譯版本的報表模型。若要為每個語言建立一個模型,請在資料來源的連接字串中指定地區設定識別碼 (LCID)。例如,若要以中文建立模型,您的連接字串應該類似如下:Data Source=<reportserver>;Initial Catalog=<database name>;LocaleIdentifier=3012。如需有關 Cube 翻譯的詳細資訊,請參閱<Cube 翻譯>。

從 Analysis Services 資料庫產生模型的規則

以下是從 Cube 建立模型時所套用的一般規則清單:

  • 量值群組會對應到實體。單一報表模型包含 Analysis Services 資料庫內的所有 Cube。

  • 維度會對應到實體,事實維度不會產生不同的實體。例如,假設您在 Cube 內有一個 Sale 量值群組以及一個名為 Sale Detail 的事實維度。當從這個 Cube 產生模型時,此模型將會產生單一實體,此實體中包含 Sale 的所有量值及 Sale Detail 的所有維度屬性。

  • 量值群組和維度之間的關聯性會轉換成此模型內的角色,參考的關聯性 (用於間接關聯性) 及多對多關聯性會以角色形式定義在此模型中。

  • 量值會轉換成實體屬性。

  • 維度屬性會轉換成實體屬性。模型並沒有任何階層的概念,因此,如果可以看到維度屬性,或是有可見的階層包含以它為根據的層級時,此維度屬性就會包含在模型中。即使維度標示為不可見,還是一定會包含此維度的索引鍵屬性。

  • 量值和維度屬性中的實體屬性會根據 Cube 內定義的任何顯示資料夾來組織成若干資料夾。

  • Cube 檢視方塊會變成報表模型檢視方塊;此外,每一個 Cube 會變成此模型內的檢視方塊。因此,「報表產生器」使用者必須選取此模型內的檢視方塊,而且不能是最上層模型。

  • 導出量值 (導出成員) 會變成實體上的屬性 (此實體會對應到與量值相關的量值群組)。

  • 在維度之索引鍵屬性上定義的命名集會轉換成實體的子類型。例如,“Large Customers” 命名集會產生 “Customer” 的子類型。不是以單一索引鍵屬性為根據的命名集則會予以忽略。

  • 關鍵效能指標 (KPI) 會轉換成實體上的屬性 (此實體會對應到與此 KPI 相關的量值群組)。會針對每一個 KPI 建立多個屬性,涵蓋該 KPI 的不同元件 (值、目標、狀態和趨勢)。此外,會分別針對保有 StatusGraphic 和 TrendGraphic 屬性的狀態和趨勢建立變異屬性。當您使用這兩個屬性時,報表中會包含實際影像。

從報表模型省略的 Analysis Services 資料庫項目

以下 SSAS 項目不會出現在產生的模型中:

  • 不在量值維度中的導出成員。

  • 父子式階層不會轉換成模型屬性或角色。仍然會包含索引鍵屬性,但是報表中該屬性的使用將會顯示索引鍵成員的量值,而不是父子式階層上所彙總的值。此外,效能將會受到影響。

  • 動作,包括鑽研動作。彙總屬性上一定會啟用鑽研功能,不論 Cube 中所定義的鑽研動作為何。因此,當使用者在模型外執行「報表產生器」報表,然後按一下彙總來顯示 點選連結報表時,將會顯示空的資料表。

  • 屬性關聯性。維度會產生單一實體,而維度之屬性之間的任何關聯性將不會影響報表模型。

  • 會忽略從量值群組到維度之間的關聯性 (前提是這些關聯性是根據該維度之索引鍵屬性以外的屬性)。例如,「預算」量值群組可能會與「月份」層級 (而不是「日」層級) 上的「時間」有關。在此情況下,報表模型將不會包含「預算」實體和「時間」實體之間的任何關聯性。

Cube 設計考量

當您要設計您打算產生報表模型的 Cube 時,請考量以下事項:

  • 沒有相關量值群組的導出量值或 KPI 將不會出現在報表模型中。若要針對導出量值設定相關的量值群組,您應該使用 [計算屬性] 對話方塊。

  • 「報表產生器」所傳送的查詢一定會要求維度成員的成員值,而且將會使用此成員值來進行排序及篩選。根據預設,如果 Analysis Services 中的屬性有名稱繫結,則此成員值將會與成員名稱相同。如果此屬性沒有名稱繫結,則此成員值將會與成員索引鍵相同。但是,每一個屬性都可以明確繫結到提供此成員值的資料行,此成員值應該會傳回 “true” 資料類型的值。例如,Analysis Services 中的 Date 屬性可能會有一個 DateTime 索引鍵 (例如 “4/25/2008”) 以及文字描述的名稱/標題 (“Friday, 25th April, 2008”)。在此情況下,Cube 設計師應該將 MemberValue 設為此索引鍵,以確保能夠進行合理的排序和篩選。雖然您應該針對任何屬性考量這一個情況,但是這對於日期時間屬性會特別有相關性。如果是任何日期時間屬性,所產生的模型將會包含兩個報表模型屬性:一個是標題的屬性,另一個是真正日期時間值的變數屬性。

  • 維度屬性 (Attribute) 的 InstanceSelection 屬性 (Property) 是用來在實體上設定 InstanceSelection 報表模型屬性 (Property) 以及在屬性 (Attribute) 上設定 ValueSelection 報表模型屬性 (Property)。這會決定使用者將如何能夠在「報表產生器」中選取執行個體 (例如,利用下拉式清單)。

  • 維度屬性 (Attribute) 的 GroupingBehavior 屬性 (Property) 是用來設定模型屬性 (Attribute) 的 DiscourageGrouping 屬性 (Property)。

  • 影像形式的任何維度屬性必須在此維度屬性繫結上設定 Image 資料類型。

  • 從量值產生而來的屬性上一定會啟用鑽研功能,但是預設鑽研報表中只會包含最少的詳細資料;您應該視需要加入自訂的鑽研報表,以做為修改。

  • 如果 Cube 中有包含翻譯,則需要針對每一個翻譯來建立一個資料來源,以便將翻譯公開在報表模型中,這項處理的作法是在連接字串中適當地設定 LocaleIdentifier 屬性。然後會針對每一個資料來源產生一個模型,而且將會包含相關翻譯中的中繼資料。