美文网首页
Pentaho Report Designer生火指南

Pentaho Report Designer生火指南

作者: 射覆 | 来源:发表于2015-05-02 17:46 被阅读8170次

    author @fyunli

    一、认识Pentaho Report Designer

    Pentaho Report Designer

    二、设计第一个报表

    1、添加数据源

    1、点击右侧Data选项卡添加数据源:

    2、在打开的界面中创建一个新的连接:

    3、然后新建查询

    点击Preview可预览数据

    2、设计报表格式

    2.1 逐行数据显示

    将数据项拖动到Detail Body区块即可

    2.2 增加一个图表

    1、从左侧工具栏将图表拖动到Report Header区域

    2、双击图表进去设置属性

    2.3 分组

    右侧Structure选项卡右键点击Master Report,选择Add Group即可。

    3、预览报表

    点击预览设计区左上角预览图标进行预览:

    三、为报表添加参数

    • 右侧Data选项卡下方Parameters - Add Parameter
    • 打开的界面定义参数:
    • 数据源中引用参数

    使用${param}格式嵌入Query中即可,如定义参数名称为category,则类似Query如下

    select * from product where catagory = ${category}
    

    四、函数与表达式

    右侧Data选项卡Functions - Add Function

    选择内置的函数,同行选择Running函数做一些聚合计算。

    然后点击新建的函数,在下方属性中定义名称及表达式:

    五、发布报表

    菜单选择File - Publish

    然后输入Pentaho BI地址和用户名、密码:

    然后填写发布名称、路径等:

    点击"OK“等待发布完成。

    发布完成后即可在BI Server上浏览报表:

    六、项目中引用报表

    1. 使用Java API调用Pentaho Report Engine直接渲染输出

    如:

            try {
                URL urlToReport = new URL("file:" + request.getServletContext().getRealPath("WEB-INF/report/" + reportFile));
    
                ResourceManager manager = new ResourceManager();
                manager.registerDefaults();
                Resource res = manager.createDirectly(urlToReport, MasterReport.class);
                MasterReport report = (MasterReport) res.getResource();
                if (MapUtils.isNotEmpty(params)) {
                    for (String key : params.keySet()) {
                        report.getParameterValues().put(key, params.get(key));
                    }
                }
    
                if ("pdf".equalsIgnoreCase(rendererType)) {
                    response.setHeader("Content-disposition", "filename=" + System.currentTimeMillis() + ".pdf");
                    response.setContentType("application/pdf");
                    PdfReportUtil.createPDF(report, response.getOutputStream());
                } else {
                    response.getWriter().write("不支持的报表格式!");
                }
            } catch (Exception e) {
                try {
                    e.printStackTrace();
                    response.getWriter().write("报表生成失败!");
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
    
    
    1. 通过BI Server的URL进行嵌入

    URL格式如下:

    http://10.142.80.231:8080/pentaho/api/repos/%3Ademo%3Abtopic2.prpt/report
    

    七、TroubleShooting

    • PDF格式中文乱码问题

    对中文元素使用设置为中文字体,如宋体等。

    • 引用Report地址,Pentaho BI Server弹出框要求输入用户名,密码

    修改pentaho-solutions/system/applicationContext-spring-security.xml,在filterChainProxy中api, plugin对应增加requestParameterProcessingFilter。修改后如下:

      <bean id="filterChainProxy" class="org.springframework.security.util.FilterChainProxy">
        <property name="filterInvocationDefinitionSource">
          <value>
            <![CDATA[CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
            PATTERN_TYPE_APACHE_ANT
            /webservices/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
            /api/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,requestParameterProcessingFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
            /plugin/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,requestParameterProcessingFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
            /**=securityContextHolderAwareRequestFilter,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,httpSessionReuseDetectionFilter,logoutFilter,authenticationProcessingFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor]]>
          </value>
        </property>
      </bean>
    
    

    相关文章

      网友评论

          本文标题:Pentaho Report Designer生火指南

          本文链接:https://www.haomeiwen.com/subject/klvbfttx.html