EAS自定义报表.doc_第1页
EAS自定义报表.doc_第2页
EAS自定义报表.doc_第3页
EAS自定义报表.doc_第4页
EAS自定义报表.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在报表制作整个流程中比较复杂的一步是建立数据源。EAS 中本来已经存在很 多 BOS 的元数据,报表服务框架能拿来用的现在只有 2 种:“.bos-table”, “.bos-query”。“.bos-query”直接可以做为报表的数据源,另外还可以在这 2 种 元数据的基础上建立报表服务特有的数据源:“KSQL 查询”、“数据加工”、“java 数据源”、“多维数据集”、“自定义数据表”(后 2 种 EAS5.3 暂时屏蔽)。这五种 数据都可以作为报表的数据源。所有这些数据源之间以及和报表设计器之间的引用关系如下图所示:2.1 BOS 元数据BOS 元数据包括“.bos-table”和“.bos-query”两种。BOS 元数据是 EAS 开发 人员或二次开发人员制作并发布到 EAS 子系统树的。报表服务中的文件夹下没 有列出 B0S 元数据,只有在新建数据源时或在报表设计器中引入数据源时才可 以看到 BOS 元数据。BIM 中制作的元数据(单据)怎样才能被报表服务平台所使用呢?流程如下:制作 BOS-QUERY 发布生成工作流和单据转换平台目录重起 EAS服务器这个是针对本地 EAS 服务器,如果需要在其他服务器上也看到该 QUERY,则 需要再进行一步“部署”的动作。2.2 KSQL 查询KSQL 是基于 BOS 元数据基础上进行构建。bos-table 之间、bos-query 之间、bos-table 和 bos-query 之间都可以进行关联查询。KSQL 编辑器如下图:在构建 KSQL 时,可以在编辑器中通过可视化的步骤一步步来构建;也可以选 择“自定义查询”来自己编写 KSQL,这个在查询一页将有讲解。2.2.1 表表页签的作用就是选择 KSQL 中所用的表,如上图,左边列出了 EAS 中所有的 元数据,包括 bos-table 和 bos-query 两种类型。可以通过展开“+”来看每一层 下的内容,也可以通过按钮过滤,如下图:过滤后树上只显示符合过滤条件的元数据。2.2.2 链接在链接页签为表之间设置链接建立表与表的关系。如下图就是为采购订单和采 购订单分录建立的链接:(1) 建立链接:在主表中选中关联字段,按住鼠标左键一直拖到从表中关联 字段处即可。(2) 设置链接属性:选中链接(选中时,链接的颜色由黑色变为蓝色),双 击链接或右键菜单中选中链接属性,属性窗口如下图:默认的链接属性就如上图,可以根据自己需要修改。而序号的作用则是在有2 个以上链接时标明先后关系以保证构建成的 KSQL 符合需要。(3) 右键菜单:如下图,除了链接属性外,断开链接,即断开当前选中链接; 清除所有链接即清楚所有表之间的链接。2.2.3 字段字段页签功能为从已选表中选择需要的字段。如下图,左边以 2 层树状结构为 展示已选表及其字段。已选字段可以通过“”按钮或鼠标双击弹出属性窗口,如下图:(1) 名称:可以修改,修改后不影响字段的取值,该属性是做为 KSQL 里字 段的别名使用的。一般为英文。(2) 别名:这个是用来显示使用的,一般是中文。KSQL 在被调用时,看到 的字段名称即为该别名。在报表设计器中,使用表格向导时也会根据该 别名为列生成标题。(3) 表达式:字段和表是通过表达式关联上的。用户可以点击 F7 控件弹出 公式向导窗口来改变表达式,表达式可以为计算公式,例如 2 个字段相 加等。2.2.4 过滤过滤页签的功能为给 KSQL 语句增加过滤条件,即 where 语句。如下图所示, 通过表达式、比较符、比较值建立过滤条件,通过括号和逻辑符确定过滤条件 之间的层次关系。(1) 表达式:表达式的下拉列表中列出了所有的已选字段,用户可以选择使 用。另外也可以写公式作为表达式。(2) 比较值:可以直接输入,也可以在公式向导中写。默认的定位方式是:左边相对父容器左,上边相对父容器上,右边相对自身左, 下边相对自身上。不难发现,这其实就是传统的“左上高宽”的绝对定位方式。注意:在引用参数时需要根据参数的类型决定是否加上单引号,另外还需要根据不 同数据库决定是否需要一些函数处理。如上图中,因为数据库是 DB2,所以 此处在引用 String 类型的参数进行日期比较时需要加上 TO_DATE 进行转换。 该函数可以在公式向导中的函数中找到。(3) 公式向导:当光标停在表达式或比较值的单元格内时,可以点击“” 按钮打开公式向导,如下图:公式向导中左边字段栏列出了已选字段、已选表的所有字段以及参数,在写公 式内容时可以通过点击需要的字段得到表达式。函数栏列出了可以使用的函数,当选中一个函数时,在示例中可以看到该函数 的功能描述以及示例,双击函数,则函数被添加到公式中光标所在的位置。2.2.5 排序排序页签功能为给 KSQL 语句增加排序,如下图,所有已选字段都是排序条件, 如果打勾则表示按该字段排序,默认排序方式为升序。有多个排序字段时可以 通过“”按钮调整顺序,排在前面的,在 KSQL 中也是排在前面。注意:在报表设计器直接调用 KSQL 查询时,如果报表中需要做分组,则 KSQL 查 询中必须按照分组顺序设置排序。2.2.6 查询查询页签的功能为显示所构建的 KSQL 语句或者自定义 SQL。(1) 自动生成 KSQL:如下图为显示构建的 KSQL 语句,此时不能直接修改KSQL 语句:有个特殊功能是“排除重复记录”,如果选中,则会在“select”后加上“distinct”。(2) 自定义查询:如果选中左下角的“自定义查询”,得到如下界面,此时 得到的是如下图:此时的 SQL 语句是原有构建出来的,如果开始时直接选择自定义查询,就只有 最简单的“SELECT * FROM”提供。虽然是自定义查询,但仍然是 KSQL 语法,有时候 KSQL 的函数不能完全满足 需要,此时需要使用“原生态 SQL”,即在 SQL 语句前加上/*dialect*/这样的字 符串,然后就可以根据所使用的数据库的情况使用每个数据库特有的函数等。 此时 SQL 语句是直接交给数据库执行而不是通过 KSQL 执行器执行的了。注意:自定义查询必须生成“输出字段”,输出字段在查询加工那一页进入并定义, 详细内容请查看“输出字段”的介绍。2.2.7 参数参数页签的功能是定义 KSQL 查询的参数。参数是用户使用 KSQL 查询时输入 的查询信息。一般情况下都是通过过滤条件调用参数从而达到传递用户的查询信息过滤数据的目的。参数界面如下图:(1) 显示名称:显示名称可以在 KSQL 的被调用过程中一直传递下去,例如 KSQL 被设计器调用,设计器会根据 KSQL 的参数相应的生成报表参数, 根据向导为报表生成参数界面时查询条件的名称即为报表参数的显示名称,即为 KSQL 参数的显示名称。(2) 默认值:查询时查询界面上查询条件的默认值。和显示名称一样也是被 一直传递到最终使用者处。2.2.8 输出字段输出字段的功能是为自定义查询提供字段描述信息以供调用 KSQL 查询时使 用。输出字段的定义是从查询加工页(查询加工的功能现被屏蔽掉,使用不起效果) 的“输出字段”按钮进入。输出字段的界面如下图所示:可以从已选字段中或已选表中选择字段作为输出字段,也可以新增输出字段。 如下图:输出字段没有表达式,只需名称、类型和自定义查询里的字段对应上即可。2.3 交叉表数据加工交叉表数据加工的功能是“.bos-query”或 KSQL 查询的基础上进行加工把行集 数据扭转为交叉表数据。交叉表数据加工从如下位置进入:原有的数据加工包括增加计算列、结果集行拆分、结果集列合并、投影交叉、 结果集累加、结果集联合以及交叉表。EAS5.3 版本中只有交叉表加工一种,其 他加工暂时屏蔽。(1) 第一步,选择数据源:选择“新建数据加工”后,弹出如下窗口,在这 个窗口中选择需要加工的数据源:(2) 第二步,选择数据加工类型:目前只有交叉表一种。(3) 第三步,选择行上字段:选择位于行上的分组依据,可以选择多个。分组依据也可以选择 asc(升序)或 desc(降序)的排序方式,默认为升序。(4) 第四步,选择列上字段:选择位于列上的分组依据,可以选择多个。分组依据也可以选择 asc(升序)或 desc(降序)的排序方式,默认为升序。(5) 第五步,选择交叉字段:可以选择多个字段进行交叉汇总计算,界面如 下图,此处的可选字段已经过滤,只有数字类型的字段才可选:汇总方式:每个字段可以设置不同的汇总方式,汇总方式有 sum(求和)、avg(平均值)、min(最大值)、max(最大值)、count(计数),默认为 sum。交叉字段位置:默认交叉字段放在 X 轴上,即列上。如果不选则交叉字段位于 行上,不过也只有当交叉字段有 2 个或 2 个以上时才有用。2.4 JAVA 数据源报表服务平台支持通过写 java 代码的方式提供报表所需要的数据。(1) 参数: 参数的界面如下图,功能为设置该数据源所需要的参数。参数名是在 java 代码中用来取得该参数值的唯一标识。(2) java 代码:JAVA 代码界面如下图:如上图中,用户可以在数据源设计界面里写 java 代码或是输入一个 java class 路 径来指定一个数据源类。该类实现了接口 com.kingdee.bos.ctrl.data.engine.script.java.IDataProvider。该接 口声明了一个取数方法。public Object fetchData(HashMap args, IEnvProvider envProvider, IDataExecutor executorRef) throws Exception其中 args 是数据的输入参数,是存在哈希表中,其中 key 存的是参数名称,value是参数的值。envProvider 是系统的环境信息,可以通过它取到如 Bos context 的信息(”_ENV_BOS_CONTEXT”属性),Locale 的信息(”_ENV_LOCAL2_BY_BOS_CONTEXT”)。executorRef 提供用于执行外部数据的执行器,比如可以通过该接口去执行一个KSQL 对象。例子代码如下所示:package com.kingdee.bos.ctrl.report.forapp.eas;import java.sql.Connection; import java.util.HashMap; import java.util.Map;import com.kingdee.bos.Context;import com.kingdee.bos.ctrl.data.engine.script.java.IDataProvider;import com.kingdee.bos.ctrl.data.invoke.IDataExecutor; import com.kingdee.bos.ctrl.data.invoke.IEnvProvider; import com.kingdee.bos.framework.ejb.EJBFactory;import .OrgType;import .OrgUnitCollection;public class MyDataProvider implements IDataProviderpublic Object fetchData(HashMap arg1, IEnvProvider arg2, IDataExecutor executorRef) throws Exception/ bos contextContext bosCtx = (Context) arg2.get(_ENV_BOS_CONTEXT); Connection conn = EJBFactory.getConnection(bosCtx);/ eas report contextMap rpt_ctx = (Map) arg1.get(CONTEXT);if (rpt_ctx != null)OrgUnitCollection orgs = (OrgUnitCollection) rpt_ctx.get(easOrgs); System.out.println(current orgs: + orgs);OrgType orgType = (OrgType) rpt_ctx.get(easOrgType); System.out.println(report orgType: + orgType);String cu = (String) arg1.get(cu);if (cu !=null) & !cu.equals()return conn.createStatement().executeQuery(SELECT fnumber,fname_l2,fcreatetime, + fcontrolunitidfrom t_bd_accountTable + where fcontrolunitid=+cu+);return conn.createStatement().executeQuery(SELECT fnumber,+ fname_l2,fcreatetime,fcontrolunitid from t_bd_accountTable );(3) 输出字段:输出字段界面如下图:编辑好 java 代码(或是指定 class 路径)后必须建立输出字段,否则在报表设计 器总引用该数据源时无法得知可用的字段。2.5 自定义数据表(EAS5.3 版本中暂时屏蔽掉该功能)主要用来制作数据比较固定的数据表。自 定义数据表设计器如下图所示:它分为列编辑、行编辑 2 页,列编辑即为数据表增加列,行编辑即为数据表的 每一行输入数据。2.6 多维数据集(立方体模型)多维数据集或叫做立方体模型主要用来做多维报表。(EAS5.3 版本中暂时屏蔽 掉该功能,不能新增,但原有的还可以进行编辑以及执行)可以引用 KSQL 查询、数据加工、“.bos-query ”等数据作为事实表或纬度表。 在其设计器中用户可以建立事实表、维度。2.6.1 Olap 模型介绍Olap,Online Analysis Process,即联机分析处理, 采用直观的多维数据模型, 使用户很容易就能选择、浏览和研究数据,客户端应用程序对多维层级数据进 行高效率访问的一种技术。提供分析查询语言为研究复杂的业务数据关系提供 了强大功能。立方体模型 Cube,即立方体,多维数据模型,是 Olap 分析的数据模型,由多个维度构 造出的多维立方架构和度量值组成,多维度的交点,即立方体的单元格,对 应一个度量值。Dimension,即维度,分析问题的视角,如产品。维度具有层级结构,由多 个级别组成,每个级别挂有多个成员,因此,一个维度结构是一个树状结构(当然,如果只有一个级别,那就是扁平结构),每个节点带一个成员。Level,即级别,构成维度的层级结构,如产品可能有两个级别:产品分类、 产品名称。Member,即成员,表示维度的项目值,构成了维度的坐标。每个成员属于 且只属于一个级别。Member Key,即成员键值,表示成员值本身数据。如科目编码。Member Name,即成员名称,表示成员的名称,可以与成员键值相同。如 科目名称。Member Caption,即成员别名,表示成员的别名,可以与成员名称相同。如 语种相关的科目名称。Member Property,即成员属性,表示成员的属性,每个成员可以有多个属 性。Measure,即度量值,表示分析指标,如销售额,销售数量,一个立方体包 括一个或一个以上的度量值,所有度量值组成一个特殊的维度,即度量维(Measures),度量维是扁平结构,其成员就是度量值,度量值本身是一个Member。Aggregator,即聚集函数,每个度量值必须定义一个聚集函数,聚集函数表 示在构造立方体数据时,度量值如何从低维度级别汇总到高级别。常见的聚 集函数包括: Sum(求和),Max(最大值),Min(最小值),Avg(平均值), Count(计数)。 立方体建模术语事实表,建立立方体的事实数据,包括度量字段,以及与维度表的关联字段。 用来定义度量值和关联关系。 维表,建立维度的数据,包括维度的必要信息,以及与事实表关联字段。2.6.2 设计器概述通过立方体模型设计器,采用向导方式,可以直观、容易地设计出一个多维立 方体模型。设计一个立方体模型,主要有两个步骤:(1)通过立方体向导选择事实表,定义度量值。(2)通过维度向导选择维度表,定义级别,定义维度表和事实表的关联。维度有三种类别,标准维度、时间维度、父子维度。 标准维度:除时间维度、父子维度外的。维度级别需要手工定义。时间维度:含有时间字段,并使用时间字段作为维度成员的数据,可以通 过系统预定的层级关系定义级别,如直接选择层级关系(年/月,年/季/月等), 简化了定义级别操作。时间维度作为一个特殊维度,在 Olap 分析中具有非 常重要的作用,因为很多业务分析是基于时间序列基础做的,如同期比等。 父子维度:与前面两种不同,父子维度的层级关系是通过值确定的,而不 是预先定义出来的。比如组织结构、财务科目等。父子维度中,可以通过两 个代表父子关系的列来定义父子关系(如 id 和 parentid),也可以通过编码 规则施加在单列中定义父子关系(如通过“.”号)。先决条件:数据准备 在定义立方体模型前,需要定义相应的数据,数据定义一般表现为元数据,立方体模型设计器不能单独运行,必须运行在一定的数据环境中,才可以选择事 实表和维表。报表服务中,可以使用 BOS 元数据、KSQL 数据加工等行集数据 源。2.6.3 立方体向导在工具条中选择“新建数据新建多维数据集”进入立方体模型设计器主界面, 如下图:选中“立方体模型”,鼠标右键菜单选择“新建立方体模型”,弹出立方体向导:选择一个数据源作为事实表,点击下一步:定义度量值,选择数字列,作为度量值。可以修改度量名称(写 MDX 时引用 该名称)和度量别名(别名将在执行时用来显示);可以在下拉框中选择聚集函数;直接修改显示格式或点 F7 弹出如下窗口修改里修改:定义完毕,点击下一步:输入立方体名称(名称将在写 MDX 时使用)和立方体别名,点击完成。事实 表和度量值定义完毕,回到主界面:2.6.4 维度向导定义好事实表后开始定义维度。在纬度节点鼠标右击,选择菜单“新建维度”, 弹出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论