报表引擎 - 数据模型

介绍

本文档是报表模型的数据模型部分,说明平台报表中涉及的报表数据相关

术语

名称

说明

数据源

数据源是与数据存储的连接。支持数据源适配

数据集

定义报表数据来源的一个二维表

参数

报表往往有参数,例如,日报表,当我们希望生成一张日报表时,首先需要向报表传递日期参数,然后报表才会根据我们传递进去的日期参数,生成该日的日报表。

当前单元格

在进行单元格计算时,写有表达式的单元格为当前单元格。条件表达式中有?单元格表达式都是以当前单元格为基准计算

目标单元格

表达式中返回单元格时,返回的单元格为目标单元格。条件表达式中单元格表达式都是以目标单元格为基准计算

参数

  

报表往往有参数,例如,日报表,当我们希望生成一张日报表时,首先需要向报表传递日期参数,然后报表才会根据我们传递进去的日期参数,生成该日的日报表。
参数有以下几个特征:
1、  参数有数据类型
2、  参数有缺省值
3、  参数有输入格式和最大宽度
参数可以在数据集和表达式中被引用,表达式中直接写参数名引用,

  

宏代表没有数据类型的一个字符串,在报表运算时将用宏值替换宏变量所占的位置。可以在报表中任何位置引用宏变量,如单元格值、表达式、数据集定义、单元格属性表达式中等,引用方法为%{宏变量名}

表达式计算阶段

表达式分为在扩展期间和分页期间计算,和页眉相关的表达式在分页阶段计算,如页码、页数等。系统会对自动判断表达式的计算阶段

操作符

符号

说明

左操作数

右操作数

运算结果

示例说明

:

单元格

单元格

List 集合

A1:D5 由A1和D5为两个对角点圈起的矩形中的单元格集合,可以使用在sum,max 等聚集函数中作参数

in

包含

数值
字符串

List 集合

布尔值

A1 in (1,2,3) 是否在集合中左右操作数均可为单值或数组,如  1 in A1{00}[] 表示1是否存在00格下A1的扩展格子的值列表中

to

整数

整数

List 集合

1 to 5表示数组,等同于[1,2,3,4,5]

.

对象成员

数据表

字段

字段值

RKD.RKDID表示表入库单的ID字段

?

参数表达式

单元格

  

当前单元格值

单元格条件过滤时,用参数表达式来获得当前单元格的值。

@

系统宏

  

  

  

@value表示当前单元格值,@row,@col表示当前单元格行列号,@DRow,@DCol表示设计期单元格行列,@pageIndex代表当前页码,@pageCount代表总页数

表示日期类型,@为字符串第一个子目,其余为日期字符串

日期

  

日期

'@2000-1-1':表示2000年1月1日

{}

选择条件表达式

字符串

  

  

C5{A5:1}层次坐标中的条件表达式
C5{A5:1}[]表示该层次坐标中的所有目标单元格,代表一个集合

[]

集合

过滤条件以及排序或者数组位置

  

  

[1,2,3,4]:表示一个元素为1,2,3,4 的数组
CKD.CLID[DJ>10]:表示材料出库单的单价大于10的CLID字段列表
CKD.CLID[DJ>10|CLMC]:表示材料出库单的单价大于10的CLID字段列表,列表根据材料名称排序 。只有数据集支持排序,单元格目前不支持。
CKD.CLID[|CLMC ACS;CLJG DESC]:表示材料出库单的所有CLID字段列表,列表根据材料名称顺序,材料价格倒序
A1[2]表示集合单元格A1中的第2 个元素。CKD.CLID[2]取出库单的第二行材料ID值
C5[C5>60][2]标识及格分数列表的第2个元素

&

取位置

主单元格

  

&A1

操作数必须为当前单元格的主格子,位置从1开始

%

引用参数

参数标识

  

参数数据类型

在元数据定义参数列表,%year表示外面传入的年份参数

集合函数

其他

表格运算示例

当前单元格

表达式

应用场景

备注

B1

A1+10

同级别单元格赋值,比如A1为表的一个字段,把B1设置成A1的值加10

A1/B1为同级单元格

  

&A1

位置:序号

A1为扩展单元格

  

ds1.id[type=B1]

数据级函数的选择条件,取type字段=B1的所有记录的ID字段

  

B2

avg(B1[B1<60])

条件表达式,求不及格的平均分

B1为成绩

C3

C2/sum(C2{00}[])

根坐标:占比运算

计算当前C2格占C2合计的百分比

  

Count(b2{00}[b2>$b2])+1

排名

B2为数值单元格

  

D2/D2{A2:+0}[(?c2-1)==C2 and ?b2=B2) or ((?b2-1)=B2 and ?c2=4 and C2=10)]

比上期

  

  

D2/D2{B2:-1,C2:+0}

比去年同期

  

  

C2+D2{-1}

