如何逐步处理SSA Cube以加速



我需要的是使用AMO减少SSAS Cube的过程时间,同时将数据添加到数据仓库中的事实表。

根据SSAS上的Microsoft文档:

进程添加

"对于维度,添加了新成员并更新尺寸属性字幕和描述。对于测量组和分区,仅在相关分区中添加新可用的事实数据和过程。"

进程完整

"处理分析服务对象及其包含的所有对象。当对已经处理的对象执行过程时,分析服务将所有数据丢弃在对象中,然后处理对象。当对象对对象进行结构上的更改时,需要进行,例如,添加,删除或重命名属性层次结构时。"

因此,使用以下代码,无论数据仓库中的数据量如何

var start = DateTime.Now;
var query = "SELECT [dbo].[FactGradingResult].* FROM [dbo].[FactGradingResult]  WHERE ([Id] = "+ grading2.Id+")";
ptn.Process(ProcessType.ProcessAdd,
    new QueryBinding(dsv.DataSourceID, query));
var end = ptn.LastProcessed;
swch2 = (end - start).TotalMilliseconds;

但是,流程ADD仍然需要900毫秒来使用单行事实表更新立方体。这是SSAS的典型时间与Windows Server 2012的8核2.5GHz机器的典型时间?如果没有,我该如何改善每行的立方处理时间到事实表?

基于您的澄清,您正在尝试实时刷新立方体,我建议您称重,这对您来说更重要。查询性能更重要吗?然后继续您的工作,因为MOLAP查询性能将比下面的ROLAP建议更好。

但是,如果更重要的是,您将新数据纳入立方体的延迟为零,那么我建议您切换到包括Rolap的某种方法。

要进一步描述ROLAP方法,我建议创建一个Molap分区,其中包含昨天的事实表中的所有数据。然后创建一个设置为StorageMode = rolap的第二个分区,然后将其过滤到今天到达的任何行中。然后,每天晚上,适当地更改分区定义并重新处理第一个分区。确保您的所有尺寸都是molap,因为我假设它们不需要实时更改。(出于绩效原因,我会避免ROLAP维度。)

您可能必须在此处描述的连接字符串上设置"实时OLAP = true"属性。

我相信,使用正确的分区添加过程将为您做到这一点。不是这方面的专家,但是这里有关于如何从SQL星期六开始的演讲。http://www.sqlsaturday.com/sessiondownload.aspx?suid=3708

最新更新