2014-10-10 26 views
1

我有一個SSAS表格模式多維數據集,它使用ODBC從Actian Matrix數據庫中讀取數據。當我使用的數據集項目中的進程罰款1萬行,但是當我嘗試使用一個更大的(300萬行),過程約15分鐘一班,未能與消息:SSAS tabluar模式處理失敗,出現「很多行」

The operation failed because the source database does not exist, the source table does not exist, or because you do not have access to the data source. 

More Details: 

OLE DB or ODBC error: [ParAccel][ODBC Driver][PADB]57014:ERROR: Query (25459) cancelled on user's request 
DETAIL: Query (25459) cancelled on user's request 
; 57014. 

An error occurred while processing the partition 'XXXX' in table 'YYYY'. 

The current operation was cancelled because another operation in the transaction failed. 

消息說數據庫不存在,但它沒有任何意義,因爲它在第一種情況下工作得很好(差異只是限制行數的「where子句」)

I使用一臺運行96 Gb免費服務器的服務器,我可以看到「處理」進程正在運行時所消耗的所有內存。當它被全部消耗時,它運行幾個星期,並失敗。另外,我知道導出爲csv文件的3億行數據集的原始格式爲36 Gb,因此它應該在沒有任何壓縮的情況下適合內存。

我還可以保證查詢在源數據庫上正常工作,因此「在用戶請求上取消查詢(25459)」消息也沒有多大意義。

有沒有人有任何想法可能會發生什麼?

回答

0

無法根據輸入的字節大小估計輸入行的導數(結果立方體)上的內存消耗。它是立方體維度的所有不同值的笛卡爾圖形乘積的函數。

如果您建立超過2個維度2個輸入行和2個測量立方體:

State|City|Population 
--------------------- 
NY|New York|8406000 
CA|Los Angeles|3884000 

State|City|Population|Number of records 
--------------------------------------- 
NULL|NULL|12290000|2 
NY|NULL|8406000|1 
NY|New York|8406000|1 
CA|NULL|3884000|1 
CA|Los Angeles|3884000|1 
NULL|Los Angeles|3884000|1 
NULL|New York|8406000|1 

你不能指望作爲輸入數據行被處理成大小相當於要生成的輸出。如果ODBC驅動程序在讀取內容之前將整個輸入保留在內存中,那麼在多維數據集生成完成之前,您必須考慮輸入和輸出都駐留在內存中。

這個問題在這個問題上更加清晰:How to calculate the likely size of an OLAP cube

相關問題