我知道如何将数据库中的最大日期设置为正常查询中的默认参数。在新数据集中我写了这个:
ISNULL(MAX(C0_TIME), DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)) AS END
并在默认参数设置中使用它。
但是如何通过使用 MDX 来获得相同的效果呢?我应该使用/写什么?
感谢帮助 ;)
我知道如何将数据库中的最大日期设置为正常查询中的默认参数。在新数据集中我写了这个:
ISNULL(MAX(C0_TIME), DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)) AS END
并在默认参数设置中使用它。
但是如何通过使用 MDX 来获得相同的效果呢?我应该使用/写什么?
感谢帮助 ;)
Tail([Czas].[Czas].Members).Item(0).Item(0)
应该给你最后一个月,因为它是你Czas
层次结构的最后一个成员。Tail
返回包含集合元组的子集,第一个Item(0)
返回第一个也是唯一的元组,第二个返回第一个也是唯一的成员。
[Czas].[Czas].[Rok].Members
如果您想拥有最后一年,只需使用Rok
级别更改您从中获取尾部的集合,例如更改为。
要获取多维数据集最后一年内的所有月份,您可以使用范围运算符:
withnull
作为第二个元素,这意味着“到同一级别的末尾”:
Tail([Czas].[Czas].[Rok].Members).Item(0).Item(0).FirstChild().FirstChild() : null
将返回去年 ( Rok
) 中的所有月份。当然,您也可以显式声明最终成员:
Tail([Czas].[Czas].[Rok].Members).Item(0).Item(0).FirstChild().FirstChild() : Tail([Czas].[Czas].Members).Item(0).Item(0)
我在@FrankPl 的帮助下找到了这个解决方案。
在我在 QueryDesigner 中编写的新数据集中:
WITH MEMBER [Measures].[ParameterValue] AS Tail([Czas].[Czas].Members).Item(0).Item(0).UNIQUENAME SELECT {[Measures].[ParameterValue]} ON COLUMNS , [Czas].[Czas].LastChild ON ROWS FROM [PM01]
.
然后我得到了一行,ParameterValue
它在多维数据集中给了我去年、季度和月份的名称。我Default Value
在与另一个数据集连接的 EndData 参数中使用它。这个数据集返回了我用来做报告的适当措施。