我有一个过去用来报告事件计数的多维数据集。假设在 7 月份,我想分解每种产品发生的事件数量。
我会有这样的事情:
SELECT Measures.[Count] ON COLUMNS,
Product.[Product Id].Members ON ROWS
FROM [MyCube]
WHERE [Time].[Month].[July 2012]
输出如下:
Count
Car 5
Train 6
现在我想修改输出以获得如下内容:
Count Avg Days since sale
Car 5 12
Train 6 14
我怎么做?
我花了几个小时试图在 MDX 中找到解决方案,但找不到解决方法。(我对 MDX 很陌生)
如果我在 COLUMNS 或 ROWS 中包含天数,我已经找到了几种可行的解决方案。例如:
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
is [Time].[Date].All
,我就无法从中进行任何有意义的计算。
有没有办法将第二个 MDX 用作子查询,并以我需要的方式汇总它返回的值?
我的解决方案不需要子查询方法,但我很好奇是否可以这样做。任何帮助,将不胜感激。提前致谢。