計算屬性資料

Essbase 會使用 Essbase 所建立之系統定義維度的成員,在擷取時動態計算屬性資料。使用此維度,您可以將不同的計算函式 (例如總和或平均) 套用至相同的屬性。

您也可以對屬性維度的成員執行特定計算;例如,針對由盎司調整的產品,依盎司來決定獲利能力。

下列資訊假設您瞭解屬性維度和 Essbase 計算 (包括動態計算) 的概念。請參閱下列小節。

屬性計算維度

當您在立方體中實行屬性時,系統會自動為「屬性計算」新增僅限標籤的動態計算維度。Essbase 會在擷取時使用它來計算屬性資料。

當您在大綱中建立第一個屬性維度時, Essbase 會建立由五個成員組成的「屬性計算」維度,其預設名稱為 Sum、Count、Min (minimum)、Max (maximum) 和 Avg (average)。您可以在試算表或報表中使用這些成員,以動態計算和報告屬性資料,例如西區 12 瓶可樂的平均每年銷售額。

大綱中看不到「屬性計算」維度。無論您在何處選取維度成員,例如在 Smart View 中,都可以看到它。

屬性計算維度具有下列特性:

  • 系統定義系統

    在應用程式中建立第一個屬性維度時, Essbase 會建立「屬性計算」維度及其成員 (總和、計數、最小值、最大值和平均值)。每個成員代表要針對屬性執行的計算類型。

    請參閱屬性計算維度的預設成員

  • 僅限標籤

    與所有僅限標籤的維度一樣,屬性計算維度會共用其第一個子項 Sum 的值。

    請參閱成員儲存特性

  • 動態計算

    「屬性計算」維度中的資料會在使用者要求時計算,然後予以捨棄。您無法將計算屬性資料儲存在資料庫中。

    請參閱資料值的動態計算

  • 不會顯示在大綱編輯器

    「屬性計算」維度不會顯示在大綱編輯器中。此維度的成員可以在試算表和報表中檢視。

屬性維度沒有整合。您無法使用整合符號 (例如 + 或 -) 或成員公式來標記屬性維度的成員,以計算屬性資料。作為動態計算成員,屬性計算不會影響時間或計算順序的批次計算。

若要在擷取時計算屬性資料, Essbase 會執行下列工作:

  1. 尋找與目前查詢中存在之屬性維度成員相關聯的基本維度成員。

  2. 動態計算目前查詢之屬性成員組合的總和、計數、最小值、最大值或平均值。

  3. 在試算表或報表中顯示結果。

  4. 捨棄計算值 - 也就是說,值不會儲存在資料庫中。

    附註:

    Essbase 會在計算屬性資料時排除 #MISSING 值。

例如,如圖 6-2 所示,試算表使用者在試算表報表中指定兩個屬性維度 (Ounces_16 和 Bottle) 成員以及一個「屬性計算」成員 (Avg)。擷取時, Essbase 會針對目前成員組合,動態計算所有與這些屬性相關聯之產品的平均銷售值 (實際 -> 銷售 -> 東 -> Qtr1):

圖 6-2 擷取屬性計算成員


這張圖說明屬性計算維度的查詢成員,如圖像前面的文字所述。

請參閱在 Smart View 中存取屬性計算成員

屬性計算維度的預設成員

Essbase 屬性計算維度包含五個用於計算和報告屬性資料的成員 (總和、計數、最小值、最大值和平均值)。

總和—計算具有屬性或屬性組合之成員值的總和或總計。

Count (計數) - 計算具有指定屬性或屬性組合的成員數目,該屬性有資料值存在。計數僅包含資料區塊存在的成員。若要計算具有特定屬性之所有成員的計數,不論其是否具有資料值,請使用 @COUNT 函數與 @ATTRIBUTE 函數結合。

平均值 - 針對指定的屬性或屬性組合 (總和除以計數) 計算非遺失值的數學平均值或平均值。

Min - 計算指定屬性或屬性組合的最小資料值。

最大值—計算指定屬性或屬性組合的最大資料值。

附註:

每一項計算都會排除 #MISSING 值。

您可以變更這些預設成員名稱,其命名慣例與標準成員相同。請參閱變更屬性計算維度的成員名稱

屬性計算範例

作為 Essbase 如何計算屬性資料的範例,屬性計算是用來計算以瓶裝和罐裝產品之總和、計數、平均、最小和最大銷售額。

考慮下列東方的每年銷售資料:

表格 6-3 屬性資料範例

基礎維度成員 相關屬性 屬性 - 成員組合的銷售值

Cola

Ounces_12,罐

23205

不含糖可樂

Ounces_12,罐

3068

奶油奶油

Ounces_12,罐

1074

Grape

盎司 _32,瓶

6398

橘色

盎司 _32,瓶

3183

草莓

盎司 _32,瓶

5664

圖 6-3 顯示計算屬性資料在試算表報表中的外觀。您可以為屬性擷取多個「屬性計算」成員。例如,您可以計算瓶罐和罐的總和、計數、平均值、最小值和最大值。

圖 6-3 含有屬性資料的範例試算表


此圖像根據圖像上方表格中提供的範例屬性資料顯示範例試算表。

存取 Smart View 中的屬性計算成員

您可以從 Smart View 中的 Essbase 屬性計算維度存取成員。

在試算表中,使用者可以使用下列任何一種方法來檢視「屬性計算」維度成員:

  • 直接將成員輸入工作表中

  • 從「查詢設計工具」選取成員

  • 輸入成員作為 EssCell 參數

