我是 MDX 的新手,需要一些帮助。在 SSRS 中,我有一个从 SSAS 多维数据集中提取的数据集。数据集始终包含六个月的数据。我需要做的是将 max(timeID) 的值与第二个 max(timeID) 的值进行比较,如果 max(timeID) 的值 > 第二个 max(timeID) 的值箭头在指示器中上升,等等...
因此,对于下面的数据集,我将从 20130301 的值为 10 的值中减去 20130201 的值为 8。结果将是一个正数,指标将是一个向上的绿色箭头。如果为 0,则为笔直,如果为负,则箭头为红色并指向下方。我了解如何处理指标 - 这不是问题。这是我需要帮助的 MDX。
20130201 8 20130301 10 20121201 4
我可以用 SQL 编写它,它看起来像这样。
Select Item, case when sum(Time1ContentCount) > sum(Time2ContentCount) then 3 when sum(Time1ContentCount) = sum(Time2ContentCount) then 2 when sum(Time1ContentCount) sum(Time2ContentCount) then 1 end as Indicator, sum(Time1ContentCount) as Time1Count, sum(Time2ContentCount) as Time2Count from (Select timeID, dc.Item, Case when timeID = (Select max(timeID) from FactUsage) then count(fu.Contentid) else 0 END as Time1ContentCount, Case when timeID = (Select max(timeID) from FactUsage where timeID <>(Select max(timeID) from FactUsage)) then count(fu.Contentid) else 0 END as Time2ContentCount from factUsage fu INNER JOIN dimContent dC on dc.ContentID = fu.ContentID WHERE TimeID in (Select distinct top 6 timeid from factUsage order by timeID desc) Group by timeID, Item) a group by Item
非常感谢你的帮助!
编辑:我将指标的语句更改为如下所示。
WITH Member MEASURES.Indicator AS (
IIF(( [Measures].[Activity], [Time].[Time ID].LastChild ) >
( [Measures].[Activity], [Time].[Time ID].LastChild.PrevMember),3,
(IIF(([Measures].[Activity], [Time].[Time ID].LastChild ) =
([Measures].[Activity], [Time].[Time ID].LastChild.PrevMember), 2,1))))
SELECT {Measures.Indicator} on 0
FROM [DW]
当我在 SSMS 中将它作为对多维数据集的查询运行时,它可以工作,但我试图将它放在指示器中,但它不起作用。仅添加 IIF 语句也不起作用。当我尝试将它添加到查询或多维数据集本身时,我可以从那里拉出它并出现内存不足错误。