SSAS/MDX 多个时间段的平均值

SSAS/MDX averages over multiple time periods

如何在 SSAS/MDX 查询的同一结果行中获取多个时间范围的平均值?

要求已更改,我作为基于事务数据库的 SSRS/SQL 过程编写的报告现在已移至具有 SSAS 多维数据集的数据仓库。 SSAS 对我来说是新领域。在快速意识到拖放方法无法满足我的需求后,我花了几天时间尝试通过 MDX 工作。

场景:记录大型系统中软件的关键部分和进程的性能时间(具体持续时间以毫秒为单位)。该报告的想法是根据历史优先顺序显示表现最差的人,着眼于在用户说 "the system is running slow".

时发现有问题的区域

报告栏目:

简化的多维数据集 - 尝试遵循 MS 文章中的建议

我得到了以下结果,然后开始使用 AVG() 函数但收效甚微。

WITH MEMBER [Measures].[Duration MS Avg] AS [Measures].[Duration Ms]/[Measures].[Activities Count]
SELECT
                     { [Measures].[Duration Ms], [Measures].[Activities Count], [Measures].[Duration MS Avg] } ON COLUMNS, 
                     { ([Functions].[Function Desc].[Function Desc].ALLMEMBERS )} ON ROWS 
FROM ( SELECT ( {[Dates].[Date Date].&[2016-05-24T00:00:00]} ) ON COLUMNS 
FROM [DW]) 
WHERE ( [Dates].[Date Date].&[2016-05-24T00:00:00] )

这种类型的查询是否可行?我在滥用 SSAS 吗?

随着时间层次结构的出现,"travel" 沿着日期变得更加困难。

但是这里有一个简单的例子,你想要作为例子的 2 个措施。

WITH 
MEMBER [Measures].[Duration MS Avg] 
AS 
DIVIDE(
    [Measures].[Duration Ms]
    ,[Measures].[Activities Count]
)
MEMBER [Measures].[Duration MS Avg Over Last Day]
AS
DIVIDE(
    (
        [Dates].[Date Date].CURRENTMEMBER.LAG(1)
        ,[Measures].[Duration Ms]
    )
    ,(
        [Dates].[Date Date].CURRENTMEMBER.LAG(1)
        ,[Measures].[Activities Count]
    )
)
MEMBER [Measures].[Duration MS Avg Over Last Week]--Last 7 days
AS
DIVIDE(
    AGGREGATE(
        [Dates].[Date Date].CURRENTMEMBER.LAG(7):[Dates].[Date Date].CURRENTMEMBER
        ,[Measures].[Duration Ms]
    )
    ,AGGREGATE(
        [Dates].[Date Date].CURRENTMEMBER.LAG(7):[Dates].[Date Date].CURRENTMEMBER
        ,[Measures].[Activities Count]
    )
)
SELECT
{ 
    [Measures].[Duration Ms], 
    [Measures].[Activities Count], 
    [Measures].[Duration MS Avg],
    [Measures].[Duration MS Avg Over Last Week]
} ON COLUMNS, 
{ 
    (
        [Functions].[Function Desc].[Function Desc].ALLMEMBERS 
    )
} ON ROWS 
FROM ( 
    SELECT 
        ( {[Dates].[Date Date].&[2016-05-24T00:00:00]} ) ON COLUMNS 
    FROM [DW]
) 
WHERE 
    ( [Dates].[Date Date].&[2016-05-24T00:00:00] )