在pentaho CDE中设置选择组件的默认值

时间:2017-12-11 02:54:35

标签: mdx pentaho-cde

我在布局中有1个组合框,1个选择组件和1个数据源(mdx在mondrianJndi上)

这是我的mdx查询

with member [Measures].[Name] as '[Year].CurrentMember.UniqueName' select TopCount( filter({Descendants([Year].[All Years] ,[Year].[Year])}, not isempty(([Year].CurrentMember)) ) , 50) on ROWS, 
 {[Measures].[Name]} on Columns 
 from [Department Cube]

我的查询返回年份数据列表(包括当前年份)

此时,我必须等待加载数据,然后通过js资源将组合框的值设置为当前年份。 如何在布局中将组合框设置为当前年份的默认值,并等待加载数据?

1 个答案:

答案 0 :(得分:1)

作为动态查询,您不应该依赖"当前"年计算。用于确定当前年份的任何JS函数,例如来自客户端的时钟将受到时区奇怪的影响,可能会尝试将值设置为从查询中返回的值。

只有在读取查询结果后才应设置选择器的默认值,但最好的方法是在组件的postFetch方法中。

例如,如果要将参数值设置为查询结果的最后一个值,

function(data){
  var results = data.resultset
  // some logic here to set current_year to the adequate value. For example,
  current_year = results[results.length-1][0];
  dashboard.setParameter(this.parameter, current_year);
  return data;
}