我正在处理另一个MDX问题,这次我找不到解决这个问题的方法: 我需要根据上个月对某些结果进行排序,但我不知道哪个月是最后一个月。这取决于查询
SELECT
{[Measures].[MQ]} ON COLUMNS,
ORDER(
FILTER(
[dim_ProductModel].[Product Model].&[DSDC]
*
[dim_SpareParts].[Spare Group].children,
([Measures].[MQ]) > 0
),
([Dim_Date].[Date Full].&[2013-12-01],[Measures].[MQ]) ,
desc
)
*
[Dim_Date].[Date Full].children
ON ROWS
FROM
(
SELECT
BOTTOMCOUNT(
{FILTER(
EXCEPT(
[Dim_Date].[Date Full].children,
{[Dim_Date].[Date Full].UNKNOWNMEMBER}
),
([Measures].[MQ]) > 0
)},
7) ON COLUMNS
FROM
[cub_sfr_spare_parts_groups]
WHERE
([dim_ProductModel].[Product Model].&[DSDC])
)
问题是,只有在上个月是2013-12时才能正确排序。否则,如果2013-12不存在,则应用字母排序。
现在,我可以通过使用TAIL([Dim_Date]。[Date Full] .children,1)获得上个月,但是,不允许在我的订单子句中使用它。他的意思是我应该为他提供一个字符串/文字表达而不是一个元组表达式,尽管TAIL用1作为2.parameter只给我一个结果!
有没有办法将这个元组表达式转换为字符串表达式? 或者任何其他选项如何按最后日期排序?
如果我使用.lastchild这不会帮助我,因为最后一个孩子不是我需要的最后一个非空月。 (NONEMPTY(.lastchild)工作不正常)
非常感谢您提供任何帮助,
此致
答案 0 :(得分:0)
正如您所见in the documentation,Tail
会返回一个集合。您可以使用set to tuple version of the Item
函数从集合中获取元组,使用tuple to member version of the Item
函数从元组中获取成员。然后,可以在过滤器定义中的元组中使用它。
因此,您要使用的表达式为
Tail([Dim_Date].[Date Full].children, 1).Item(0).Item(0)
或更好(见this question)
Tail([Dim_Date].[Date Full].Members, 1).Item(0).Item(0)