从零到能打:Pentaho CDE 仪表盘实战全攻略b

Words 3935Read Time 10 min
2026-2-11
cover
type
Post
status
Published
date
Apr 1, 2020 21:24
slug
summary
本文全面介绍 Pentaho CDE 开发实战:从 PBA 平台安装、CDE 三层架构(数据层、组件层、视图层)详解,到参数联动实现动态筛选,再到集成 ECharts 打造高颜值交互式 Dashboard。适合需要轻量级开源 BI 方案的开发者。
tags
Pentaho
Data Warehouse
category
Data Engineering
icon
password
wordCount
3674
本文是一份 Pentaho CDE(Community Dashboard Editor)的实战开发指南。从安装 PBA 平台、理解 CDE 三层架构(数据层、组件层、视图层),到手把手搭建交互式 Dashboard,再到集成 ECharts 实现动态图表——一篇带你从零到能打。
📌
本文重点
  • CDE 三层架构:数据层提供数据、组件层渲染与交互、视图层负责布局
  • 参数联动:通过参数组件 + 监听机制实现筛选与图表的动态刷新
  • ECharts 集成:利用模板组件 + CDA API + Ajax,让 Pentaho 拥有更强的可视化能力

实验环境

开工之前,先确认一下你的装备清单:
工具
版本
操作系统
Windows 10
JDK
1.8
PostgreSQL
12
Pentaho
8.3
工欲善其事,必先利其器。版本不对,debug 到怀疑人生。

PBA

PBA 全称 Pentaho Business Analyze,是 Hitachi 旗下一款基于 Java 的轻量级 BI 平台。它能开发图表、展示报表、提供 API 服务,还能管理所有图表报表文件——简单说就是一个「数据可视化全家桶」。
⚠️
PBA 是个吃内存大户,请确保机器至少 8G 内存,否则你需要手动调整 Tomcat 的虚拟内存配置。内存不够的话,PBA 会用卡顿来表达它的不满。

安装PBA

  1. 到官网或者sourceforge下载源码
    1. notion image
  1. 下载完后解压,双击start-pentaho.bat
    1. notion image
  1. 出现这个提示,点击确定
    1. notion image
  1. 第一次启动比较久,下图为启动成功(如果页面卡了,在这命令行里按回车)
    1. notion image

CDE

CDE 是 Pentaho 内置的 Dashboard 编辑器插件,专门用来制作交互式仪表盘和图表。它的设计哲学很清晰——三层架构:数据层、组件层、视图层,各司其职,互相配合。
下图四个按钮依次对应:视图层、组件层、数据层、预览。记住这个顺序,后面会反复用到。
notion image

数据层

数据层是整个 Dashboard 的「粮仓」,负责为组件提供数据。界面分为三个区域:
  • 左侧:创建数据源区域,选择类型后点击即可创建
  • 中间:已创建的数据源列表
  • 右侧:每个数据源的详细配置项
notion image

组件层

组件层是「承上启下」的核心角色:向上渲染数据层的数据,向下控制变量参数回传给数据层。你可以把它理解为 MVC 里的 Controller。
组件大致分为四类:
  • 参数组件:变量的容器,筛选组件的值会自动存入其中
  • 筛选组件:下拉、单选、多选、文本输入等,值变化后自动写入参数组件,并可触发其他组件刷新
  • 图表组件:柱状图、折线图、饼图、散点图等,指定数据源即可展示,支持监听参数变化自动刷新
  • 其他功能组件:用于实现一些特殊功能的组件
notion image

视图层

视图层使用 Bootstrap 3 的栅格布局(一行 12 格),天然适配各种屏幕尺寸。工具栏功能依次为:
  1. 保存 CDE 布局
  1. 选择 CDE 布局
  1. 添加 JS 或 CSS 资源
  1. 添加 Bootstrap 面板
  1. 添加表单
  1. 添加行 / 列 / 空行
  1. 添加图片 / HTML
  1. 复制 / 删除元素
布局结构分为两部分:
  • 资源文件:JS 和 CSS 文件,可引用上传到 Pentaho 的静态资源
  • 布局:由行、列、空行、图片、HTML 代码组成
