2014-10-10 24 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

相关问题