Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting mdx查询中的动态排序始终基于上个月_Sorting_Filter_Mdx - Fatal编程技术网

Sorting mdx查询中的动态排序始终基于上个月

Sorting mdx查询中的动态排序始终基于上个月,sorting,filter,mdx,Sorting,Filter,Mdx,我正在处理另一个MDX问题,这次我找不到该问题的解决方案: 我需要根据上个月的情况对一些结果进行排序,但我不知道最后一个月是哪一个月。这取决于查询 SELECT {[Measures].[MQ]} ON COLUMNS, ORDER( FILTER( [dim_ProductModel].[Product Model].&[DSDC] * [dim_SpareParts].[Sp

我正在处理另一个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)获取上个月的数据,但是,在我的order子句中不允许使用它。他的意思是我应该给他提供一个字符串/文字表达式,而不是元组表达式,不过,带1作为2.parameter的TAIL只给我一个结果

有没有办法把这个元组表达式转换成字符串表达式? 或任何其他选项如何按最后日期排序

如果我使用.lastchild,这对我没有帮助,因为lastchild不是我需要的最后一个非空月份。(非空(.lastchild)也不工作)

非常感谢您的帮助

如您所见,
Tail
返回一个集合。可以使用函数从集合中获取元组,并使用函数从元组中获取成员。然后,可以在过滤器定义的元组中使用此选项

因此,您要使用的表达式是

Tail([Dim_Date].[Date Full].children, 1).Item(0).Item(0)
或者,甚至更好(见)


首先感谢您(像往常一样)结构良好的回答。现在,排序工作几乎正常。只要我在打开过滤器后立即删除[dim_ProductModel].[Product Model].&[DSDC]属性,它就可以工作。否则按字母顺序排序。奇怪的行为,如果我在排序中使用“硬编码”日期成员([Dim_date]。[date Full]。&[2013-12-01]),那么它也适用于属性。我将进一步检查它Peter 10分钟前有趣的是,如果我删除[dim_ProductModel].[Product Model].&[DSDC]并在查询结束时将其放入新的WHERE条件,排序也不起作用。不……当我想为产品模型添加过滤器时,它根本不起作用,但是没有产品模型过滤器,它就可以正常工作。这种行为有什么解释吗?例如,当我将产品模型添加到WHERE或筛选表达式TAIL([Dim_Date].[Date Full].children,1)时,在应用order by后进行计算?也许您应该在
order
中用
BDESC
替换
(请参见)?不幸的是,这也没有帮助。难道我不能提前计算最后一个月,将其存储到一个变量中,然后在排序部分使用该变量吗?
Tail([Dim_Date].[Date Full].Members, 1).Item(0).Item(0)