notion image

基础使用

理论讲完,该动手了。接下来我们从零搭建一个简单的 Dashboard,走一遍完整的「数据层 → 组件层 → 视图层」流程。
  1. 浏览器打开 http://localhost:8080,点击以评估者身份登录,点击管理员下面的登录按钮
    1. notion image
  1. 新建cde 创建新的CDE,并保存
    1. notion image
      notion image
  1. 创建数据层,这里选择使用jdbc,也可以配置成jndi 输入数据源名,驱动名,用户名,密码,jdbc Url,查询语句 Query sql SELECT * FROM public.dim_date
    1. notion image
      属性
      描述
      例子中的值
      Name
      数据源名字,后面组件层会用到
      localhost
      Driver
      驱动类名
      org.postgresql.Driver
      Password
      数据库密码
      Username
      数据库用户名
      Access Level
      数据源权限等级
      Public
      URL
      SQL Url
      jdbc:postgresql://localhost:5432/postgres
      Query
      查询语句
      SELECT * FROM public.dim_date
      Parameters
      查询参数,内容为参数名,参数值
      []
      Calculated Columns
      对某些列做一些计算
      []
      Columns
      []
      Output Columns
      []
      Output Model
      include
      Cache Keys
      缓存的列
      []
      Cache Duration
      缓存时间
      3600
      Cache
      是否开启缓存
      True
  1. 创建组件层,这里选择用table来演示
    1. notion image
      属性
      描述
      例子中的值
      Name
      组件名,没什么用
      table
      Listeners
      需要监听的参数
      []
      Column Headers
      table组件特有,表头
      []
      Column Types
      table组件特有,列的类型
      []
      Parameters
      参数,参数将会传入数据
      []
      Datasource
      选择数据源,对应数据源的Name
      localhost
      HtmlObject
      用于挂载的html dom节点,例如值为app,则将会渲染到id为app的html元素上,一般使用div作为容器
      table
      Click Action
      点击事件
  1. 创建视图层,先添加一个行,再添加一个列,最后添加一个html元素 id=table对应组件的HtmlObject
    1. notion image
      notion image
  1. 运行CDE
    1. notion image
      notion image

配置参数

