Pentaho CDE:为每个堆积条形图条提供不同的数据源

时间:2016-10-24 06:12:13

标签: pentaho pentaho-cde

我正在使用pentaho CDE。

有没有办法,我可以为CCC堆积条形图的每个条提供不同的数据源(MySQL查询)?

1 个答案:

答案 0 :(得分:1)

我做了类似的事情:我有一张带有"虚拟"数据源jsonscriptable over scripting和一个函数,通过ajax,在承诺中激活不同的查询来构建结果集。然后,在图表的postfetch中,我刚刚返回了构建的结果集。

修改

假设我在/ home / myhome中有仪表板testpromise,其中3个数据源返回类似的结果集(即:具有相同类型的相同列数)。 在我的仪表板中,我实际上使用不同的参数调用了3次相同的查询:您将不得不调整代码。让我们说我们的图表名为mychart。  我有一个按钮(但它可以是其他任何东西),点击动作有以下代码:

    function(){

 Dashboards.res=[];//will contain the result ; As for Pentaho 5.4 without RequireJS, Dashboards is a global varialbe, so that Dashboards.res is accessible eveywhere
 Promise.all([getib3(2016,3),getib3(2015,3),getib3(2016,8)]).then(
     function(r){
//res contains the result of the 3 queries
       console.log(res);
       Dashboards.etComponentByName('render_mychart').update(); //Activates the chart
    },
    function(err) { 
        console.error(err);
    }     
);
function getib3(a,m){
          var postquery='path=%2Fhome%2myhome%Ftestpromise.cda&dataAccessId=sql_get_ib3&paramparam_annee='+a+'&paramparam_mois=' +m;
        $.ajax({
                        url:  '/pentaho/plugin/cda/api/doQuery?',
                        type: 'POST',
                        dataType: 'json',
                        data: postquery,
                       // async:false,
                     }).done(function (data) {   console.log(data)  ;
                           res.push(data.resultset);//ad the result of the query

                        }).fail(function ( jqXHR, textStatus, errorThrown) {
                        alert('query :' + textStatus);
                        });
}
} 

图表与虚拟jsonscript数据源关联,其属性"在开始时执行"设置为false。 postfetch属性:

function(d) {//d is the resultset of the dummy datasource, here we can ignore it.
       return (Dashboards.res); //We override d with the resultset we build above
}

玩得开心!