設定事實表格及識別旋轉維度

自治式資料倉儲中的事實表格會儲存 Essbase 立方體的資料。如果沒有符合同盟分割區需求的事實表格,則必須建立一個。您還必須瞭解旋轉維度為何,才能從 Essbase 立方體中選取。

開始進行本小節之前,請先建立 Essbase 應用程式和立方體 (如果還沒有的話)。

建立事實表格

對於同盟分割區,事實表格主要儲存 Essbase 立方體的資料值。如果您在自治式資料倉儲中沒有必要的事實表格,則必須建立事實表格。

事實表格必須為 Essbase 就緒格式,意思是事實表格符合以下對其內容與型態的要求:

  • 每個立方體的 (非屬性) 維度必須以單一資料欄標頭為代表,但其中一個立方體的維度為例外 (一般為包含計量/帳戶的維度),此維度必須以二或多個資料欄提供。

    註:

    被旋轉的維度在文件中稱為旋轉維度

  • 事實表格必須由唯一的記錄 (不可重複) 組成,且每個序列的 Essbase 儲存格交集一個資料列。

如果您熟悉 Essbase 資料匯出,您將會注意到事實表格的型態就像是 Essbase 資料欄匯出

與資料欄匯出類似,事實表格必須包含:

  • 大綱的每個 (非屬性) 維度各一個資料欄 (旋轉維度除外)

  • 旋轉維度的每個已儲存成員各有一個資料欄

以下為事實表格範例,其中的計量維度被旋轉,亦即其為旋轉維度。此旋轉維度影響了事實表格的型態,因為該維度已儲存成員變成以下資料欄標頭:SALES、COGS、MARKETING、PAYROLL、MISC、INTITIAL_INVENTORY 以及 ADDITIONS。


含有去標準化資料與中繼資料的事實表格

您可以使用 SQL 建置事實表格,也可以透過 Essbase 資料匯出建立。您可以使用自治式資料倉儲工具或使用 Essbase 資料載入功能,將資料載入事實表格。

建置事實表格的其他準則包括:

  • 事實表格的資料欄數必須少於 1000 個。

  • 不可包含 Essbase 中將對應至屬性維度的資料欄。

  • 事實表格的有效位數不可小於 IEEE binary64 (雙精度浮點數)。

  • 事實表格的維度成員應為 NVARCHAR2 類型且長度為 1024 個位元字元的國際化字串。

事實表格建立範例

您可以使用 SQL,在自治式資料倉儲中建立事實表格。

例如:

CREATE TABLE "ADMIN"."SAMP_FACT" 
   (    "DIMENSION_PRODUCT" NVARCHAR2(1024), 
        "DIMENSION_MARKET" NVARCHAR2(1024), 
        "DIMENSION_YEAR" NVARCHAR2(1024), 
        "DIMENSION_SCENARIO" NVARCHAR2(1024), 
        "SALES" NUMBER(38,0), 
        "COGS" NUMBER(38,0), 
        "MARKETING" NUMBER(38,0), 
        "PAYROLL" NUMBER(38,0), 
        "MISC" NUMBER(38,0), 
        "INITIAL_INVENTORY" NUMBER(38,0), 
        "ADDITIONS" NUMBER(38,0)
   ) NOCOMPRESS LOGGING TABLESPACE "ADMIN" PARALLEL 4;

備註

  • 在上述範例中,綱要使用者為 ADMIN,事實表格名稱為 SAMP_FACT。

  • 為獲得最佳效能,事實表格中的所有非數值資料欄都應該為 NVARCHAR2(1024) 類型,所有數值資料欄都應該為 NUMBER 類型。

  • Oracle 建議新增 PARALLEL 4 以啟用在自治式資料倉儲中平行建立索引的功能。

  • 不可建立任何空值資料列。

  • 如果您在建立事實表格時收到下列驗證錯誤,請刪除空值資料列。

    ORA-18265: fact table key column ("<DIM_NAME>") with value ('') not in
          dimension("<Name_of_Column") star table key column
  • 為了獲得最佳效能,除非絕對需要,否則應避免對表格增加任何特定限制 (例如成員為 NON NULL)。

指定旋轉維度

您在設計同盟分割區時,需要選取旋轉維度。旋轉維度是您從 Essbase 立方體大綱指定的維度,代表數值資料值。

  • 旋轉維度可以是計量/帳戶,但並非必要。

  • 旋轉維度的所有已儲存成員,都必須對應至代表您自治式資料倉儲中數值資料值的事實表格資料欄。

  • 如果需要執行 Essbase 區塊儲存 (BSO) 計算命令檔,請選取密集維度作為旋轉維度。旋轉維度若為稀疏維度,同盟分割區將不支援計算命令檔。

  • 旋轉維度應該具有較為靜態的成員名稱,而不是非常大量的成員。原因:若變更 Essbase 立方體大綱中的旋轉維度 (例如新增或重新命名已儲存的成員),必須對自治式資料倉儲中的事實表格進行相應的手動更新,同時必須重新建立同盟分割區。

  • Essbase 維度包含需要複雜、動態公式的成員 (例如 Sample Basic 範例中的 "Opening Inventory" 與 "Ending Inventory"),則不應選取作為旋轉維度。

  • 您需在建立同盟分割區時,提供選取的旋轉維度。

  • 旋轉維度繼承 Oracle Database 的 1,000 個資料欄的限制。您必須決定旋轉維度中適用資料欄成員的數目,以確保不會超過此限制。旋轉維度中可能的已儲存成員組合數目加上立方體中的維度數目,不可小於或等於 1,000。