如何使用 MDX 查询应用层次化和排序
Posted
技术标签:
【中文标题】如何使用 MDX 查询应用层次化和排序【英文标题】:How to apply Hierarchize and Order by with MDX Query 【发布时间】:2016-05-05 10:22:26 【问题描述】:我需要按照降序对维度进行排序。不使用 HIERARCHIZE 关键字一切正常。这里我需要 HIERARCHIZE 以便对层次级别数据进行排序。
Select NON EMPTY([Measures].[Internet Sales Amount]) dimension properties MEMBER_TYPE,CHILDREN_CARDINALITY, PARENT_UNIQUE_NAME ON COLUMNS ,NON EMPTY(HIERARCHIZE(ORDER(drilldownlevel([Customer].[Customer Geography]),[Customer].[Customer Geography].CurrentMember.MEMBER_CAPTION,desc))) dimension properties MEMBER_TYPE,CHILDREN_CARDINALITY, PARENT_UNIQUE_NAME ON ROWS
【问题讨论】:
我不明白问题是什么 - 你有一个解决方案:删除层次结构? 请重新格式化代码 - 我以前这样做过:现在无法再次阅读! 您好,请找到随附的屏幕截图。我希望现在它已经清楚了 【参考方案1】:很遗憾,我没有 AdvWrks 多维数据集来测试以下内容:
SELECT
NON EMPTY
[Measures].[Internet Sales Amount] ON 0
,NON EMPTY
ORDER(
HIERARCHIZE([Customer].[Customer Geography].[COUNTRY].MEMBERS)
,[Customer].[Customer Geography].[COUNTRY].&[GERMANY].CHILDREN
,[Customer].[Customer Geography].CurrentMember.MEMBER_CAPTION
,BDESC
)
) ON 1
FROM [Adventure Works];
看起来我在这里有一个类似问题的经过测试的解决方案:Issue with Order function and Crossoins in MDX
看起来将上述内容应用于您的上下文是这样的:
SELECT
NON EMPTY
[Measures].[Internet Sales Amount] ON 0
,NON EMPTY
Order
(
[Customer].[Customer Geography].[COUNTRY].MEMBERS
, [Customer].[Customer Geography].[COUNTRY].&[GERMANY].CHILDREN
,(
[Measures].[Internet Sales Amount]
,[Customer].[Customer Geography].[COUNTRY]
)
,BDESC
)
ON 1
FROM [Adventure Works];
【讨论】:
这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review 感谢您的评论。用这种语言制定一个准确的答案并不总是可能的。目前提问者已经自我回答了,但事实是提问者甚至没有回答他们最初提出的问题! ...请在下面查看我的评论 - 集合[Customer].[Customer Geography].[COUNTRY].MEMBERS
在他们的问题中,但不在他们的答案中。也许@GregGalloway 可能想发表评论 - Greg:您是否同意对于 mdx 问题,准确地向提问者提供他们需要的内容并不总是那么容易,但像我的回答这样的东西通常就足够了?
@JonathanArgentiero 还请注意,在原始问题中,脚本的结构是 ORDER 嵌套在 HIERARCHIZE 中 - 在我的回答中,我正确地交换了嵌套,以便 HIERARCHIZE 在 ORDER ..... 然后看看用户自我回答:在我看来,交换这个订单是很重要的一点,实际上我觉得有点困难,因为用户甚至没有给出我的答案。但总的来说没什么大不了的。
(但即使在说了上述内容之后,我也会检查我的答案,因为这是 AdvWrks 多维数据集,我将能够创建一个准确的答案 - 当我回到可以访问多维数据集的机器上时)【参考方案2】:
解决了以下查询的问题
SELECT
NON EMPTY [Measures].[Internet Sales Amount] ON 0,
NON EMPTY
Order(
Hierarchize(
[Customer].[Customer Geography].[Country].&[Germany].Children
)
,[Customer].[Customer Geography].CurrentMember.MEMBER_CAPTION
,DESC
)
ON 1
FROM [Adventure works];
【讨论】:
这与您在原始问题中要求的脚本不同 - 请您修改它以使其包括加拿大和法国等国家/地区吗? (我已经对其进行了修改以去掉所有多余的大括号)以上是关于如何使用 MDX 查询应用层次化和排序的主要内容,如果未能解决你的问题,请参考以下文章