Pentaho CDE 基础使用教程

一、工具介绍

Pentaho CDE,CDE即CommunityDashboard Editor,可以理解为看板编辑器,可以与开源报表框架ECharts结合使用,可以制作商务智能仪表盘等报表元素。以下是界面的基本介绍:

从左到右:保存当前Layout为模板;应用模板到当前Layout;添加CSS或JS资源(可自己编写,也可以是现成的文件);添加一个Bootstarp Panel;添加行;添加列;添加分隔;添加图片;添加HTML;复制选中的layout控件;删除选中的layout控件。

界面按钮

(1)新建CDE仪表板。登录pentaho-server,点击新建→CDE仪表板,如图1所示。

图1 新建CDE仪表板

(2)设置布局。示例:布局添加一行,在右边可以修改名称、高度、背景颜色等属性,如图2所示。

图2 添加行布局

添加一列,同样在右边可以设置各种属性,如图3所示。

图3 添加列布局

添加一个HTML,同样右边是属性板。

在右边属性板的HTML项中输入内容:<h1>我的pentaho CDE示例</h1>,如图4所示。

图4 添加HTML代码

点击Save保存,保存到public文件夹下,如图5所示。

图5 保存文件

保存完毕之后可以点击右上角的“眼睛“进行预览,效果如图6所示。

图6 示例效果

(3)添加CSS文件。将前面的HTML代码内容改为:<div id=’demo’>我的pentaho CDE示例</div>,点击添加资源的按钮,在弹出的对话框中选择CSS资源,如果是添加文件,则选择External File,此处选择Code Snippet自行编写CSS代码,如图7所示。

图7 添加CSS资源

在右边属性板的Resource code属性中输入CSS代码,内容为: #demo{ font-size: 100px; },如图8所示。

图8 添加CSS代码

保存并预览,如图9所示。

图9 效果图

同理添加Javascript资源,如图10所示。

图10 添加js资源

添加JS代码使其弹出内容为“js示例”的对话框。代码为:$(function(){ alert('js示例') }),如图11所示。

图11 添加js代码

保存并预览,效果如图12所示。

图12 效果图




(4)点击如图13的“浏览文件”,然后在文件夹“public”找到保存的报表,可以选择打开查看或者继续编辑。

图13 浏览文件

二、绑定数据源

点击Datasource图标→Community Data Access→CDA Datasource,如图14所示。

图14 添加数据源

(2)点击图14方框中的“^”,选中文件夹“public”,点击“OK”,在弹出的对话框中输入数据源文件名称“demoDS”,如图15所示。最后点击“OK”。

图15 数据源文件命名

(3)填写数据源的名称以及DataAccess ID,如图16所示。

图16 数据源文件信息

(4)点击图16中方框中的按钮,在弹出的空白框中输入数据源代码:

(一般只需要改动以下的用户名称、密码以及查询语句)

···

<?xml version="1.0" encoding="UTF-8"?>

<CDADescriptor>

    <DataSources>

        <Connection id="mysql" type="sql.jdbc"><!--id:连接库标识-->

            <Driver>com.mysql.jdbc.Driver</Driver> <!--使用的是 mysql 驱动-->

            <Pass>cm0103</Pass><!-- mysql 用户密码 -->

            <Url>jdbc:mysql://localhost:3306</Url><!-- mysql 地址 -->

            <User>root</User><!-- mysql 用户名称 -->

        </Connection>

    </DataSources>

    <DataAccess access="public" connection="mysql" id="get_student" type="sql">

    <!--connection:链接的哪个库, id:查询标识,和上面的DataAccessID对应-->

        <Name>get_student</Name>

        <Cache duration="3600" enabled="true"/>

        <Columns/>

        <Parameters/>

        <Query><![CDATA[SELECT * FROM demo.student]]></Query> <!-- 查询语句 -->

    </DataAccess>

</CDADescriptor>

···

以上的id注意一定要和(3)中的DataAccess ID对应,最后点击对话框中的“Save”保存,如图17所示。

图17 数据源代码

(5)按照上文说的方法“浏览文件”,点击public→demoDS.cda→编辑→预览,如图18所示。

图18 编辑数据源文件

