報表引擎 - 數據模型

介紹

本文檔是報表模型的數據模型部分,說明平臺報表中涉及的報表數據相關

術語

名稱

說明

數據源

數據源是與數據存儲的連接。支持數據源適配

數據集

定義報表數據來源的一個二維表

參數

報表往往有參數,例如,日報表,當我們希望生成一張日報表時,首先需要向報表傳遞日期參數,然后報表才會根據我們傳遞進去的日期參數,生成該日的日報表。

當前單元格

在進行單元格計算時,寫有表達式的單元格為當前單元格。條件表達式中有?單元格表達式都是以當前單元格為基準計算

目標單元格

表達式中返回單元格時,返回的單元格為目標單元格。條件表達式中單元格表達式都是以目標單元格為基準計算

參數

 ?

報表往往有參數,例如,日報表,當我們希望生成一張日報表時,首先需要向報表傳遞日期參數,然后報表才會根據我們傳遞進去的日期參數,生成該日的日報表。
參數有以下幾個特征:
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.pswp.cn/news/277347.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277347.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277347.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 刪舊內核,Ubuntu 刪除舊內核的方法

使用Ubuntu時如果系統里安裝了很多內核&#xff0c;會造成多于的啟動列表。想刪掉一些不用的內核方法如下方法一&#xff1a;首先就是使用如下命令&#xff0c;列出所有安裝的內核&#xff0c;下表中&#xff0c;帶有p_w_picpath的就是內核文件。從中選擇要卸載的包&#xff0c…

L2-014 列車調度(隊列模擬:set)

題意&#xff1a; 兩端分別是一條入口&#xff08;Entrance&#xff09;軌道和一條出口&#xff08;Exit&#xff09;軌道&#xff0c;它們之間有N條平行的軌道。每趟列車從入口可以選擇任意一條軌道進入&#xff0c;最后從出口離開。在圖中有9趟列車&#xff0c;在入口處按照{…

新架設了一個CVS服務器 --by yp

cvs是個代碼管理的好東東&#xff0c;全稱并發版本控制。不知道的上網查一下資料。 我下載了相關的部分資料和軟件&#xff0c;包括架設服務器的軟件和使用服務的客戶端軟件&#xff0c;都是windows平臺下可用的&#xff0c; 其他平臺下的我都沒下載&#xff0c;因為不會用。在…

@hdu - 6372@ sacul

目錄 descriptionsolutionaccepted codedetailsdescription 定義矩陣 \(A_i\) 是一個大小為 \(p^i*p^i\) 的矩陣&#xff0c;其中 \(p\) 是第 \(c\) 個素數&#xff08;c 給定&#xff09;&#xff0c;且 \(A_i[x][y] [C(x, y) \mod p > 0]\)&#xff08;其中 C(x, y) 是組…

實驗室里人越來越少啊!

研二下半學期了。研三的師哥師姐們都忙著找工作&#xff0c;有的已經去工作了。只是偶而來實驗室轉轉。研一的師弟師妹&#xff0c;現在還都有課&#xff0c;實驗室也沒他們的機器&#xff0c;所以幾乎不來實驗室。我們研二的有四個人&#xff0c;兩個北京的。其中一個在外面打…

在一臺機器上搭建多個redis實例

默認Redis程序安裝在/usr/local/redis目錄下&#xff1b; 配置文件&#xff1a;/usr/local/redis/redis.conf&#xff0c;該配置文件中配置的端口為默認端口&#xff1a;6379&#xff1b; Redis的啟動命令路徑&#xff1a;/usr/local/bin/redis-server。 可以指定端口啟動多個R…

2年前 影子

1. 請問您知道 xxxx嗎 ? 麻煩了您? 2. 您在公司待了多長時間了&#xff1f; 3. 您覺得公司怎么樣&#xff1f; 。。。。。。 待續&#xff01; 轉載于:https://www.cnblogs.com/nucdy/p/11151470.html

linux是只讀添加 來覆蓋,Linux之指令 重定向 文件覆蓋和文件追加

CXF支持 SOAP1&period;1 SOAP1&period;2協議SOAP協議分為兩個版本 1.1 1.2 默認支持1.1 實現方式: 1.編寫接口 import javax.jws.WebService; WebService public inte ...USACO Section 2&period;4&colon; Bessie Come Home因為題目給了邊的信息,所以比較…

分層架構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…

洛谷 P1417 烹調方案 (01背包拓展)

一看到這道題就是01背包 但是我注意到價值和當前的時間有關。 沒有想太多&#xff0c;直接寫&#xff0c;0分 然后發現輸入方式不對…… 改了之后只有25分 我知道wa是因為時間會影響價值&#xff0c;但不知道怎么做。 后來看了題解&#xff0c;發現我對01背包理解不夠透徹普通0…

LeetCode 77.組合求和

給定一個無重復元素的數組 candidates 和一個目標數 target &#xff0c;找出 candidates 中所有可以使數字和為 target 的組合。 candidates 中的數字可以無限制重復被選取。 說明&#xff1a; 所有數字&#xff08;包括 target&#xff09;都是正整數。解集不能包含重復的組合…

18函數對象19command模式20函數對象在STL中的應用

Item 18. Function ObjectsItem 19. Commands and HollywoodItem 20. STL Function Objects1、unction Objects是什么函數對象聽起來挺嚇人&#xff0c;其實并不神秘&#xff0c;它也是一個類的對象&#xff0c;只不過該類重載了操作符(),使得對象使用以來跟函數一樣。class Fi…

linux df命令功能,Linux df命令簡要介紹

日常工作生活中&#xff0c;我們常需要查看系統當前的磁盤空間使用情況。在windows下&#xff0c;只需簡單點擊我的電腦&#xff0c;就看到帶進度條的系統磁盤使用情況&#xff0c;非常直觀。那linux命令行下如何實現同樣的功能呢&#xff1f;這就是我們今天要介紹的df命令。df…

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…

一天的學習成果:hash輸出,dcache工作原理,include的home directory,fist optype的含義...

最先獲得突破的是解決了下午的崩潰問題。其實原因很簡單&#xff0c;我聲明了一個unsigned int型指針&#xff0c;但是沒有給它分配空間…… 解決了這個問題之后就很簡單了&#xff0c;調用定義在linux/dcache.c文件中的full_name_hash函數對文件名進行hash計算。這里發現了一個…

linux顯示fio為非法指令,FORTRAN運行錯誤消息列表中英對照.doc

FORTRAN運行錯誤消息列表中英對照Fortran的運行時錯誤消息列表本節列出了英特爾Fortran運行時庫(RTL)處理的錯誤。對于每一個錯誤&#xff0c;該表提供了錯誤號&#xff0c;嚴重性代碼&#xff0c;錯誤信息文本&#xff0c;條件符號名稱&#xff0c;而錯誤的詳細說明。在程序中…

各種證書

軟考高級信息系統項目管理師https://www.zhihu.com/question/29904891 轉載于:https://www.cnblogs.com/trumbull/p/11154514.html

linux面試題中的簡答題,[計算機]linux面試題簡答題部分.doc

[計算機]linux面試題簡答題部分linux面試題(簡答題部分)2 簡述進程的啟動、終止的方式以及如何查看進程&#xff1f;答&#xff1a;啟動進程的方式分為手動啟動和自動啟動兩種方式,其中手動啟動的方法用services 服務名 start;或者是./腳本名稱,自動啟動進程的方法有將進程服務…