設定事實表格及指定旋轉維度

自治式資料倉儲中的事實表格儲存了含有同盟分割區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,在自治式資料倉儲中建立事實表格。

  1. 使用 SQL Developer 或您選擇的工具,以綱要擁有者身分登入自治式資料倉儲 (從建立同盟分割區的綱要步驟)。

  2. 如果還沒有事實表格,請使用 SQL 建立。

    例如,下列 SQL 會使用從 Essbase Sample Basic 立方體匯出的資料建立事實表格。

    CREATE TABLE "SAMP_FACT"
    ( "PRODUCT" NVARCHAR2(1024),
    "MARKET" NVARCHAR2(1024),
    "YEAR" NVARCHAR2(1024),
    "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 PARALLEL 4;

備註

  • 在以上範例中,事實表格名稱為 SAMP_FACT,並且以 Sample Basic 為基礎。

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

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

  • 中繼資料資料欄不能包含空值。

  • 立方體的用途如果包含資料生成處理作業 (例如增量資料載入或批次命令檔更新),Oracle 建議使用 NOCOMPRESS。立方體若主要用於讀取作業的話,請使用 COMPRESS 將用於報表的事實表格最佳化。

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

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

  • 在以上範例中,事實表格名稱是以 Essbase 檔案目錄之儲藏庫中提供的 Sample Basic 為基礎。您可以從此範例立方體或任何其他 Essbase 立方體匯出資料,然後載入資料來建置事實表格。您必須先設定用於將資料載入同盟分割區應用程式的證明資料,才能執行此作業。請參閱同盟分割區資料載入,瞭解如何設定證明資料及如何使用 DATAEXPORT 命令將資料匯出成 DBMS 格式。

指定旋轉維度

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

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

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

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

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

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

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

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

  • 對於聚總儲存立方體,不應選取包含多層級已儲存成員階層的維度作為旋轉維度。應選取包含動態階層、平面的已儲存階層、單一層級階層的旋轉維度 (其中所有成員都是層級 0 的已儲存成員)。