(6)  选择“get_student”,就会出现数据,如图19所示。与图20中数据库中的信息一致。点击Query URL,并复制内容,内容为:http://localhost:8080/pentaho/plugin/cda/api/doQuery?path=/public/demoDS.cda&dataAccessId=get_student

图19 数据查询
图20 数据库表内容



三、使用ECharts绑定数据源

(1)上传EChart的js文件,进入“浏览文件”,选中文件夹“public”,上传“echarts.min.js”,此处可能是存在漏洞,上传成功后文件列表里依然不会显示“echarts.min.js”,因此不用理会,可以继续后续操作,如图21所示。

图21 上传EChart的js文件

(2)点击添加资源,如图22所示。

图22 添加js资源

修改属性板的内容,点击Resource File项的“^”,选择(1)中上传的js文件,最后点击“OK”,如图23所示。

图23 加载js文件

(3)点击Settings,将对话框中“RequireJS Support”的勾去掉。(否则加载不了ECharts的js文件)

(4)修改HTML的代码,如图24所示。

代码:

···

<div id='demo'>我的pentaho CDE示例</div>

<div id='container' style='width:100%;height:400px;'></div>

···

图24 修改HTML代码

(5)点击添加资源,如图25所示。

图25 添加js资源



在Resource code中输入js代码,如图26所示。此处使用的是ECharts中的仪表盘代码,其他图可以自行在ECharts官网中查看。另外将4.6中步骤(6)复制的地址http://localhost:8080/pentaho/plugin/cda/api/doQuery?path=/public/demoDS.cda&dataAccessId=get_student中的/pentaho/plugin/cda/api/doQuery?path=/public/demoDS.cda&dataAccessId=get_student写到下面代码中url的位置

代码:

···

function getCDAData(url){

    var result;

    $.ajax({

        type:'get',

        url:url,

        async:false,

        success:function(data){

            result = data;

        }

    });

    return result;

}


function chartSet(ele,option){ 

    var dom =document.getElementById(ele);

    var myChart = echarts.init(dom);

    var app = {};   

    if (option && typeofoption === "object") {

        myChart.setOption(option,true);

    }

}


// ECharts代码

function getGauge(){

    return {

        tooltip: {

            formatter: '{a}
{b} : {c}%'

        },

        toolbox: {

            feature: {

                restore: {},

                saveAsImage: {}

            }

        },

        series: [

        {

            name: 'gpa波动仪表盘',

            type: 'gauge',

            radius: '90%',

            title: {

                textStyle: {

                    color: '#7FFFD4'

                }

            },

            axisLine: {            //坐标轴线 

                lineStyle: {       //属性lineStyle控制线条样式 

                    color: [[0.2,'#91c7ae'], [0.5, '#63869e'], [1, '#c23531']]

                } 

            },

            detail: {formatter:'{value}%'},

            data: [{value: 50, name:'标准差'}]

        }

        ]

    }

}


// 获取数据并进行计算,将结果导入到图表

function initChart(){

    var url ='/pentaho/plugin/cda/api/doQuery?path=/public/demoDS.cda&dataAccessId=get_student';

    var result = getCDAData(url);

    var total= 0.0;

    var average = 0.0;

    var s =0.0;

    var rat =0.0;

    //以下步骤为计算标准差,作为仪表盘的数值

    for(var i=0;i<result.resultset.length; i++){

        total= total + result.resultset[i][4];

        //result.resultset[1][3]代表数据源文件查询到的信息中第二行的第四列的数值

    }

    average =total / result.resultset.length;

    for(var j=0;j<result.resultset.length; j++){

        s = s+ (result.resultset[j][4]-average)*(result.resultset[j][4]-average);

    }

    s =s/(result.resultset.length-1);

    rate =Math.sqrt(s)*100;

    var option = getGauge();

   option.series[0].data[0].value = rate.toFixed(2);

    //将图放在刚刚在HTML中设置的div中

   chartSet('container',option);

}


function init(){   

   initChart();

}


//window.onload = init();

$(function(){

    init();

});

图26 添加js资源

(6)保存并预览,如图27所示。最终效果也可以通过“浏览文件”找出对应的报表文件,再打开查看。

图27 示例最终效果
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353