静态表格看着没什么意思,真正有趣的是让数据动起来。接下来以上面的 table 为例,创建一个 id 下拉列表来动态刷新 table。
  1. 步骤
      • 创建查询id的数据源,用于筛选组件显示数值
      • 创建参数组件
      • 创建筛选组件,配置好数据源与参数容器,当筛选组件值变化时会自动将值放入该容器
      • 图表组件监听参数,当参数值变化时图表将会自动刷新
      • 图表组件的数据源SQL语句加入变量,变量使用方法:${变量名}
      • 创建筛选组件的html元素,这样筛选组件才会显示出来
 
  1. 创建查询id的数据层,还是选择jdbc,只是简单的查询所有id出来
    1.  
      notion image
      属性
      描述
      例子中的值
      Name
      数据源名字,后面组件层会用到
      localhost
      Driver
      驱动类名
      org.postgresql.Driver
      Password
      数据库密码
      Username
      数据库用户名
      Access Level
      数据源权限等级
      Public
      URL
      SQL Url
      jdbc:postgresql://localhost:5432/postgres
      Query
      查询语句
      SELECT dim_date_id FROM public.dim_date
      Parameters
      查询参数,内容为参数名,参数值
      []
      Calculated Columns
      对某些列做一些计算
      []
      Columns
      []
      Output Columns
      []
      Output Model
      include
      Cache Keys
      缓存的列
      []
      Cache Duration
      缓存时间
      3600
      Cache
      是否开启缓存
      True
  1. 创建变量参数,用来装载变量
    1. notion image
      属性
      描述
      例子中值
      Name
      参数名,查询组件会用到
      p_id
      Property value
      默认值
      -
      Bookmarkable
      False
      Public
      是否公开
      False
  1. 创建查询组件,这里我选择了下拉列表
    1. notion image
      属性
      描述
      例子中的值
      Name
      组件名,没啥用
      selectId
      Parameter
      绑定的参数,对应参数的Name
      p_id
      Listeners
      监听的参数 可以监听多个,当参数变化后会自动传入数据源中,这里其实可以去掉,因为query_id数据源没有用到参数
      [‘p_id’]
      Parameters
      参数,提供给Datasource使用
      []
      jQuery Plugin
      添加jq拓展
      -
      Value as id
      是否作为ID
      False
      Datasource
      查询的数据源,这里是query_id
      query_id
      Values array
      常量值
      []
      HtmlObject
      挂载的Html dom对象,例如值为app,则将会渲染到id为app的html元素上,一般使用div作为容器
      selectId
  1. 修改数据展示组件(table)
    1. notion image
      notion image
      属性
      描述
      例子中的值
      Name
      组件名,没什么用
      table
      Listeners
      需要监听的参数
      [“p_id”]
      Column Headers
      table组件特有,表头
      []
      Column Types
      table组件特有,列的类型
      []
      Parameters
      参数,参数将会传入数据
      [[“p_id”,“p_id”]]
      Datasource
      选择数据源,对应数据源的Name
      localhost
      HtmlObject
      用于挂载的html dom节点,例如值为app,则将会渲染到id为app的html元素上,一般使用div作为容器
      table
      Click Action
      点击事件
  1. 修改数据源 原sql
    1. 修改为 ${p_id}为设置变量名
      添加使用到的参数
      notion image
      notion image
      属性
      描述
      例子中的值
      Name
      数据源名字,后面组件层会用到
      localhost
      Driver
      驱动类名
      org.postgresql.Driver
      Password
      数据库密码
      Username
      数据库用户名
      Access Level
      数据源权限等级
      Public
      URL
      SQL Url
      jdbc:postgresql://localhost:5432/postgres
      Query
      查询语句
      SELECT * FROM public.dim_date where dim_date_id = ${p_id}
      Parameters
      查询参数,内容为参数名,参数值
      [[“p_id”,“p_id”]]
      Calculated Columns
      对某些列做一些计算
      []
      Columns
      []
      Output Columns
      []
      Output Model
      include
      Cache Keys
      缓存的列
      []
      Cache Duration
      缓存时间
      3600
      Cache
      是否开启缓存
      True
  1. 添加查询组件的视图 在原来的table上添加筛选组件的html挂载点 原来:
    1. 改为:
       
      notion image
  1. 运行
    1. notion image
      notion image

集成 ECharts

Pentaho 自带的图表组件能用,但说实话……颜值有限。如果你想让 Dashboard 从「能用」升级到「好看」,是时候请出 ECharts 了。
ECharts(Enterprise Charts)是百度开源的一个纯 JavaScript 图表库,底层依赖轻量级 Canvas 库 ZRender。它能流畅运行在 PC 和移动端,兼容绝大部分主流浏览器。拖拽重计算、数据视图、值域漫游等交互特性,让数据可视化不再只是「看看」,而是真正的「玩起来」。

基础使用

  1. 获取Echarts,点击超链接打开网页,选择你要使用到的组件,点下载后会获得一个echarts.min.js文件。首页下载的会是一个zip包,这里下载的是打包好的一个js文件
    1. notion image
      notion image
  1. 上传echarts到pentaho 选择一个文件夹点上传,选择文件后上传即可 上传完后记得勾选显示隐藏文件,pentaho默认不显示普通资源文件
    1. notion image
      notion image
      notion image
  1. 新建CDE 创建新的CDE,并保存
    1. notion image
  1. 引入echarts 点击工具栏的添加资源,选js和引用已存在文件
    1. notion image
  1. 输入名字echarts(不然会找不到js文件),选择已经上传好的echarts文件
    1. notion image
  1. 再新建一个js文件,用来写生成echarts的js代码 这里选择自己写代码
    1. notion image
  1. copy一份官网的例子写在js里
    1. notion image
       
 
 
  1. 新建html代码
    1.  
      notion image
  1. 运行
    1. notion image

动态图表

