MDX按月排序
我正在尝试整理我的第一个查询,以获得MDX按月排序,mdx,pentaho,Mdx,Pentaho,我正在尝试整理我的第一个查询,以获得pentahoCDE仪表板图表 开始查询 WITH SET [~COLUMNS] AS {[DimProgram.Name].[Name].MEMBERS} SET [~ROWS] AS {[DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS} SELECT NON EMPTY CrossJoin ( [~COLUMNS]
pentaho
CDE仪表板图表
开始查询
WITH
SET [~COLUMNS] AS
{[DimProgram.Name].[Name].MEMBERS}
SET [~ROWS] AS
{[DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS}
SELECT
NON EMPTY
CrossJoin
(
[~COLUMNS]
,{[Measures].[SubmissionCount]}
) ON COLUMNS
,NON EMPTY
[~ROWS] ON ROWS
FROM [PSE_FactSubmission];
此查询返回我想要的数据,但需要稍微调整以准备实际使用。我想按日期降序排序,并且只限于过去12个月
我已经阅读了一些关于MDX排序的网页,但是还没有能够组合出一个可以运行的查询。当查询没有运行时,只会出现“错误”提示
订购尝试
WITH
SET [~COLUMNS] AS
{[DimProgram.Name].[Name].MEMBERS}
SELECT
NON EMPTY
CrossJoin
(
[~COLUMNS]
,{[Measures].[SubmissionCount]}
) ON COLUMNS
,NON EMPTY
Order
(
[DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS
,[DimTime.CalendarYearMonth].CurrentMember.Member_Key
,DESC
) ON ROWS
FROM [PSE_FactSubmission];
任何关于分类或如何限制到过去X个月的提示都将不胜感激 通常,在多维数据集设计中,日期/时间维度是自然排序的,因此无需使用
顺序
。我不需要用我使用的立方体
如果它在多维数据集中的顺序奇怪,则需要使用BASC
或BDESC
打破(B
)这种层次顺序:
WITH
SET [~COLUMNS] AS
{[DimProgram.Name].[Name].MEMBERS}
MEMBER [Measures].[orderMeas] AS
[DimTime.CalendarYearMonth].CurrentMember.Member_Key
SET [~ROWS] AS
Order
(
[DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS
,[Measures].[orderMeas]
,BASC
)
SELECT
NON EMPTY
CrossJoin
(
[~COLUMNS]
,{[Measures].[SubmissionCount]}
) ON COLUMNS
,NON EMPTY
[~ROWS] ON ROWS
FROM [PSE_FactSubmission];
要获取最近12个月的数据,您可以使用Tail
函数-最好针对非空月使用它:
WITH
SET [~COLUMNS] AS
{[DimProgram.Name].[Name].MEMBERS}
MEMBER [Measures].[orderMeas] AS
[DimTime.CalendarYearMonth].CurrentMember.Member_Key
SET [~ROWS] AS
Order
(
NonEmpty
(
[DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS
,[Measures].[SubmissionCount]
)
,[Measures].[orderMeas]
,BASC
)
SELECT
NON EMPTY
CrossJoin
(
[~COLUMNS]
,{[Measures].[SubmissionCount]}
) ON COLUMNS
,NON EMPTY
Tail
(
[~ROWS]
,12
) ON ROWS
FROM [PSE_FactSubmission];
嗨,安德鲁-对抗AdvWrks
我已经运行了以下内容,没有任何错误。我需要将Member\u键
更改为MemberValue
:
WITH
SET [~COLUMNS] AS
[Product].[Product Categories].[Product]
MEMBER [Measures].[orderMeas] AS
[Date].[Calendar].CurrentMember.MemberValue
SET [~ROWS] AS
Order
(
NonEmpty
(
[Date].[Calendar].[Month].MEMBERS
,[Measures].[Internet Sales Amount]
)
,[Measures].[orderMeas]
,ASC
)
SELECT
NON EMPTY
CrossJoin
(
[~COLUMNS]
,{[Measures].[Internet Sales Amount]}
) ON COLUMNS
,NON EMPTY
Tail
(
[~ROWS]
,12
) ON ROWS
FROM [Adventure Works];
谢谢你的回答。查看订单查询,读取代码本身是有意义的,但当输入时不会运行。您是否有最喜欢的工具用于编写/测试此类查询?我想我应该返回某种至少是半有用的错误消息,以帮助查看我的错误所在。只是
SSMS
应该生成错误消息吗?我使用MDX Studio(它是免费的)来玩MDX。让我针对AdvWrks cube创建一个原型,就像您的脚本一样,只是为了检查我的答案的结构。看起来大多数人都在使用analysis services&大多数工具都是针对这一点的。@AndrewAlters这是最好的工具,它是免费的,由mdx语言的创始人之一创建的: