Ssas 我如何执行一个“任务”;事件发生后的平均天数“;mdx中的类型查询?

Ssas 我如何执行一个“任务”;事件发生后的平均天数“;mdx中的类型查询?,ssas,mdx,moving-average,weighted-average,Ssas,Mdx,Moving Average,Weighted Average,我有一个立方体,我过去用它来报告事件计数。假设在7月份,我想对每种产品发生的事件数量进行细分 我想要这样的: SELECT Measures.[Count] ON COLUMNS, Product.[Product Id].Members ON ROWS FROM [MyCube] WHERE [Time].[Month].[July 2012] Count Avg Days since sale Car 5 12 Train 6

我有一个立方体,我过去用它来报告事件计数。假设在7月份,我想对每种产品发生的事件数量进行细分

我想要这样的:

SELECT Measures.[Count] ON COLUMNS,
    Product.[Product Id].Members ON ROWS
FROM [MyCube]
WHERE [Time].[Month].[July 2012]
        Count   Avg Days since sale
Car     5       12
Train   6       14
输出如下:

        Count
Car     5
Train   6
现在我想修改输出以获得如下内容:

SELECT Measures.[Count] ON COLUMNS,
    Product.[Product Id].Members ON ROWS
FROM [MyCube]
WHERE [Time].[Month].[July 2012]
        Count   Avg Days since sale
Car     5       12
Train   6       14
我该怎么做

我花了几个小时试图在MDX中找到解决方案,但找不到方法。(我对MDX非常陌生)

我已经找到了几种解决方案,如果我在列或行中包含天,它们都会起作用。 例如:

WITH MEMBER Measures.[NumDays] as
    count([Time].[Date].CurrentMember :
        [Time].[Date].&[2012-07-27T00:00:00])
SELECT
    ([Time].[Date].Members,{Measures.[Count],Measures.[NumDays]}) ON COLUMNS,
    [Product].[Product Id].Members ON ROWS
FROM [MyCube]
WHERE [Time].[Month].[July 2012]
这让我非常接近。结果是:

        July 1                July 2                ...
        Count    Num Days     Count    Num Days     ...
Car     1        24           3        23
Train   0        24           1        23
我可以使用这个结果集,在.NET代码中得到我想要的东西。我可以用加权平均法计算销售后的平均天数。
例如,对于汽车,它将是
(1*24+3*23)/(1+3)
。我必须在我的.NET代码中做一些损坏和不幸的事情才能使它正常工作,而且我还必须从服务器返回大约80倍于我需要的数据

我在使用MDX时遇到的问题是,一旦我从结果集中删除
[Time].[Date].Members
[Time].[Date]。CurrentMember
就是
[Time].[Date]。所有的
,我就无法从中进行任何有意义的计算

有没有办法将第二个MDX用作子查询,并按我需要的方式汇总它返回的值

子查询方法对于我的解决方案不是必需的,但我很好奇是否可以做到这一点。任何帮助都将不胜感激。提前感谢。

您可以使用以下功能:

WITH MEMBER [Measures].[NumDays] AS
    Count([Time].[Date].CurrentMember :
        [Time].[Date].&[2012-07-27T00:00:00])
MEMBER [Measures].[avg] AS Sum([Time].[Date].Members, Measures.[Count] * [Measures].[NumDays])/ Sum([Time].[Date].Members, Measures.[Count])
SELECT
    {[Measures].[avg]} ON COLUMNS,
    [Product].[Product Id].Members ON ROWS
FROM [MyCube]
WHERE [Time].[Month].[July 2012]

从第二个查询中删除
[Time].[Date].[Members
时,层次结构上重新设置为
[Time].[Date]
的当前成员是默认成员(即所有成员)。

这不起作用。查询为每个值单元格返回#Error。这似乎是因为您不能对“[Time].[Date].Members”进行求和。如果我将其更改为“Sum([Time].[Date].CurrentMember,…”,并随时间而不是乘积进行聚合,它将返回一个结果(尽管结果不正确)。@MikeVanTil您能允许在
[Time].[Date].Members
上求和吗?