静态 ECharts 好看是好看,但数据写死在代码里——这跟截图有什么区别?在 CDE 里使用原生 ECharts 会遇到三个问题:无法获取参数、无法获取数据源、无法监听参数变化。别慌,本节逐一击破。
  1. 步骤
  • 创建参数,用于echarts数据源
  • 创建下拉筛选组件,用于动态选择参数
  • 创建echarts数据源,并获取api
  • jq获取参数,js配置echarts,并通过ajax获取数据
  • 创建echarts视图
  1. 新建一个cde,并引入echarts
    1. notion image
  1. 创建参数容器
    1. notion image
      属性
      例子中值
      Name
      id
      Property value
      Bookmarkable
      False
      Public
      False
  1. 创建下拉筛选组件
    1. notion image
      属性
      例子中的值
      Name
      selectId
      Paramete
      id
      Listeners
      []
      Parameters
      []
      jQuery Plugin
      -
      Value as id
      False
      Datasource
      query_id
      Values array
      [[“id”,“1”],[“id”,“2”],[“id”,“3”],[“id”,“4”]]
      HtmlObject
      id
  1. 创建下拉组件视图 运行结果
    1. notion image
      notion image
  1. 创建echarts数据源 将传进来的参数作为输出结果传出去
     
    notion image
    属性
    例子中的值
    Name
    Driver
    org.postgresql.Driver
    Password
    Username
    Access Level
    Public
    URL
    jdbc:postgresql://localhost:5432/postgres
    Query
    select ${id}
    Parameters
    [[“id”,“id”,“Integer”,““,””]]
    Calculated Column
    []
    Columns
    []
    Output Columns
    []
    Output Model
    include
    Cache Keys
    []
    Cache Duration
    3600
    Cache
    True
    1. 保存cde
    1. 当在cde里面创建一个数据源时,pentaho会在该文件目录下创建一个同名cda文件,打开该文件 CDA是pentaho的api插件,以后将新开一文章来讲解CDA的使用方法
      1. notion image
    1. 测试数据源 选择刚才创建好的echarts数据源,输入参数,点击运行
      1. notion image
        可以看剧数据源将参数作为输出
        notion image
        点击Query Url,复制api
        notion image
    1. 回到cde,创建一个模板组件
      1. notion image
        属性
        描述
        例子中的值
        Name
        组件名,没什么用
        echarts
        Listeners
        需要监听的参数
        [“id”]
        Parameters
        参数,参数将会传入数据源
        [[“id”,“id”]]
        Datasource
        选择数据源,对应数据源的Name
        localhost
        HtmlObject
        用于挂载的html dom节点,例如值为app,则将会渲染到id为app的html元素上,一般使用div作为容器
        echarts
        Model Handler
        处理数据的函数
        Template
        模板函数,执行js
        写在下面
        Template Library
        模板库
        Events
        点击事件等事件
        Formatters
        格式化数据
        Model root element
        数据源的根节点
    1. 挂载模板组件 在筛选组件的上面加一个column,name写echarts对应模板组件的HtmlObject
      1. notion image
    1. 创建echarts的挂载点 修改原来html,在筛选组件下加上echarts div
      改为
      1. 运行 模板组件的数据源必须要返回值否则会报错,初始参数的值为null,所以初始运行会报错 当我们改变下拉组件的值,参数不再为null,模板组件刷新,echart通过ajax动态渲染视图
        1. notion image
          notion image

      总结

      回顾一下这趟 Pentaho CDE 之旅:
      • PBA 平台:安装简单(前提是内存够),双击 bat 即可启动
      • CDE 三层架构:数据层喂数据、组件层做交互、视图层搞布局——各司其职,逻辑清晰
      • 参数联动:通过参数组件 + Listeners 机制,实现筛选条件与图表的实时联动
      • ECharts 集成:借助模板组件和 CDA API,用 Ajax 拉取数据动态渲染图表,让 Dashboard 的颜值和交互力直接拉满
      Pentaho CDE 虽然不是市面上最时髦的 BI 工具,但胜在开源免费、架构清晰、扩展灵活。如果你的团队需要一个轻量级的自建 BI 方案,它值得一试。
      工具只是手段,数据才是目的。选对工具,让数据讲出好故事。

      参考链接

      Loading...