SSAS中的自定义ROLAP数据源

时间:2020-03-06 14:43:28  来源:igfitidea点击:

我正在尝试从一堆二进制文件构建OLAP数据源,而我们当前的模型却无法正常工作。我们将SSAS用作结果的分析/报告模型,但无法从SQL中获得我们想要的性能。

我们的主要约束是:

  • 该数据库非常大。我们有具有数百万行的巨大维表和几个较小的事实表(<1,000,000行)。
  • 我们有一个动态的多维数据集。 B / C事实表是动态构建的,并且经常(可能每天多次)构建多维数据集不会有太大的开销。多维数据集上的当前部署时间可能超过24小时,我们需要将性能提高几个数量级,而硬件是无法给我们带来这些性能的。

基本上,我们想要快速的设置和部署,这本身并不适合使用SQL Server 2005进行SSAS,但是我们希望使用SSRS进行报告,并且希望使用OLAP模型在Excel中进行分析,因此我们仍然希望如果可能,请使用SSAS来构建多维数据集。

SSAS中用于快速部署的常见解决方案是ROLAP,但是我们在大型ROLAP查询中遇到执行错误,而且我们也不喜欢将二进制数据转换为SQL并将其加载到多维数据集所涉及的所有开销。

是否有人在SSAS可以使用的自定义OLAP数据源上完成工作?我们正在寻求创建自己的ROLAP引擎,该引擎将直接查询二进制源文件。

解决方案

如果我们需要一个低延迟的多维数据集(即一个显示最新数据的多维数据集),那么用于此类事务的规范架构就是:

  • 增量加载事实表,其中包含来自源的更改后的数据。
  • 使用每天或者在其他合适的时间生成新分区的进程来构建分区多维数据集。该多维数据集具有在ROLAP模式下设置的最新分区,而较旧的分区则作为MOLAP构建。
  • 设置一个更新分区并将旧分区从ROLAP更改为MOLAP的过程,因为它会生成新的前沿分区。

针对多维数据集的查询将针对相对较小的ROLAP分区获取最新数据,并针对MOLAP分区获取历史数据。 MOLAP分区可以具有聚合。该过程不断在最前沿的ROLAP分区上打勾,并转换其前身。 AS将保留较旧的分区并使用它,直到建立了替换分区并上线为止。

如果这种类型的体系结构适合要求,则可以考虑采用这种方式。

谢谢回应,奈杰尔。

我想我需要更好地解释一下。我的源数据采用专有格式,而不是数据库,因此访问事实表本身需要花费大量时间。然后,我们需要尽快(最好在几分钟之内)部署多维数据集,并具有快速的查询响应,即使在使用SQL的小型数据集上,我们目前也看不到这一点。

由于多维数据集的结构是动态的,因此我们经常必须重建多维数据集的各个方面,因此,事实发生后我们就不会引入新数据,因此将其部分划分为MOLAP和ROLAP的其他部分并没有真正的帮助。我们正在寻找"处理满"的性能。

我们开始意识到我们无法使用SQL进行查询,并且想知道是否有人创建了一个自定义的ROLAP数据源,分析服务(或者任何OLAP工具)可以读取该数据源。

我们可以快速创建结果集。我们只需要弄清楚如何从SSAS获取查询并将其反馈给这些结果。实际上,我们只是想将SSAS用作我们的系统与Excel,SSRS等之间的中介,而不是使用它来处理或者汇总数据。

我们能否将R之类的东西与自制程序库一起使用(它支持C扩展)来连接数据集。 R将为我们提供构建复杂报表或者数据预处理库的相当大的灵活性。它还具有Excel的界面。

这与传统的DB / OLAP模型有些不同,但是我们可以相当轻松地用C编写快速的数据集加载器,而跳过加载到数据库中的中间步骤。

我还没有运气。我们将选择或者构建自己的数据提供程序,或者构建excel插件来模拟olap行为,或者使用CLR表值函数来模仿我们的数据源并从中构建多维数据集。尽管由于在构建多维数据集时SSAS运行的查询数量众多,但我对CLR东西所做的一次尝试却具有可怕的性能,并且崩溃了。我正在等待在SQL 08环境中获得更新更快的计算机,以查看这是否可行。祝你好运,斯科特。