这个简单的 mdx 查询在 SSMS 中可以工作:
SELECT
CrossJoin({[Measures].[Qnt]},
{[Sales_step].CHILDREN}) ON COLUMNS,
[City] ON ROWS
FROM [SALES_PIPE]
但它无法在 Visual Studio 中运行 rdl 报告。出现错误:
The query cannot be prepared: The query must have at least one axis.
The first axis of the query should not have multiple hierarchies,
nor should it reference any dimension other than the Measures dimension..
Parameter name: mdx (MDXQueryGenerator)
我找到了另一种语法来检索结果,但它的列是硬编码的并且脚本很慢:
WITH
MEMBER [Measures].[Contacts] AS
CASE WHEN [Sales_step].CURRENTMEMBER IS [Sales_step].&[contact]
THEN [Measures].[Qnt] ELSE null END
MEMBER [Measures].[Clients] AS
CASE WHEN [Sales_step].CURRENTMEMBER IS [Sales_step].&[client]
THEN [Measures].[Qnt] ELSE null END
MEMBER [Measures].[Funded] AS
CASE WHEN [Sales_step].CURRENTMEMBER IS [Sales_step].&[funded]
THEN [Measures].[Qnt] ELSE null END
SELECT {[Measures].[Contacts],
[Measures].[Clients],
[Measures].[Funded]} ON COLUMNS,
NON EMPTY
FILTER(crossjoin({[City].CHILDREN},
{[Sales_step].CHILDREN}),
[Measures].[Contacts] > 0 OR
[Measures].[Clients] > 0 OR
[Measures].[Funded] > 0) ON ROWS
FROM [SALES_PIPE]
这部分使它非常慢 - 不是计算成员,它是我必须制作的行上 City 和 Sales_step 维度的交叉联接(否则,仅在行上使用 City 变暗, - 我在列上得到空结果)。有什么建议可以让我的 mdx 更快吗?
最佳答案
这会产生相同的结果吗?是不是更快了?
WITH
MEMBER [Measures].[Contacts] AS
Sum
(
IIF
(
[Sales_step].CurrentMember IS [Sales_step].&[contact],
,[Measures].[Qnt]
,null
)
)
MEMBER [Measures].[Clients] AS
Sum
(
IIF
(
[Sales_step].CurrentMember IS [Sales_step].&[client]
,[Measures].[Qnt]
,null
)
)
MEMBER [Measures].[Funded] AS
Sum
(
IIF
(
[Sales_step].CurrentMember IS [Sales_step].&[funded]
,[Measures].[Qnt]
,null
)
)
SET [yourMeasures] AS
{
[Measures].[Contacts]
,[Measures].[Clients]
,[Measures].[Funded]
}
SET [CitySales] AS
[City].Children * [Sales_step].Children
SET [CitySalesNonEmpty] AS
Union
(
NonEmpty([CitySales],[Measures].[Contacts])
,NonEmpty([CitySales],[Measures].[Clients])
,NonEmpty([CitySales],[Measures].[Funded])
)
/*
//>>>>Alternative syntax for above union>>
SET [CitySalesNonEmpty] AS
NonEmpty([CitySales],[Measures].[Contacts])
+NonEmpty([CitySales],[Measures].[Clients])
+NonEmpty([CitySales],[Measures].[Funded])
//>>>>
*/
SELECT
[yourMeasures] ON COLUMNS
,NON EMPTY
[CitySalesNonEmpty] ON ROWS
FROM [SALES_PIPE];
关于reporting-services - SSRS mdx 报告 : use dimension on columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30975618/