累计金额

C2为合同金额,D2为累计金额

约束

页面宏

  1. 不能影响扩展过程:不能在集合表达式中使用

页统计

  1. 页统计表达式只统计单元格集合表达式

算法说明

单元格变量

  1. 如果没有设置左主格和上主格,先查找目标单元格和当前单元格共同的左主格l和上主格t
  2. 如果左主格的源格为目标单元格,则返回左主格l;如果上主格的源格为目标单元格,则返回上主格t
  3. 如果左主格的源格L为目标单元格的直接左主格,在l单元格的附属格中查找与目标单元格匹配的单元格c,如果单元格的上主格属于t,则返回单元格c;上主格按左主格方法查找
  4. 如果左主格源格L是目标单元格的间接左主格,在l单元格的附属格中查找是目标单元格的递归左主格的单元格c,然后把左主格设置为c再次调用步骤4直到满足条件3而调用3获取单元格值

单元格列表

  1. 查找目标单元格和当前单元格共同的左主格l和上主格t
  2. 如果左主格的源格为目标单元格,则返回左主格l;如果上主格的源格为目标单元格,则返回上主格t
  3. 如果左主格的源格L为目标单元格的直接左主格,在l单元格的附属格中查找与目标单元格匹配的单元格c,如果单元格不是扩展格,并且上主格属于t, 则返回单元格c,如果单元格c为扩展格,则查找c的ExtCells中的上主格属于t的单元格列表;如果没有符合条件的单元格,则按照3从上主格开始查找 并返回符合条件的单元格

如果左主格源格L是目标单元格的间接左主格,在l单元格的附属格中查找是目标单元格的递归左主格的单元格c,然后把左主格设置为c再次调用步骤4直到满足条件3而调用3获取单元格列表

 

更多内容:productView-pdf_46x35.gif  报表引擎设计.pdf

 

欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]

转载于:https://www.cnblogs.com/zhoujg/archive/2009/11/17/1604261.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分层架构web容器的配置安全

转自&#xff1a;http://hi.baidu.com/shineo__o/item/7520d54c24d234c71081da82 /ps:本以为这是一个偶然配置失误造成的问题&#xff0c;但最近几天无聊时测试发现&#xff0c;有此类似问题的站点就有上百个&#xff0c;所以在这里粗糙总结一下&#xff01; 通常我们会碰到这样…

Jenkins-Gitlab配置方法

1&#xff09;本机首先安装好git软件2&#xff09;然后安装gitlab插件,在可选插件中查找gitlab,点击直接安装3&#xff09;然后进入系统管理-系统设置 首先进入Gitlab中复制需要的 token 值在 Profile Settings - Account把复制的值&#xff0c;复制到新增页面中转载于:https:…

高速缓冲存储器的功能、结构与工作原理

2.3 高速缓冲存储器&#xff08;Cache&#xff09; 2.3.1 高速缓冲存储器的功能、结构与工作原理   高速缓冲存储器是存在于主存与CPU之间的一级存储器&#xff0c; 由静态存储芯片(SRAM)组成&#xff0c;容量比较小但速度比主存高得多&#xff0c; 接近于CPU的速度。 Cache…

spring集成RabbitMQ配置文件详解(生产者和消费者)

1&#xff0c;首先引入配置文件org.springframework.amqp&#xff0c;如下&#xff1a; <dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-rabbit</artifactId><version>1.7.1.RELEASE</version></de…

Multiverse: Revolutionary Backend for Alembic // Multiverse: 下一代Alembic后端

J CUBE&#xff0c;日本最大的动画公司Polygon Picture&#xff08;以下简称PPI&#xff09;公司成立的专职R&D公司隆重推出Multiverse&#xff0c;下一代Alembic存储后端。 我们还开发了针对Autodesk Maya的工具&#xff0c;运用Multiverse在流程中。 "multiverse&qu…

近半年能力没进步原因分析与求助

2019独角兽企业重金招聘Python工程师标准>>> 20180907 思维方式有缺陷&#xff0c;想到的解决方法经常不是最有效率的。导致工作时间内基本没自由学习的时间。 业余时间不够专注&#xff0c;学习方向经常变&#xff0c;没能坚持搞透一个点就换书看&#xff0c;没有总…

windows下安装Redis并部署成服务

文章来源&#xff1a;https://www.cnblogs.com/weiqinl/p/6490372.html windows下安装Redis并部署成服务 Redis 是一个开源&#xff08;BSD许可&#xff09;的&#xff0c;内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。 一&#xff1a;下载 下载地…

.net core高性能通讯开源组件BeetleX

BeetleX beetleX是基于dotnet core实现的轻量级高性能的TCP通讯组件&#xff0c;使用方便、性能高效和安全可靠是组件设计的出发点&#xff01;开发人员可以在Beetlx组件的支持下快带地构建高性能的TCP通讯服务程序&#xff0c;在安全通讯方面只需要简单地设置一下SSL信息即可实…

