在MDX查询中组合关系数据和OLAP数据



我有一个SSAS 2008多维数据集,用于存储股市的当日财务数据。该多维数据集每天只在收盘后处理一次,因此它从来没有任何关于当前盘中交易数据的信息。我还有一个关系数据库,里面有当前股票的日内交易信息。我正试图找到一种方法来组合这两个数据源,这样我就可以进行计算,比如基于当前价格的股票的30天移动平均线,以及之前29天的历史数据。我使用的是SSAS标准版,所以我无法访问主动缓存或多个分区等功能来帮助我近乎实时地处理当前数据。

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

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

您应该能够为当前日期数据创建一个分区,并将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分区的数据源。

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

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

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

最新更新