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

Architecture 如何将业务逻辑编程到OLAP多维数据集中?,architecture,olap,ssas,cube,Architecture,Olap,Ssas,Cube,我们正在寻求从关系数据库构建OLAP多维数据集。但数据库只包含原始数据。“域逻辑”如计算、条件逻辑和自定义聚合(即,将满足这些条件的所有行相加,而不存在任何其他行,因此诸如此类)都包含在.NET代码中。我希望该代码生成的值包含在多维数据集中 问题1:您建议在多维数据集中包含什么样的体系结构?我宁愿不 将此逻辑编码到源数据库中的视图、存储过程或UDF中 将域逻辑作为计算成员包含到OLAP多维数据集中 将我的业务逻辑保存在.NET代码中,使其易于维护、扩展和测试 问题2:这是一个好的架构吗 创

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

问题1:您建议在多维数据集中包含什么样的体系结构?我宁愿不

  • 将此逻辑编码到源数据库中的视图、存储过程或UDF中
  • 将域逻辑作为计算成员包含到OLAP多维数据集中
将我的业务逻辑保存在.NET代码中,使其易于维护、扩展和测试

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

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

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

我认为这取决于具体情况。通常情况下,如果您可以避免构建任何MDX计算,只需使用第二个问题中的选项,您将得到一个快速立方体。但是,通常使用MDX,因为业务计算比.NET或SQL更容易完成

一般来说,有些CALC在.NET或SQL中更好,而另一些则比在MDX中更好。特别是,处理细节级别数据的低粒度计算通常在进入多维数据集之前完成得更快,而其他计算,尤其是处理聚合的计算,在SSA中更快、更容易

话虽如此,如果您已经实现了所有功能,并且可以轻松地使用现有功能,我不会建议在SSAS中复制业务逻辑,即使它可以在聚合上工作,除非您遇到特定问题。如果一切正常,您只需要一个OLAP层,那么在SSAS中使用计算结果并没有什么错——这可以并且将加快多维数据集的速度,因为在运行时不会进行计算