如何将业务逻辑编程到 OLAP Cube 中?

Posted

技术标签:

【中文标题】如何将业务逻辑编程到 OLAP Cube 中?【英文标题】:How to Program Business Logic into an OLAP Cube? 【发布时间】:2011-07-15 21:54:26 【问题描述】:

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

问题 1:您推荐哪种架构在多维数据集中包含域逻辑?我宁愿不...

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

将我的业务逻辑保留在 .NET 代码中,便于维护、扩展和测试。

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于如何将业务逻辑编程到 OLAP Cube 中?的主要内容,如果未能解决你的问题,请参考以下文章

OLTP与OLAP

如何从 groupby OLAP Cube 中删除小计?

面向切面编程 AOP 和装饰器??

Kylin系列-使用Saiku+Kylin构建多维分析OLAP平台

如何从 Mondrian OlapConnection 获取 org.olap4j.metadata.Cube

业务逻辑和规则——如何将它们与领域模型解耦