6

我有一个 SSAS 2008 多维数据集,用于存放股票市场的日终财务数据。该多维数据集仅在市场收盘后每天处理一次,因此它永远不会包含有关当前日内交易数据的任何信息。我还有一个关系数据库,其中包含股票当前的日内交易信息。我正在尝试找到一种方法来组合这两个数据源,以便我可以执行计算,例如基于当前价格的股票的 30 天移动平均线以及前 29 天的历史数据。我使用的是 SSAS 标准版,因此我无法访问诸如主动缓存或多个分区等功能来帮助我近乎实时地处理当前数据。

对于单个查询的上下文,有什么方法可以以某种方式动态地将我的 SQL 数据库中的行包含到我的事实表中?本质上只是暂时将一小部分数据引入多维数据集以处理某个计算?

4

4 回答 4

1

不,您应该创建一个映射到您的 OLTP 表的度量值组

于 2012-10-16T14:17:43.443 回答
0

您应该能够为当天的数据创建分区并将 ROLAP 指定为存储模式。

为了简化维护,我可能会为事实表创建一个视图,并在定义中在 where 子句中使用日期函数。就像是:

CREATE VIEW CurrentTrades AS

SELECT * FROM factTrades 
    WHERE TradingDate BETWEEN DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) AND DATEADD(dd, 1, DATEDIFF(dd, 0, GETDATE()))

然后,您可以将该视图用作 ROLAP 分区的数据源。

于 2012-10-15T15:41:42.913 回答
0

您可以在一天中的特定时间间隔内增量处理多维数据集的数据,具体取决于处理新数据所需的时间。(当然如果延迟是可以接受的)

于 2012-10-16T18:32:23.037 回答
0

可以编写自己的 DLL 并从 MDX 中调用它。这不是非常优雅,但我过​​去做过。

对于 1000 行数据来说不是一个好主意,但如果您需要少于 100 行,您的函数调用可以将一个值从 MDX 传递给 DLL,后者可以调用 SQL 数据库以返回数字。然后,您的结果将与来自 OLAP 的数字一起显示在单元集中。

于 2012-10-18T13:56:02.390 回答