从 OLAP Cube 中的 Measure 中获取值并将其插入 SQL 表中

问题描述

我需要以下方面的帮助:

我有一个 OLAP Cube,我们在“server\instance”上称它为“company_prod”

那个 Cube 有(在许多中)一个名为“[Measures].[Value]”的计算成员

多维数据集中的维度之一是时间(年、月、日等)。例如[TIME].[Y_M_D].[YEAR].&[2020]

我们的主要前端是 Excel,我们在其中使用 CUBEELEMENT、CUBEVALUE 等从 Cube 中检索数据。

不幸的是,我们得到了一些措施,当我现在更新 Excel 报告并显示去年的数字时,如果我在几周或几个月内更新同一份报告,结果就会有所不同。这是我无法更改的,在某些报告中,这是所需的行为,因为来自 SAP 的基础数据已更改,有时valid_from 和valid_to 日期会追溯更改。

现在我想从我的“[Measures].[Value]”中获取某个日期的值,比如 4 月 1 日。然后,我想将 2020 年 4 月 1 日获得的值插入 sql 表中。这应该由执行存储过程或运行 dtsx 包或其他任何工作的代理作业完成。

我希望很清楚我要完成的任务...

解决方法

如果您可以从 SQL Server 到 SSAS Server 创建 linked servers,那么您可以使用 OPENQUERY 针对链接的 SSAS Server 运行 MDX 查询并将结果直接保存到 SQL Server 表中。

INSERT INTO <your table>
EXECUTE <your mdx statement> AT <linked server>

您可以通过 SQL 代理作业按计划添加上述运行。