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

时间:2011-07-15 21:54:26

标签: architecture olap ssas cube

我们正在寻求从关系数据库构建OLAP多维数据集。但是数据库只包含原始数据。 “域逻辑”,例如计算,条件逻辑和自定义聚合(即,总结满足这些条件的所有行,而不存在其他行,使得等等等等)都包含在.NET代码中。我希望该代码生成的值包含在多维数据集中。

问题1:您建议在多维数据集中包含域逻辑的哪种架构?我不愿意......

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

保持.NET代码中的业务逻辑易于维护,扩展和测试。

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

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

2 个答案:

答案 0 :(得分:2)

我会说这取决于。通常情况下,如果您可以避免构建任何MDX计算,并且只选择第二个问题的选项,那么最终将使用快速多维数据集。但是,通常使用MDX是因为业务计算比在.NET或SQL中更容易完成。

通常,某些计算在.NET或SQL中会更好,而其他计划则比在MDX中更好。特别是,使用详细级别数据的低粒度计算通常在进入多维数据集之前更快地完成,而其他,尤其是使用聚合的其他计算在SSAS中更快更容易。

说了这么多,如果你已经实现了所有这些,并且你可以轻松地使用你拥有的东西,我就不会建议在SSAS中复制业务逻辑,即使它适用于聚合,除非你遇到特定的问题。如果一切正常并且您只需要一个OLAP层,那么使用SSAS中的计算结果就没有任何问题 - 这可能并且会加速多维数据集,因为在运行时不会完成计算。

答案 1 :(得分:0)

我认为您在Q2中所述的方法是一个良好的开端。假设您的业务逻辑位于访问原始数据的应用程序中 - 将该逻辑公开为ETL可用于提取数据的服务/ API - 即时执行相关计算。