按组排名

rank() over,dense_rank() over,row_number() over的区别 1.rank() over&#xff1a;查出指定条件后的进行排名。特点是&#xff0c;加入是对学生排名&#xff0c;使用这个函数&#xff0c;成绩相同的两名是并列&#xff0c;下一位同学空出所占的名次。 select name,subject,sc…

[FxCop.设计规则]13. 定义自定义属性参数的访问属性

13. 定义自定义属性参数的访问属性 翻译概述&#xff1a; 一个比较无聊的规则&#xff0c;实在看不出在什么情况下&#xff0c;一个开发者会做出违反这条规则的设计。没有别的内容&#xff0c;只是说应该为自定义特性的构造函数中的参数提供一个相关的属性去读取它们的值。…

centos7安装Cloudera Manager

第一部分&#xff1a;准备工作一&#xff0c;修改hostname $vim /etc/sysconfig/network $source /etc/sysconfig/network例如&#xff1a; NETWORKINGyes HOSTNAMEspark01reboot重启服务器 二&#xff0c;关闭selinux查看SELinux状态1&#xff0c;/usr/sbin/sestatus -v #如果…

Grove——.NET中的ORM实现

Grove——.NET中的ORM实现 发布日期&#xff1a; 6/30/2005| 更新日期&#xff1a; 6/30/2005作者&#xff1a;林学鹏 ORM的全称是Object Relational Mapping&#xff0c;即对象关系映射。它的实质就是将关系数据&#xff08;库&#xff09;中的业务数据用对象的形式表示出来&a…

[book]道法自然

前不久读了王咏刚的〈凌波微步〉和〈凌波微步II〉&#xff0c;感觉不错。今天把他老人家的《道法自然》也买了下来。在dearbook看到关于这本书的长篇大评&#xff0c;也一块copy了下来&#xff1a;http://www.dearbook.com.cn/book/viewbook.aspx?pnoTS0023954认真的作者&…

列表嵌套字典,根据字典某一key排序

在返回列表嵌套字典时候&#xff0c;往往需要对数据进行一定的处理&#xff1a;按照字典中某一个key排序 In [87]: a [{"name": "牛郎", "age": 23},{"name":"许仙", "age": 20},{"name":"董永&q…

写出C语言中5种数据类型的名称及其关键字,求C语言中的32个关键字及其意思?...

关键字如下&#xff1a;一、数据类型关键字(12个)&#xff1a;(1) char &#xff1a;声明字符型变量或函数(2) double &#xff1a;声明双精度变量或函数(3) enum &#xff1a;声明枚举类型(4) float&#xff1a;声明浮点型变量或函数(5) int&#xff1a; 声明整型变量或函数(6…

想要设计自己的微服务?看这篇文章就对了

欢迎大家前往腾讯云社区&#xff0c;获取更多腾讯海量技术实践干货哦~ 本文由我就静静地看 发表于云社区专栏 本文通过使用Spring Boot&#xff0c;Spring Cloud和Docker构建的概念验证应用程序的示例&#xff0c;为了解常见的微服务架构模式提供了一个起点。 该代码在Github上…

mysql 开发进阶篇系列 41 mysql日志之慢查询日志

一.概述 慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒&#xff09;&#xff0c;获得表锁定的时间不算作执行时间。慢日志默认写入到参数datadir(数据目录)指定的路径下。默认文件名是[hostname]_slow.log&#xff0c;默认超时是10秒&#xff0c;默认不开…

分数相同名次排名规则C语言,如何给数据排名(相同分数相同名次)-excel篇

使用Rank函数来做数据排名该函数是返回一个数值在一个数字列表中的排名。语法&#xff1a;RANK(number,ref,order)RANK(对象,范围,参数)number(必填参数):是特定单位格中的数据&#xff0c;需要在整个数字列表中排名的单个对象。ref(必填参数):是指需要排名的整体数列。即范围&…

MySql的连接查询

若一个查询同时涉及到两个或者两个以上的表&#xff0c;则称之为连接查询。常见的包括&#xff1a;等值连接查询&#xff0c;自然连接查询&#xff0c;非等值连接查询&#xff0c;自身连接查询&#xff0c;外连接查询&#xff08;左右连接&#xff09;。 1.等值与非等值连接查询…

qt运行C语言后无显示,qt designer启动后不显示界面问题的原因与解决办法-站长资讯中心...

Qt 5.6.1无论是在vs里双击ui文件还是直接启动designer.exe都一直无法显示界面&#xff0c;但任务管理器中可以看到该进程是存在的。前几天还正常的&#xff0c;但昨天加了一块NVIDIA的显卡(机器自带核显)&#xff0c;可能与此有关。幸好还可以通过QtCreator打开ui文件进行编辑。…