2

我试图在我的 Cube 或 MDX 语句中创建每日计算,该语句将每天进行计算并汇总到任何维度。我已经能够成功地取回这些值,但是性能并不是我认为的那样。

我的事实表将有 4 个维度,其中 1 是每日日期(时间)。我有一个公式,在这个事实表中使用了 4 个其他度量,这些度量需要每天计算,然后在时间维度上进行几何链接。

下面的 MDX 语句效果很好,并产生了正确的值,但速度很慢。我尝试过使用 exp(sum(log+1))-1 和 multiply 似乎表现更好但不够好。此解决方案是否有另一种方法,或者我的 MDX 语句有问题?

我尝试为 [Calendar_Date] 和 [Dim_Y].[Y ID] 定义聚合,但它似乎没有使用这些聚合。

WITH
   MEMBER Measures.MyCustomCalc AS (
   (
      Measures.x -Measures.y
    ) -
    (
      Measures.z - Measures.j
    )
)
/
Measures.x

MEMBER Measures.LinkedCalc AS ASSP.MULTIPLY(
   [Dim_Date].[Calendar Date].Members,
   Measures.MyCustomCalc + 1
) - 1
SELECT
Measures.LinkedCalc ON Columns,
[Dim_Y].[Y ID].Members ON Rows
FROM
[My DB]

上面的查询需要 7 秒才能运行,记录数如下:

度量:98,160 条记录 Dim_Date:5,479 条记录 Dim_Y:42 条记录

我们假设通过定义一个聚合,我们将执行的计算量仅为 42 * 天数,在本例中最多为 5479 条记录。

任何帮助或建议将不胜感激!

4

0 回答 0