屬性計算與擷取效能

若要最佳化 Essbase 中的屬性查詢,請確定屬性維度是唯一的稀疏 Dynamic Calc 維度、在密集維度之後定位稀疏維度、在擷取之前向下鑽研至基礎維度的最低層級,以及根據其屬性將基礎維度的成員分組。

若要最佳化屬性計算與擷取效能,請考慮下列事項:

  • 屬性計算的計算順序與動態計算的計算順序相同。請參閱動態計算的計算順序

  • 由於 Essbase 會在擷取時動態計算屬性資料,因此屬性計算不會影響整體 (批次) 資料庫計算的效能。

  • 將基礎維度成員標記為動態計算可能會增加擷取時間。

  • 當查詢包含「總和」成員以及其相關基礎成員標記為兩階段的屬性維度成員時,擷取時間可能會變慢。

  • 若要最大化屬性擷取效能,請使用下列任一技術:

    • 使用使用屬性最佳化大綱效能中的秘訣來設定大綱。

    • 請先向下鑽研至基礎維度的最低層級,再擷取資料。例如,在 Smart View 中,開啟「無資料導覽」功能,向下鑽研至報表中所含基礎維度的最低層級,然後擷取資料。

    • 當基礎維度的成員與多個屬性維度相關聯時,請考慮根據其屬性將基礎維度的成員分組。例如,在 Sample Basic 資料庫中,您可以將所有 8 次退信產品分組。

計算公式中的屬性

除了使用「屬性計算」維度來計算屬性資料之外,您還可以使用標準或基本維度成員上的公式,對 Essbase 屬性維度的成員執行計算。

例如,您可以將公式套用至 Accounts 維度中的成員,以根據盎司大小的產品來決定獲利能力。

您無法將公式與屬性維度的成員建立關聯。

附註:

在與二次成員相關聯的公式中使用屬性時,會套用某些限制。請參閱 Two-Pass Calculations on Attribute 維度中有關兩次計算的資料列。

您可以使用下列函數來執行屬性的計算:

表格 6-4 在屬性上計算的函數

函式 計算的類型

@ATTRIBUTE (用於區塊儲存) 或 MDX ATTRIBUTE() (用於聚總儲存)

產生具有特定屬性的所有基礎成員清單。例如,產生具有 Bottle 屬性的成員清單,然後增加這些成員的價格。

@ATTRIBUTEVAL

@ATTRIBUTEBVAL

@ATTRIBUTESVAL

傳回與正在計算之基礎成員相關聯的層級 0 屬性成員值。

  • 從數值或日期屬性維度 (使用 @ATTRIBUTEVAL)

  • 從布林屬性維度 (使用 @ATTRIBUTEBVAL)

  • 從文字屬性維度 (使用 @ATTRIBUTESVAL)

例如,針對正在計算的基礎成員 (例如 Cola) 傳回大小屬性的數值 (例如,12 代表 Ounces 下的成員 12)。

如需在公式中使用 @ATTRIBUTEVAL 的其他範例,請參閱計算屬性公式

@TODATE (用於區塊儲存) 或 MDX TODATE() (用於聚總儲存)

將日期字串轉換為數字以進行計算。例如,將 @TODATE 與 @ATTRIBUTEVAL 函數結合使用,以增加特定日期後開店的製造費用成本。

@WITHATTR (用於區塊儲存) 或 MDX WITHATTR() (用於聚總儲存)

產生與符合您指定條件之屬性相關聯的基本維度成員清單。例如,產生大於或等於 20 盎司的產品清單,然後增加這些產品的價格。

屬性計算和共用成員

為了避免因屬性計算而產生非預期的結果,請避免在 Essbase 大綱的階層中將共用和儲存的成員混合在一起。

屬性計算從層級 0 開始,在第一個儲存的成員停止。因此,如果您的大綱在大綱階層中的兩個共用成員之間放置了儲存的成員,則計算結果可能不會包含較高的共用成員。

在下列範例中,當執行屬性計算時,計算會從層級 0「成員 2」開始,並在遇到第一個儲存的成員 (即「成員 A」) 時停止。因此,計算中不會包含成員 1。

Member 1 (stored)
   Member A (stored)
     Member 2 (shared)
Member B (stored)
   Member 1 (shared member whose prototype member is Member 1 above)

如果成員 2 未共用,或成員 1 在大綱的其他地方沒有對應的共用成員,則計算結果不會如預期般。

計算屬性與非屬性成員之間的差異

若要讓屬性維度成員的聚總與標準維度成員的聚總一致,請考慮從屬性階層移除重複的共用成員,或修訂 Essbase 大綱以消除多個聚總路徑。

屬性維度成員的計算與標準維度中已儲存或動態計算成員的計算不同。

Essbase 彙總標準維度中的成員時,父成員的值會根據彙總父成員的子成員值,無論子成員是層級 0 或上層成員。所有下階成員值均構成上階成員的值。

Essbase 彙總屬性維度中的成員時,對於要求屬性彙總的每個父成員,子代清單會展開以包含需要彙總以計算父值之相依層級 0 資料區塊。

鑑於這些差異,如果涉及共用成員且有多個聚總路徑,則聚總屬性維度成員的結果可能會與聚總標準維度成員的結果不同。

若要解決此問題,請移除聚總屬性階層底下的重複共用成員,或將大綱重新編碼,以便沒有多個聚總路徑。