當維度用來切分量值時,量值會沿著該維度所包含的階層匯總。 總和行為取決於為量值指定的聚合函數。 對於包含數值數據的大部分量值,聚合函數為 Sum。 量值的值會根據階層的作用中層級,加總到不同的數量。
在 Analysis Services 中,您所建立的每個量值都會由決定量值作業的聚合函數所支援。 預先定義的匯總類型包括 Sum、、Min、CountMax、Distinct Count 和其他數個更特製化的函式。 或者,如果您需要以複雜或自定義公式為基礎的匯總,您可以建置 MDX 計算,而不是使用預先建置的聚合函數。 例如,如果您想要定義百分比值的量值,您可以使用匯出量值在 MDX 中執行此動作。 請參閱 CREATE MEMBER 語句(MDX)。
透過 Cube 精靈建立的量值會指派匯總類型做為量值定義的一部分。 匯總類型總是Sum,假設源數據行包含數值數據。
Sum 不論來源資料行的數據類型為何,都會指派 。 例如,如果您使用 Cube 精靈來建立度量值,並從事實數據表中提取所有數據行,您會注意到所有產生的度量值都具有 Sum 的匯總,即使來源是日期時間數據行也不例外。 務必檢視對透過精靈建立的度量預先指派的匯總方法,以確保匯總函數合適。
您可以透過 SQL Server Data Tools - Business Intelligence 或 MDX,在 Cube 定義中指派或變更匯總方法。 如需進一步指示,請參閱在多維度模型中建立量值和量值群組或匯總 (MDX)。
聚合函數
Analysis Services 提供函式來匯總量值群組中包含的維度。 聚合函數的 附加性 會決定量值如何匯總到 Cube 中的所有維度。 聚合函數分為三個附加性層級:
添加劑
附加量值也稱為完全加總量值,可以沿著包含量值的量值群組中包含的所有維度進行匯總,而不受限制。
半加總函數
半加性量值可以沿著包含該量值的量值群組中的某些維度匯總,但不是所有的維度。 例如,代表庫存可用數量的量值可以沿著地理維度匯總,以產生所有倉儲可用的總數量,但是量值無法沿著時間維度匯總,因為量值代表可用的數量週期快照集。 沿著時間維度匯總這類量值會產生不正確的結果。 如需詳細資訊,請參閱定義半加總行為。
非加總
非加總量值無法沿著包含量值的量值群組中的任何維度匯總。 相反地,必須針對代表量值之 Cube 中的每個儲存格個別計算量值。 例如,計算出的指標,例如像是獲利率,無法從任何維度中子成員的百分比值匯整。
下表列出 Analysis Services 中的聚合函數,並描述函式的附加性和預期輸出。
| 彙總函數 | 附加性 | 傳回的值 |
|---|---|---|
Sum |
添加劑 | 計算所有子成員的值總和。 這是預設聚合函數。 |
Count |
添加劑 | 取得所有子成員的計數。 |
Min |
半加總 | 擷取所有子成員的最低值。 |
Max |
半加法 | 擷取所有子成員的最高值。 |
DistinctCount |
非相加性 | 擷取所有唯一子成員的計數。 如需詳細資訊,請參閱下一節中的 關於相異計數量值 。 |
None |
非加總 | 不會執行匯總,而且維度中分葉和非分葉成員的所有值都會直接從包含量值的量值群組提供事實數據表。 如果無法從成員的事實數據表讀取任何值,該成員的值會設定為 null。 |
ByAccount |
半加總 | 根據指派給帳戶維度中成員之帳戶類型的聚合函數,計算匯總。 如果量值群組中沒有帳戶類型維度,則 None 視為聚合函數。如需帳戶維度的詳細資訊,請參閱 建立父子類型維度的財務帳戶。 |
AverageOfChildren |
半加法 | 計算所有不為空的子成員的數值的平均值。 |
FirstChild |
半加總 | 擷取第一個子成員的值。 |
LastChild |
半加總 | 擷取最後一個子成員的值。 |
FirstNonEmpty |
半加總 | 擷取第一個非空白子成員的值。 |
LastNonEmpty |
半加總 | 擷取最後一個非空白子成員的值。 |
關於相異計數量值
具有 Aggregate Function 屬性值為 Distinct Count 的量度稱為 distinct count 衡量。 相異計數量值可用來計算事實數據表中維度最低層級成員的出現次數。 因為計數是獨立的,如果成員出現多次,則只會計算一次。 相異計數量值一律放在專用量值群組中。 將獨立的相異計數量值放入其專屬的量值群組,是設計工具中內建的效能優化技術之一的最佳實踐。
獨特計數度量通常用來判斷維度的每個成員有多少獨特的最低層級成員在事實表中共享行。 例如,在銷售 Cube 中,針對每個客戶和客戶群組,已購買多少個不同的產品? 也就是說,對於 Customers 維度的每個成員,Products 維度中有多少個獨特、最低層級的成員在事實數據表中共享行?或者,例如,在網站流量分析的「因特網訪問立方體」中,針對每個網站訪客及訪客群組,訪問了網站上多少個不同的頁面? (也就是說,對於網站訪客維度的每個成員,Pages 維度中有多少不重複的最低層級成員共用在事實數據表中的行?在這些範例中,第二維度的最低層級成員是通過相異計數指標來計算的。)
這種分析不限於兩個維度。 事實上,獨特計數量度可以透過 Cube 中的任何維度組合來分割和切分,包括包含已計算成員的維度。
計算成員的相異計數量值是以事實數據表中的外鍵數據行為基礎。 (也就是說,量值的 源數據行 屬性會識別此數據行。此數據行會聯結維度數據表數據行,以識別相異計數量值所計算的成員。