將資料載入聚總儲存立方體
Essbase 彙總儲存 (ASO) 立方體可協助分析包含最多百萬個或更多成員的非常大型維度。為了協助您將資料載入這類大型大綱,您可以增量地載入、管理資料載入緩衝區,以及合併 / 取代資料片段。
為了有效地支援將資料值載入這類大型立方體, Essbase :
-
允許透過暫時資料載入緩衝區處理多個資料來源
-
可讓您控制資料載入緩衝區所使用的資源百分比
-
允許聚總儲存立方體包含多個資料片段 (資料庫的查詢會存取每個片段、收集所有資料儲存格)
-
提供以時間長度完成且與增量資料大小成正比的增量資料載入處理
若要載入值以聚總儲存立方體,您可以使用 Essbase Web 介面中的「工作」頁面,或是使用 MaxL 中的更改資料庫和匯入資料陳述式。本文件中的範例是以使用 MaxL 為基礎。
附註:
如果值已透過聚總計算和儲存,則 Essbase 會在資料值變更時自動更新更高層級的儲存值。不需要額外的計算步驟。聚總的存在與大小會影響執行資料載入所需的時間。
您無法在將資料載入立方體時匯出資料。
複製 ASO 應用程式時,若要保留立方體中的所有資料,您必須先將所有增量資料切片合併至主要資料庫切片,再複製應用程式。不會複製未合併增量資料切片中的資料。
透過資料載入緩衝區以增量方式載入資料
如果您使用增量資料載入將資料值載入至 Essbase 彙總儲存 (ASO) 立方體,則可以改善效能。Essbase 會先將值載入至暫時資料載入緩衝區,並在讀取所有資料來源後進行最終寫入儲存。
使用匯入資料 MaxL 敘述句從單一資料來源載入資料值並不涉及聚總儲存資料載入緩衝區。
如果您使用多個匯入資料庫資料 MaxL 陳述式來載入資料值至彙總儲存立方體,則 Essbase 可以使用暫時資料載入緩衝區,並在讀取所有資料來源後完成儲存的最終寫入。使用聚總儲存資料載入緩衝區可大幅提升整體資料載入效能。
在彙總儲存資料載入緩衝區中, Essbase 會在讀取所有資料來源後排序並確認值。如果遇到任何特定資料儲存格的多個 (或重複) 記錄,則會累積該值。然後, Essbase 會儲存累計值—取代、新增至立方體中的現有資料值,或從其中減去。
附註:
使用聚總儲存資料載入緩衝區時,在將資料緩衝區內容載入立方體時,會為整組資料來源指定取代、新增或減去值的選項。
當記憶體中存在資料載入緩衝區時,您無法建立彙總或合併片段,因為這些作業會耗用大量資源。不過,您可以將資料載入其他資料載入緩衝區,以及在立方體上執行查詢和其他作業。在確認完整資料集並建立聚總之前,可能會有短暫的等待查詢。
資料載入緩衝區會存在於記憶體中,直到緩衝區內容確認至立方體,或重新啟動應用程式之後,緩衝區就會銷毀。即使確認作業失敗,緩衝區也會銷毀,且資料不會載入立方體中。您可以使用 alter database MaxL 敘述句,手動損毀資料載入緩衝區。
附註:
在確認緩衝區內容之前停止應用程式,會銷毀緩衝區。在此情況下,在重新啟動應用程式之後,您必須初始化新的緩衝區並將資料載入到該緩衝區。
若要使用聚總儲存立方體的資料載入緩衝區,請執行下列動作:
下列增量資料載入範例在新資料值未與現有值相交時,提供最佳效能:
-
使用 ignore_missing_values 和 ignore_zero_values 特性建立單一資料載入緩衝區。舉例而言:
alter database ASOsamp.Basic initialize load_buffer with buffer_id 1 property ignore_missing_values, ignore_zero_values;如果立方結構在更新時必須可供傳送資料要求,請將 resource_usage 文法設為 80% 的資料載入緩衝區初始化。舉例而言:
alter database ASOsamp.Basic initialize load_buffer with buffer_id 1 resource_usage 0.8 property ignore_missing_values, ignore_zero_values; -
將資料載入緩衝區。舉例而言:
import database ASOsamp.Basic data from server data_file 'file_1.txt' to load_buffer with buffer_id 1 on error abort; import database ASOsamp.Basic data from server data_file 'file_2' to load_buffer with buffer_id 1 on error abort; -
透過建立片段並新增值,將資料載入緩衝區的內容確認至立方體。舉例而言:
import database ASOsamp.Basic data from load_buffer with buffer_id 1 add values create slice;
資料載入緩衝區資源和磁碟空間使用狀況
當您使用增量資料載入將資料值載入至 Essbase 彙總儲存 (ASO) 立方體時,可以針對暫時資料載入緩衝區的允許資源使用和等待時間設定限制。您可以透過管理表格空間來減少磁碟空間使用量。
控制資料載入緩衝區資源使用狀況
執行增量資料載入時, Essbase 會使用聚總儲存快取來排序資料。您可以指定百分比來控制資料載入緩衝區可使用的快取量。百分比是介於 .01 與 1.0 (含) 之間的數字;只有小數點後的兩個數字有效,例如,0.029 會解譯為 0.02。依照預設,資料載入緩衝區的資源使用狀況會設為 1.0,而資料庫上建立之所有資料載入緩衝區的資源使用狀況總計不得超過 1.0。例如,如果有大小為 0.9 的緩衝區存在,您就無法建立另一個大小大於 0.1 的緩衝區。
附註:
傳送作業會在內部建立大小為 0.2 的載入緩衝區;因此,預設大小為 1.0 的載入緩衝區會導致傳送作業因資料載入緩衝區資源不足而失敗。
若要設定允許使用緩衝區的資源數量,請在 Essbase Web 介面中起始資料載入時指定百分比。如果使用 MaxL ,請搭配 resource_usage 文法使用 alter database MaxL 敘述句。
例如,若要將 resource_usage 設為總快取的 50%,請使用此敘述句:
alter database ASOsamp.Basic
initialize load_buffer with buffer_id 1
resource_usage .5;If you plan to run concurrent send operations, use the ASOLOADBUFFERWAIT configuration setting and the alter database MaxL statement with the wait_for_resources grammar. ASOLOADBUFFERWAIT 適用於使用 wait_for_resources 選項建立聚總儲存資料載入緩衝區,並且適用於配置、自訂計算、資料更新作業。
管理增量資料載入的磁碟空間
聚總儲存立方體的增量資料載入最多可使用目前資料檔大小的兩倍磁碟空間。例如,假設立方結構的資料大小為 1 GB,增量資料載入的大小為 200 MB,總大小為 1.2 GB。在增量資料載入程序期間, Essbase 最多可能會使用 2.4 GB 的磁碟空間。
如果資料庫大於 2 GB,您可以將預設表格空間的檔案大小上限設為不超過 2 GB,以降低磁碟空間使用率。
若要設定預設表格空間的檔案大小上限,您可以使用 alter tablespace MaxL 敘述句。
資料載入緩衝區特性
以增量方式將資料值載入聚總儲存 (ASO) 載入緩衝區時,您可以讓 Essbase 忽略來源資料中遺漏和零的值,而且您可以解決儲存格衝突 (藉由結合重複的儲存格來消除無效的聚總)。
您可以設定的資料載入緩衝區特性如下:
-
ignore_missing_values:忽略內送資料串流中的 #MI 值
-
ignore_zero_values:忽略內送資料串流中的 0
-
aggregate_use_last:使用最後載入至載入緩衝區的儲存格值來合併重複的儲存格
附註:
將文字和日期值載入聚總儲存資料庫時,請使用 aggregate_use_last 特性來協助排除無效的聚總。如需其他準則,請參閱載入、清除及匯出文字與日期測量。
如果您在命令中使用多個特性,而且發生任何衝突,則會優先使用列出的最後一個特性。
處理資料流中遺漏和為零的資料
以增量方式載入資料時,您可以指定將資料載入資料載入資料緩衝區時,如何處理來源資料中遺漏的值和零的值。
若要設定資料載入緩衝區特性,請使用含有特性文法的 alter database MaxL 敘述句。
舉例而言:
alter database ASOsamp.Basic
initialize load_buffer with buffer_id 1
property ignore_missing_values, ignore_zero_values;解決儲存格衝突
若要解決重複儲存格的儲存格衝突,您可以指定是否要使用載入緩衝區中的最後一個儲存格。
依預設,當具有相同索引鍵的儲存格載入相同的資料載入緩衝區時, Essbase 會透過將值一起新增來解決儲存格衝突。
若要透過接受最後載入至載入緩衝區的儲存格值來建立結合重複儲存格的資料載入緩衝區,請使用 alter database MaxL 敘述句與 aggregate_use_last 文法。
舉例而言:
alter database ASOsamp.Basic
initialize load_buffer with buffer_id 1
property aggregate_use_last;附註:
將資料載入緩衝區與 aggregate_use_last 文法搭配使用時,即使沒有任何重複索引鍵,資料載入也會顯著緩慢。
平行載入多個資料
Essbase 彙總儲存 (ASO) 立方體上可以有多個資料載入緩衝區。雖然一次只能有一個確認操作,但您可以在相同的確認中確認多個資料載入緩衝區,而且速度比個別確認緩衝區快。
若要同時將資料載入多個資料載入緩衝區,請使用個別的 MaxL Shell 階段作業。例如,在一個 MaxL Shell 階段作業中,將資料載入 ID 為 1 的緩衝區:
alter database ASOsamp.Basic
initialize load_buffer with buffer_id 1 resource_usage 0.5;
import database ASOsamp.Basic data
from data_file "dataload1.txt"
to load_buffer with buffer_id 1
on error abort;
在另一個 MaxL Shell 階段作業中,同時將資料載入 ID 為 2 的緩衝區:
alter database ASOsamp.Basic
initialize load_buffer with buffer_id 2 resource_usage 0.5;
import database ASOsamp.Basic data
from data_file "dataload2.txt"
to load_buffer with buffer_id 2
on error abort;
當資料完全載入資料載入緩衝區時,請使用一個 MaxL 敘述句,透過使用以逗號分隔的緩衝區 ID 清單,將兩個緩衝區的內容確認至資料庫:
例如,此敘述句會載入緩衝區 1 與 2 的內容:
import database ASOsamp.Basic data
from load_buffer with buffer_id 1, 2;附註:
將 SQL 資料載入聚總儲存立方體時,您最多可以使用 8 個規則檔案來平行載入資料。此功能與上述程序不同。以平行方式執行多個 SQL 資料載入時,您可以使用一個 import database MaxL 敘述句搭配使用多個 rules_file 文法。Essbase 會初始化多個暫時聚總儲存資料載入緩衝區 (每個規則檔案一個),並在一項作業中將所有緩衝區的內容確認至立方體。
列出聚總儲存立方體的資料載入緩衝區
Essbase 彙總儲存 (ASO) 立方體上可以有多個資料載入緩衝區。如需立方體上存在之資料載入緩衝區的清單與描述,請使用 list load_buffers MaxL 敘述句搭配 list load_buffers 文法。
列出 ASO 資料載入緩衝區的 MaxL 敘述句語法如下:
query database appname.dbname list load_buffers;此敘述句會傳回下列有關每個現有資料載入緩衝區的資訊:
表格 37-2 資料載入緩衝區資訊
| 欄位 | 描述 |
|---|---|
|
緩衝區識別碼 |
資料載入緩衝區的 ID (介於 1 與 4,294,967,296 之間的數字)。 |
|
內部 |
指定資料載入緩衝區是由 Essbase (TRUE) 內部建立,還是由使用者 (FALSE) 建立的布林值。 |
|
作用中 |
指定資料載入作業目前是否使用資料載入緩衝區的布林值。 |
|
資源使用 |
資料載入緩衝區允許使用的聚總儲存快取百分比 (介於 .01 與 1.0 (含) 之間)。 |
| 彙總方法 |
其中一個用來合併緩衝區內相同儲存格之多個值的方法:
|
|
ignore_missings |
指定是否忽略內送資料串流中 #MI 值的布林值。 |
|
忽略 -zeros |
指定是否忽略內送資料串流中零值的布林值。 |
請參閱:查詢資料庫 (彙總儲存)
建立資料切片
您可以逐步將資料載入緩衝區確認至 Essbase 彙總儲存 (ASO) 立方體,以建立切割。將新截塊載入立方體之後, Essbase 會先建立截塊上所有必要的檢視 (例如聚總檢視),然後再將新資料顯示到查詢。
建立資料截塊非常有用,因為它可以改善增量資料載入的效能。增量資料載入所花費的時間與新資料量成正比;立方結構的大小不是因子。
若要建立資料切片,請使用 import database MaxL 敘述句搭配 create slice 文法。
例如,若要透過覆寫值 (預設值) 來建立片段,請使用此陳述式:
import database ASOsamp.Basic data
from load_buffer with buffer_id 1
override values create slice;附註:
如果您在建立磁碟片段時使用置換值,則 #MISSING 值會取代為零。使用這個選項比使用加值或減值選項要慢得多。
請參閱:匯入資料 (彙總儲存)
合併累加式資料切片
以增量方式將資料載入聚總儲存 (ASO) 多維資料庫時,您可以手動將增量資料切片合併至主要多維資料庫切片,或是使用 AUTOMERGE 來設定 Essbase 在資料載入期間自動合併切片。
在資料載入至聚總儲存立方體期間自動合併增量資料切片
使用 AUTOMERGE 和 AUTOMERGEMAXSLICENUMBER 組態設定值,您可以指定 Essbase 是否會在資料載入至聚總儲存立方體時,自動合併增量資料切片。
AUTOMERGE 組態設定選項:
-
ALWAYS - 指定在將資料載入至彙總儲存立方體時,自動合併增量資料切片。依預設,每四個連續的增量資料切片會執行一次合併。不過,如果使用 AUTOMERGEMAXSLICENUMBER 組態設定值,當超過 AUTOMERGEMAXSLICENUMBER 值時,就會啟用自動合併處理作業。增量資料切片的大小不是選取合併哪些資料切片的因子。
預設值為 ALWAYS。
-
NEVER (永不) - 指定在資料載入至彙總儲存立方體時,永遠不要自動合併增量資料切片。若要手動合併增量資料切片,請使用 alter database MaxL 敘述句和合併文法。
-
SELECTIVE —當超過 AUTOMERGEMAXSLICENUMBER 組態設定中指定的增量資料切片數目時,指定啟用增量資料切片自動合併程序。如果資料載入中的增量資料塊數目未超過 AUTOMERGEMAXSLICENUMBER 的值,則不會啟用自動合併處理。
手動合併累加式資料切片
您可將所有累加資料切塊合併到主切片中,或將所有累加資料切塊合併到單一資料切塊中,同時將主切片維持不變。若要合併磁碟片段,您必須具有與載入資料 ( 資料庫更新權限或更高權限) 相同的權限。
將新的輸入檢視寫入立方體之後, Essbase 會建立該切片的聚總檢視。為新片段建立的檢視是主要片段上所存在之檢視的子集。
附註:
您無法在執行合併時匯出資料。
如果您使用邏輯清除區域作業從區域清除資料,這樣會對清除的儲存格產生零值,您可以選擇在合併作業期間移除零值儲存格。
若要執行合併作業,請使用含有合併文法的 alter database MaxL 敘述句。
例如,若要將所有增量資料切片合併至主切片,請使用此陳述式:
alter database ASOsamp.Basic
merge all data;若要將所有增量資料切片合併至主切片並移除零值儲存格,請使用此陳述式:
alter database ASOsamp.Basic
merge all data remove_zero_cells;若要將所有增量資料切片合併至單一資料切片,請使用此陳述式:
alter database ASOsamp.Basic
merge incremental data;附註:
在複製聚總儲存應用程式之前,您必須將所有增量資料切片合併至主要切片。不會複製未合併增量資料切片中的資料。
相關連結
使用增量資料切片內容取代資料
對於足以完全重新載入且維持低資料延遲的聚總儲存 (ASO) 資料集, Essbase 可以移除聚總儲存立方體的目前內容,並以指定資料載入緩衝區的內容取代立方體。
原子取代功能會將查詢立方體的舊內容轉換成新內容,而不會中斷服務。系統會聚總新載入的資料集,以建立已取代資料集的相同檢視集。
Essbase 也允許以原子方式取代立方體中所有增量資料切片的內容。考慮在某種情況下,您可以將資料分隔成相對較大的靜態資料集,這些資料集永遠不會更新,且相對較小的波動資料集會難以識別個別更新,但會受限於揮發性資料集。例如,大型靜態資料集是由過去三年的歷史交易資料所組成;不過,對於過去兩個月的交易資料,使用者可以在來源資料庫中變更交易的特性。追蹤這些變更可能會過於複雜。您可以將靜態資料集載入為立方體中的主要片段,並將變動資料集載入為一或多個增量片段。
When committing slices during ASO incremental data load, Essbase removes the current contents of all incremental data slices and creates a new slice (using the add values grammar in the buffer commit specification of the import database MaxL statement) with the contents of a specified data load buffer. 新載入的資料集會根據主切片上存在的一組檢視來增強聚總檢視。
附註:
若要使用覆寫文法,請使用 ignore_missing_values 特性建立資料載入緩衝以獲得最佳效能。此外,您必須確保靜態與動態資料集之間沒有任何衝突 (例如,相同儲存格的每個資料集都不應該有值)。
若要取代立方體中資料庫或增量資料切片的內容,請使用 override 文法來 import database MaxL 敘述句。
例如,若要取代立方體的內容,請使用此敘述句:
import database ASOsamp.Basic data
from load_buffer with buffer_id 1
override all data;若要以新磁碟片段取代所有增量資料磁碟片段的內容,請使用此陳述式:
import database ASOsamp.Basic data
from load_buffer with buffer_id 1
override incremental data;附註:
如果覆寫取代失敗, Essbase 會繼續為舊的資料集提供服務。
在智慧型檢視中,提交命令等同於使用含置換文法的增量資料載入功能。
執行傳送作業時,新的鎖定、解除鎖定和擷取和鎖定要求將等到傳送作業完成。
請參閱:匯入資料 (彙總儲存)
檢視增量資料切片統計資料
Essbase 提供有關增量彙總儲存 (ASO) 資料切片大小和數量的統計資料,以及查詢增量資料切片的成本。
查詢存取所有增量資料片段所需的時間會以百分比表示 (包括 .01 和 1.0)。如果立方結構有主要切片和多個增量資料切片,查詢統計資料 0.66 表示查詢時間的三分之二是用於查詢增量資料切片,而三分之一是用於查詢主要資料切片。如果查詢增量資料切片的成本太高,您可以合併切片。
若要檢視磁碟片段的相關資訊,請在 query database MaxL 敘述句中使用 list aggregate_storage slice_info 文法。範例:
query database ASOsamp.Basic list aggregate_storage slice_info;
重新製作聚總儲存資料載入中的成員
即使指定的成員組合遺漏或無效的成員,Renegade 成員仍可繼續執行 Essbase 彙總儲存 (ASO) 資料載入。
當資料載入遇到遺失或無效的成員時,資料載入會繼續進行,其中缺少或無效成員的資料值會儲存在維度中標記為重製成員的成員之下。如果維度中未設定重製成員,則記錄會被拒絕。如果已有重製成員的資料存在,則行為取決於您選取新增值或在建立資料載入規則檔案時覆寫值。
每個維度只能有一個被指派為重製成員的成員,而且重製成員必須為層級 0 成員。
下列資料載入檔案包含名為 SC 的成員:
Product Measures *Data*
NY, Sales 100
SA, Sales 200
SC, Sales 300 在下列大綱中,沒有名為 SC 的成員;但是,名為 SA 的成員被設定為 Products 維度中的重製成員:
Products (+)
NY (+)
SA (+)
Measures (+)
Sales (+)
COGS (+)
在資料載入期間,成員組合 SC 與 Sales 的資料值 (300) 會載入重新套用成員 SA 與 Sales。
在下列資料載入檔案中,SC 與 Sales 有兩筆記錄,每筆記錄各有不同的值:
Product Measures *Data*
NY, Sales 100
SA, Sales 200
SC, Sales 250
SC, Sales 300 SC 與 Sales (250 與 300) 的值都會載入服務協議與 Sales。如果您選取新增值,儲存格中的值為 550 (250 + 300)。如果您選取覆寫值,則儲存格中的值是最後一個載入的值;在此例中為 300。
下列範例說明使用下列資料載入檔案進行重製成員的行為:
Months Transaction Type Customer Product Price
Jan, Sale, Discard1, Product1 300
Jan, Sale, Discard1, Discard2 300
Jan, Sale, Customer1, Discard2 300大綱中沒有 Discard1 和 Discard2。
-
範例 1:
如果 Customer 維度具有標記為重製的 Customer1 成員,而其他維度沒有重製成員,則只有第一筆記錄會載入下列交集:
Jan Sale Customer1(Ren) Product1 300其他兩筆記錄被拒絕,因為 Product 維度沒有重製成員。拒絕的記錄會記錄在重新套用成員日誌檔中。
-
範例 2:
如果 Product 維度具有標記為「重製」的 Product1 成員,而其他維度沒有重製成員,則只有最後一筆記錄會載入下列交集:
Jan Sale Customer1 Product1(Ren) 300其他兩筆記錄被拒絕,因為 Customer 維度沒有重製成員。拒絕的記錄會記錄在重新套用成員日誌檔中。
-
範例 3:
如果 Customer 維度和 Product 維度都具有重製成員 (Customer1 和 Product1),則所有記錄都會載入下列交集:
Jan Sale Customer1(Ren) Product1(Ren) 900 (or 300 if overwrite is enabled)
範例 4:
例如 4,Customer 維度的 RenMember1 標記為重製,且 Product 維度的 RenMember2 標記為重製。使用下列資料載入檔案,會載入所有記錄,因為 Customer 與 Product 維度都具有重製成員。
Customer1 和 Product1 不是再製成員。大綱中沒有 "Discard1" 和 "Discard2" 。
資料載入檔:
Months Transaction Type Customer Product *Data*
Jan, Sale, Discard1, Product1 300
Jan, Sale, Discard1, Discard2 300
Jan, Sale, Customer1, Discard2 300針對捨棄成員在資料載入檔案中指定的值,會改為自動載入指定的重製成員:
已載入資料:
Months Measures Customer Product Price
Jan Sale RenMember1(ren) ProductR 300
Jan Sale RenMember1(ren) RenMember2(ren) 300
Jan Sale CustomerR RenMember2(ren) 300預設不會啟用重新套用成員的記錄。若要啟用記錄日誌,請使用 RENEGADELOG 組態設定,當設為 TRUE 時,即可將載入已重製成員交集的成員記錄日誌。
附註:
可以在計算和報表指令碼中參考重製成員。表格式資料載入或試算表更新作業不支援重製成員。
聚總儲存資料載入的來源資料差異
在處理來源資料中的記錄以準備將值載入彙總儲存 (ASO) 立方體時, Essbase 只會處理層級 0 維度交集 (其中成員沒有公式) 的記錄。
下列範例顯示僅有層級 0 交集記錄的資料來源。最後一個欄位包含資料值,而其他欄位則是其個別維度的層級 0 成員。
Jan, Curr Year, Digital Cameras, CO, Original Price, 10784
Jan, Prev Year, Camcorders, CO, Original Price, 13573Essbase 會忽略指定上層成員的記錄,且在資料載入結束時,會顯示略過的記錄數目。
例如,會略過下列記錄,因為成員 Mid West 是層級 1 成員:
Jan, Curr Year, Digital Cameras, Mid West, Original Price, 121301排序資料是不必要的,因為 Essbase 會在將值確認至立方體之前,在內部讀取並排序記錄。