2011-08-29 21 views
0

我有我的MDX查询如下:MDX传递变量作为字符串项()

with set SelectedEntity as '{Union({[Category].[Tertiary Category].Members}, {[Category].[Secondary Category].Members}).Item("Emails")}' 
select Crossjoin({[Measures].[Reach]}, {[Age Group].[15-17], [Age Group].[18-24], [Age Group].[25-30], [Age Group].[31-35], [Age Group].[36-40], [Age Group].[40+]}) ON ROWS, 
{[SelectedEntity]} ON COLUMNS 
from [AppUsage] 
where {[Country].[India]}*{[Date].[2011].[April]}*{[Panel].[Syndicate]} 

这里代替Item("Emails")我想传递一个变量是这样的Item(${category})。因此,我的查询应该成为这样的事:

with set SelectedEntity as '{Union({[Category].[Tertiary Category].Members}, {[Category].[Secondary Category].Members}).Item(${category})}' 
    select Crossjoin({[Measures].[Reach]}, {[Age Group].[15-17], [Age Group].[18-24], [Age Group].[25-30], [Age Group].[31-35], [Age Group].[36-40], [Age Group].[40+]}) ON ROWS, 
    {[SelectedEntity]} ON COLUMNS 
    from [AppUsage] 
    where {[Country].[India]}*{[Date].[2011].[April]}*{[Panel].[Syndicate]} 

但尝试这个category变量传递给这个查询它给我的错误是无法解析查询。

我不明白哪里会出错?这是在Item()中传递变量的正确方法,因为它需要字符串。

注:${category}变量的值,我选择的实体到自动完成场后获得,我想传递给上面的查询

编辑:

当我传递值查询中的类别变量'Emails',即在上面的Item(${category})中,在日志中相同的查询变成Item(Emails)。但不是这样,它应该是这样的:Item("Emails")

我需要知道如何在我的mondrian MDX查询中将此变量作为字符串传递。

+0

您使用哪种报告工具? MDX参数的语法是@category –

+0

我在Pentaho中使用了Mondrian for MDX – srahul07

+0

我按照您的建议做了,但无法成功。我收到了同样的错误。此外,我在日志中发现:“父例外:Mondrian错误:无法解析查询”。它指定它仍然无法解析它。 – srahul07

回答

0

我得到了这个解决方案。

该变量需要作为Item("${category}")传递。因此我的查询将变为:

with set SelectedEntity as '{Union({[Category].[Tertiary Category].Members}, {[Category].[Secondary Category].Members}).Item("${category}")}' 
    select Crossjoin({[Measures].[Reach]}, {[Age Group].[15-17], [Age Group].[18-24], [Age Group].[25-30], [Age Group].[31-35], [Age Group].[36-40], [Age Group].[40+]}) ON ROWS, 
    {[SelectedEntity]} ON COLUMNS 
    from [AppUsage] 
    where {[Country].[India]}*{[Date].[2011].[April]}*{[Panel].[Syndicate]} 

其中${category}是我的变量。

相关问题