极速报表:关联实体配置
版本信息
产品版本 | 更新内容 | 更新日期 |
V5.0.023 | 1、新增了关联实体配置; 2、新增了汇总行显示的控制; 3、新增了分隔过滤条件的接口; | 2023年06月29日 |
1、新增了:关联实体配置
1.1、系统路径
【供应链云】→【业务设置】→【极速报表】 →【报表关联实体配置】
1.2、内容介绍
增加了一个配置界面,用于配置多个实体JOIN后形成一个整体的数据源,在报表配置中作为数据源配置,参与报表数据计算。如下图:
1.3、关键字段介绍
序号 | 面板 | 字段 | 介绍&约束 |
1 | 基本信息 | 编码 | 必录,配置的英文编码标识,全局唯一 |
2 | 名称 | 必录,配置的多语言名称标识 | |
3 | 字段库 | 必录,用于标识配置使用哪个字段库作为字段集进行配置 | |
4 | 系统预设 | 默认为false,不可编辑。发布预置数据时,按需设置。 | |
5 | 加载策略 | 选项: 1-推送关联条件(默认) 2-不推送条件 影响点,详见看配置介绍 | |
6 | 实体查询SQL | / | 用于输入实体查询的SQL。影响点,详见看配置介绍 |
7 | 映射配置 | 字段库字段标识 | 字段库元数据上字段的标识,切换字段库是,会自动清空,重新加载字段库全部字段 |
8 | 字段库字段名称 | 字段库元数据上字段的名称 | |
9 | 来源字段标识 | 可点击选中字段,确定后,返回英文标识,可以为空 | |
10 | 来源字段名称 | 来源字段标识对应的名称,是全路径名称,自动带出 | |
11 | 默认值 | 不选择来源字段标识时,可以配置默认值,也可以不配置 | |
12 | 默认值说明 | 自定义描述,默认值代表什么意思 | |
13 | 创建信息 | / | 略 |
1.4、关键功能和配置介绍
1.4.1、实体查询SQL:
这里是基于实体对象,用类似SQL的方式来做查询,作为一个整体的来源数据。这里SQL语法支持有限,也没有必要严格完整的SQL语法支持。掌握下面几点即可:
仅支持select 。。。from 。。。[join 。。。]
字段必须使用实体字段标识,字段要数据库字段,分录命名必须有分录标识前缀。如:分录上物料ID,即billentry.material.masterid
多表关联时,仅支持inner join、left join关联。
表必须有别名。如:im_purinbill t1 那么相应的字段,也必须使用有表别名前缀,如:t1.billno,别名不需要用as。
on条件中,仅支持and拼接,条件仅支持=号,且多条件时,不支持跨第3个表,如:on t1.a = t2.a and t1.b = t3.b ,t3必须是t2。
全文必须是英文,且小写,不要使用特殊符号。
注意:没有写过SQL的相关人员,可以百度了解SQL相关语法。
1.4.2、映射配置:
在设置映射配置前,系统会先检查是否执行过测试SQL操作,给出一定的提示。校验通过,则可选字段为查询SQL中的SELECT字段。默认值的使用,参考字段映射配置。原理一致。
字段映射是将字段库与查询字段建立关系,在查询、过滤时起着关键作用。
1.4.3、加载策略:
加载策略:分为推送关联条件、不推送条件2中,选择推送条件时,SQL加载数据时采用Algo加载,并且会将驱动表的on条件,推送到关联表,提升查询效率(不是绝对的)。选择不推送条件时,则不会推送条件,直接使用AlgoX加载数据。
推送条件:适合小表驱动大表,比如单据A关联单据B,单据A作为主表,用户条件对单据A有比较好的数据筛选。但是对内存要求高些。
不推送条件:适合大表驱动小标,必录单据A关联某个小的基础资料C,即使全表查询C也性能OK。
若都是大表关联大表,而且两个表都是没有好的筛选条件,此时要反过来看业务,这么做是否合适,数据结构不做任何改变,谁也没好办法。
1.4.4、测试SQL:
在编写完查询SQL后,可以点击测试SQL,操作会对SQL进行2层校验:
基本语法校验,但不符合语法要求时,会有相应的错误提示。语法通过后,程序会自动重写SQL。
根据重写的SQL,进行模拟查询。若ORM无法执行将会直接抛出异常界面,此时,相应的开发,要自己根据异常信息判断是什么错误,如:没有数据库字段、字段不存在等。
1.4.5、保存:
保存时,会对SQL进行再次校验,以保证配置正确性。注意:在实际报表加载时则不再进行校验,默认配置是经过测试验证可执行的。
1.4.5、删除:
删除配置,系统预设数据不允许删除。
其余不做详细介绍,若有存疑的,咨询相关研发或留言。
1.5、 适用场景
该功能,目的是为了支持采购销售相关报表中存在单据和单据要JOIN取不同字段的报表需求,在确实无法通过单实体数据源,通过map-reduce完成计算时,才考虑使用关联数据源配置来实现。
关联实体配置因需要JOIN计算,其查询成本和计算成本非常高,及内存占用也高。开发人员需要谨慎使用,绝大部分性能设计,还是在依托于具体的开发人员,而非框架。
2、调整了:报表数据源配置
在数据源配置中,主要增加了关联映射配置的面板、报表字段配置增加了一列合计显示。
2.1、系统路径
【供应链云】→【业务设置】→【极速报表】 →【报表数据源配置】
2.2、关键字段介绍(只介绍差异部分)
序号 | 面板 | 字段 | 介绍&约束 |
1 | 报表字段配置 | 显示合计 | 用于控制该字段是否要在报表底部显示合计行。只有计算类型=数值的字段才允许设置。 |
2 | 关联数据源配置 | 数据块状态 | 字段库元数据上字段的标识,切换字段库是,会自动清空,重新加载字段库全部字段 |
3 | 数据描述 | 字段库元数据上字段的名称 | |
4 | 关联实体配置 | 可点击选中字段,确定后,返回英文标识,可以为空 | |
5 | 数据块过滤设置 | 来源字段标识对应的名称,是全路径名称,自动带出 |
2.3、关键功能和配置介绍
2.3.1、显示合计
在开启显示合计时,并且报表对总值有该字段时,在报表底部会显示黄颜色的合计。默认情况下合计值是后台数据包中返回的所有行的合计值(要非常注意,是数据包返回的行,限流时是几行就合计几行),这就是一个针对所有行求SUM的逻辑。由平台默认处理。
当开启显示合计行时:汇总行显示的是后台总计算子出来的汇总结果。有极速报表在异步汇总接口中实现。
未开启显示总计行 | 开启了显示总计行 | |||
明细1-1 | 10 | 明细1-1 | 10 | |
明细1-2 | 10 | 明细1-2 | 10 | |
小计1 | 20 | 小计1 | 20 | |
明细2 | 5 | 明细2 | 5 | |
小计2 | 5 | 小计2 | 5 | |
。。。 | 总计行 | 25 | ||
合计 | 50 | 合计 | 25 |
在具体报表中,代码可能还有额外加的字段,则需要自定义设置,是否开启显示汇总。可以通过下面方式构建字段并设置:
2.3.2、关联数据源配置
关联数据源配置的解析和计算逻辑与单实体的数据源几乎一样。每个数据块是独立的,最终UNION。差别是关联数据源配置中的数据过滤设置,是基于字段库字段来选择的。在实际运行时,这部分条件会与用户条件合并。
这里要注意的是,过滤条件依赖与对应的字段映射配置。因此,需要参与过滤字段,必须在SELECT 中有体现,字段映射中才可以被选择到。这样程序可以找到字段链路关系。
3、新增了:分隔过滤条件的接口
该接口,主要用于在大数据量,特性且必要的情况下,将特定数据块的过滤条件,等价切分为多个条件。做到一个查询变为多个查询,查询总结果不变。
3.1、适用场景
比如:物料收发汇总表,因为日期范围太长,导致数据库查询日期字段索引失效了,但是其索引又不高效,有一种办法就是将时间条件,切分为多个段时间,让每个查询都能使用到索引,提升查询效率。
3.2、开发示例
可以在modify数据块方法中,针对数据库进行设置。
3.2、注意事项
该接口不可滥用,必须经过严格的评估,在确实有必要的情况下增加,否则会引起更严重的性能问题。
目前只支持日期范围、ID集合条件的过滤切分,条件中有重复条件、开口条件,垮库条件,or条件等,无法支持时,默认会不做切分。
极速报表:关联实体配置
本文2024-09-22 23:48:57发表“云星瀚知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-xinghan-135457.html