如何将业务逻辑编程到OLAP多维数据集



我们正在寻求从关系数据库构建OLAP多维数据集。但是数据库只包含原始数据。"领域逻辑",如计算、条件逻辑和自定义聚合(即,对满足这些条件的所有行求和,而不存在其他行,诸如此类)都包含在。net代码中。我希望该代码生成的值包含在多维数据集中。

问题1:您建议在多维数据集中包含哪种体系结构的域逻辑?我宁愿不……

  • 将此逻辑编码到源数据库中的视图、存储进程或udf中。
  • 将域逻辑作为计算成员包含到OLAP多维数据集

在。net代码中保持我的业务逻辑使其易于维护、扩展和测试。

问题2:这是一个好的架构吗?

  • 创建辅助OLTP数据库作为数据仓库。
  • 然后创建一个自定义ETL进程从源系统中提取数据,进行计算,并将该信息写回DW数据库,
  • 让多维数据集处理DW数据库

我想说这要看情况。通常,如果您可以避免构建任何MDX计算,而只是使用第二个问题中的选项,那么您将最终得到一个快速立方体。然而,MDX通常被使用,因为业务计算比在。net或SQL中更容易完成。

一般来说,有些计算在。net或SQL中更好,而另一些则比在MDX中更好。特别是,处理细节级数据的低粒度计算通常在进入立方体之前完成得更快,而其他计算,特别是处理聚合的计算,在SSAS中更快更容易。

说了这么多,如果你已经实现了这一切,你可以很容易地使用你所拥有的,我不建议在SSAS中复制业务逻辑,即使它在聚合上工作,除非你遇到特定的问题。如果这一切都工作得很好,你只需要一个OLAP层,那么在SSAS中使用你的计算结果并没有什么错——这可以而且会加快多维数据集的速度,因为在运行时不会进行计算。

我认为你在第二季度所述的方法是一个良好的开端。假设您的业务逻辑位于访问原始数据的应用程序中——将该逻辑公开为服务/api, ETL可以使用这些服务/api提取数据——动态地进行相关计算。

最新更新