具有时间序列的 SSAS MDX 中值

SSAS MDX Median with time series

我正在尝试计算时间序列监控数据的中位数。

OLAP 多维数据集有一个日期维度(最低级别是日期)和一个单独的时间维度。 (最低级别为分钟)

我发现它可以正确计算给定日期,但它会累计该月的值。 (一个月应该是 ~1.55)

WITH MEMBER [Measures].[Medianx] AS MEDIAN([Time].[Time Key].MEMBERS , [Measures].[Total of Values])      

SELECT NON EMPTY {
[Measures].[Count of Values], 
[Measures].[Minimum Value], 
[Measures].[Maximum Value], 
[Measures].[Total of Values], 
[Measures].[Medianx]
} ON COLUMNS,  

NON EMPTY ( [Date].[Date].[Date].MEMBERS )  ON ROWS 

FROM [Environmental Data]

给出这个:

当月的中位数不能高于 5 天的中位数。

如何让 OLAP 在汇总时选择的时间范围内正确计算中位数? (例如按日年)

会不会是日期和时间维度不同造成的?

编辑:我发现如果我只是一个退化维度 wihc 与事实有 1:1 关系。它可以正确计算月份,但速度非常慢。 (1429行数据2分30秒)

WITH MEMBER [Measures].[Medianx] AS MEDIAN([Data Attributes].[DETL Key].MEMBERS, [Measures].[Total of Values])

但是,如果我尝试按天查询分组,它永远不会完成查询。

我发现我可以使用 DESCENDANTS 函数向下钻取日期和时间维度以获得平均聚合,粒度为每天 1 分钟。

MEDIAN(NonEmptyCrossJoin(DESCENDANTS([Date].[Calendar Date].CurrentMember, , LEAVES), DESCENDANTS([Time].[Time Key].CurrentMember, , LEAVES)), [Measures].[Average Value])

测试发现,考虑到数据的性质,每分钟的平均值给出了可靠的中位数。因为它是根据聚合而不是原始数据计算的,所以运行速度非常快。

我不太明白为什么,但它现在可以正确计算日、月和年。

警告:如果我 select 一个月的 5 天,我将获得每一天的正确中位数,并且我将获得 整个 月的正确中位数. (而不是 5 天 selected 的中位数)。