我们正在寻求从关系数据库构建OLAP多维数据集。但是数据库只包含原始数据。 “域逻辑”,例如计算,条件逻辑和自定义聚合(即,总结满足这些条件的所有行,而不存在其他行,使得等等等等)都包含在.NET代码中。我希望该代码生成的值包含在多维数据集中。
问题1:您建议在多维数据集中包含域逻辑的哪种架构?我不愿意......
保持.NET代码中的业务逻辑易于维护,扩展和测试。
问题2:这是一个很好的架构吗?
答案 0 :(得分:2)
我会说这取决于。通常情况下,如果您可以避免构建任何MDX计算,并且只选择第二个问题的选项,那么最终将使用快速多维数据集。但是,通常使用MDX是因为业务计算比在.NET或SQL中更容易完成。
通常,某些计算在.NET或SQL中会更好,而其他计划则比在MDX中更好。特别是,使用详细级别数据的低粒度计算通常在进入多维数据集之前更快地完成,而其他,尤其是使用聚合的其他计算在SSAS中更快更容易。
说了这么多,如果你已经实现了所有这些,并且你可以轻松地使用你拥有的东西,我就不会建议在SSAS中复制业务逻辑,即使它适用于聚合,除非你遇到特定的问题。如果一切正常并且您只需要一个OLAP层,那么使用SSAS中的计算结果就没有任何问题 - 这可能并且会加速多维数据集,因为在运行时不会完成计算。
答案 1 :(得分:0)
我认为您在Q2中所述的方法是一个良好的开端。假设您的业务逻辑位于访问原始数据的应用程序中 - 将该逻辑公开为ETL可用于提取数据的服务/ API - 即时执行相关计算。