采集模型

阅读(3198) 标签: 维度格, 数值格, 字段, 分片,

一般来说,维度格和数值格即为字段值,普通格为字段名。

自动计算的数值格由其他数值格计算而来,可用于展现计算结果,也可用于数据采集及数据回填。

我们会自动对数据分片处理,每片形成一个序表(序表可以理解为一个数据表)。通常行列上连续的一片数值格(连同对应的维度格)会被当做一片;连续的多行(两行以上)中,只有数值格,没有维度格和非空普通格并且左右没有合并格的会被当做自由增删行的行式分片;除了这些分片以外的单值数据(维度格、数值格)将被拼到一个一行记录的序表中。

填报表样式是多种多样的,可以是交叉分片式的,也可以是行式的,还可以是自由式的,那么,如何分片,如何取数,润乾报表的填报采集程序都能自动识别完成。

数据采集

字段名采集

数值格和维度格在没有设置字段名称属性时,字段名认定规则为:

针对扩展后表格,取上(左)同宽(高)的普通格的内容作为其字段名

 

1

 

B1D1分别以其左的A1C1的内容作为字段名;

A4B4C4D4A5B5C5D5分别以其上的A3B3C3D3的内容作为字段名。

2

B1,D1,F1以其左等高的A1单元格内容为字段名,其字段名为年份;

A3,A4,A5以其上等宽的A2单元格内容为字段名,其字段名为客户;

A7,A8,A9以其上等宽的A6单元格内容为字段名,其字段名为地区;

BDF列的数值格字段名为数量,CEG列的数值格字段名为金额。

 

同序表采集

填报数据采集程序会自动将数值格对应的维度格字段名相同的视为同一对象,也可称为序表。

对象名相同的单值数据(维度格、数值格)将被拼到一个只有一行记录的序表中;对象名不同时,单值数据会被拼到不同序表。单行数据的序表里的维字段为公共维,默认会自动拼入数据区其他多行数据的序表中。

1

扩展后的结果如下图:

数值格B3对应的维度格的字段名有:地区,年度

数值格C3对应的维度格的字段名有:地区,年度

因此,地区,年度,金额,数量组成一个序表。分片结果如下图:

对于行式填报表,只支持纵向分片,同一片区域通常都是一行普通格和连续至少两行数值格组成。

2

1,2,3行组成了一个行式表格区,这个序表由CLASSSTUDENTIDSUBJECTSCORE几个字段组成,分片结果如下图:

3

编号、姓名、性别、出生日期、入职日期、部门、籍贯、工资和应发工资组成为一条记录的序表,分片结果如下图:

编号、姓名、关系、性别和年龄为一个序表。分片结果如下图:

4

数值格C2,C3,C4,C5对应的维度格的字段有:年份,地区

数值格E2,E3,E4,E5对应的维度格的字段有:年份,地区,状态

因此,此例分成了两个序表,一个由年份,地区,气温字段组成,一个由年份,状态,成交额字段组成,分片结果如下图:

 

5

扩展后:

此例分成了两片,第一片序表由字段a,b组成。一行中所有的维度格都会给右边的对象用,因此第二片序表由字段acd组成。 分片结果如下图:

 

6

此例指定了2个对象名所以分成了两片,一片是由字段职称名称、教师姓名、开课、研究项目和是全兼职组成的表t1,一片是由字段职称名称和教师姓名组成的表t2。分片结果如下图:

 

如果不指定对象名或者对象名相同,由于t2的字段名称和t1的字段名称一样,会使得t1t2合并成一个对象。如下一个例子。

7

此例的两片同维,序表名字同名,都是t1,则两片合并为一个序表。分片结果如下图:

 

同记录采集

同一分片中,维度值不同的作为不同记录,维度格和数值格的内容作为相应字段值。

1

地区,年度,金额,数量组成一个序表,扩展后B1A3B3C3单元格的值都是该序表的字段值;

地区,客户,金额,数量组成一个序表,扩展后B1A5B5C5单元格的值都是该序表的字段值。

2


3

2和图3是图1扩展后的效果,选中单元格背景色对应显示高亮的即为同一条记录,单元格的内容即为相应的字段值。

对于行式填报表,同一片区域中,数值格区域同一行即为同一条记录,数值格的内容作为相应的字段值。

4

5

如图5中,每一片区域中数值格区同一行的数值格被认为是同一条记录,数值格的内容作为相应的字段值。

取数表达式

润乾报表填报采集程序会非常智能的认定字段名,认定哪些格子归属同一个序表,同一条记录,那么这些序表的数据如何在报表里取得,填好的数据又如何取得以方便用于回填呢?

制作一个完整的填报表有三部分组成:

如果填报表展现空数据,取数spl文件可以省略。

如果用到了取数spl文件,那么在这个spl文件中,需要将返回给报表的序表赋值给一个变量,一个取数spl文件可以返回多个变量,可以是序表变量,维序列和下拉序表。当填报表引入该取数spl后,在填报表中可以通过“变量名.字段名称”的方式引入序表变量,通常可以在同一序表片区的任意一个普通格格值或数值格的字段名称属性里引入,程序根据这个变量名在填写前将结果集的数据填入表格中。

1

1为取数spl文件的内容,返回scoreclass两个变量,每个变量为一个序表。

2

维度格的表达式返回值为没有重复成员的序列,可以由取数spl或者脚本直接返回维序列变量,也可以由一个序表变量计算而来,也可以直接在单元格里定义,单值数据只对应一条记录,因此单值数据中的维度格表达式返回单值。维度格表达式语法遵循集算器脚本语法。

2为填报表sht文件的内容,当填报表引入图1中的取数spl后,在填报表的红色标记区域的任意一个普通格通过“score.”引入score序表。如果不希望变量名在普通格显示出来,可以给任意一个数值格设置字段名属性,比如为C5设置字段名称属性为“score.SCORE”。

其中,C3A5是维度格,维度格的内容由序表变量score计算而来。

如果填报表只用来填报不需要展示数据,那么为了方便获取回填的数据集,也需要如上图所示方式写上变量名,以此标记这块区域对应的序表。

当页面填写好数据后,用于回填数据的spl可以通过这个变量名获取填写后的序表。

3

3为回填数据的spl文件的内容。页面填写的数据通过变量score传给回填数据spl,回填数据spl中通过对变量内容处理更新到数据库中。此时序表变量score为填写后的数据集,如果要获取填写前的数据集,必须在数据处理里设置要保存对象的旧数据,设置办法可以参考《用户参考》数据处理小节中关于保存对象的旧数据部分。比如上例将score的旧数据保存为score_old,那么在回填spl里就可以通过这个变量获取填写前的数据集。

4

4中,维度格使用表达式,数据来自于spl

5

5中,维度格直接在单元格里定义,只取STUDENTID13的数据。