2016-04-06 41 views
0

我已经看到一些关于MDX转义字符的问题,但他们关注的是具有指定值的查询。我有一个动态的mdx,其值将由用户指定。这是MDX:mdx转义字符CDE Pentaho

SELECT 
    NON EMPTY {Hierarchize({[Measures].[INDICADOR]})} ON COLUMNS, 
    NON EMPTY {Hierarchize({[NOW].[NOW].Members})} ON ROWS 
    FROM [UNION_NOW] 
    WHERE CrossJoin({[PARENT].[${parentParameter}]} 

外卡是基于我的选择:

SELECT 
    NON EMPTY {Hierarchize({[NOW].[NOW].Members})} ON COLUMNS, 
    NON EMPTY {Hierarchize({[PARENT].[PARENT].Members})} ON ROWS 
    FROM [UNION_NOW] 

如何在这种情况下套用“转义值”?

+0

为什么第一个脚本的WHERE子句中有'crossjoin'? 'WHERE CrossJoin({[PARENT]。[$ {parentParameter}]}' – whytheq

+0

MDX是由SAIKU向导创建的,我不确定为什么会有一个交叉连接,我仍然试图理解该工具。 –

回答

0

要解决的最佳方法是使用选择组件的PRE/POST执行事件,具体取决于您使用的CDE组件。

对于类似的情况

  • 我用其从SQL查询
  • 基于用户选择,我使用的查询组件的预执行事件带来的数据的选择部件,以产生where子句和设置即where子句中的“简单参数”组件
  • 最后在MDX Query中使用该简单参数来加入动态where子句。

您还可以使用选择组件,执行后生成一个动态where子句,并设置中的参数,然后使用参数在MDX/SQL查询

希望它能帮助。

+0

嗨,谢谢回答。 –

+0

嗨,谢谢你的回答。 我仍然试图理解这个工具,而我正在使用它 我已经创建了一个具有简单参数的选择组件,$ {parentParameter}来自 让我更好地解释发生了什么事情,我的第一个MDX用于图表,第二个用于选择器。当用户选择一个具有特殊字符“[]”的值时,图表会收到错误,因为“ []“是MDX语法的一部分,我必须在图表执行之前转义”[]“ 可以执行在你提到的查询组件的条件?如果是这样,有没有例子? –

+0

好吧,我没有一个例子。但这正是我经历过的事情。试试这个,我会试着更具体的 - 在你的报告中创建一个新参数称为param_chart,让你的图表在这个参数上运行,而不是在你的父母表中运行 - 转到你选择的组件,转到高级属性,转到执行后并将脚本写为 函数fn(){0} {0} {0} {0} myvalue = $(“parentParameter”)。val(); myvalue = myvalue.replace(“[”,“”)。replace(“]”,“”); $(“param_chart”)。val(myvalue); } – user18620