<< Click to Display Table of Contents >> 数据开发规范复制链接 |
1.数据开发规范
数据集是vividime BI与底层数据之间的接口,主要使用SQL对数据库进行查询。数据集可以直接用于开发报表,也可以把数据集中的数据抽取(底层通过调度任务执行)到永洪数据集市加速数据执行。因此,SQL查询的性能,返回的结果集大小都将影响到直连数据库的报表的查询性能,或调度任务的执行时长。
1.1直连数据库数据集开发
1)不推荐大数据量的跨数据库Join。
2)不推荐大数据量的SQL数据集和非SQL数据集的Join和Union,避免2个或以上的数据量上千万的表进行复杂的关联计算。在多个表做联接操作时,要提前知道每个表的数据量,关联条件,对结果集有个预判,避免笛卡尔积的出现,导致系统计算量过大,占用大量系统资源,造成性能下降。
3)不推荐大数据量的不能Push到数据库的多层嵌套的自服务数据集,组合数据集和Yonghong SQL数据集。
4)尽量避免勾掉SQL数据集、组合数据集和自服务数据集里的“数据库内计算”。如果勾掉,数据集上所有的计算和报表上所有的计算都会进行内存计算。勾掉“数据库内计算”仅在复杂SQL的情况下,数据库里计算很快,但在Yonghong里需要从数据库加载所有的明细后再加工变慢的场景。
5)明细表格支持真分页,当明细数据量比较大时,可以选择对表格进行分页。点击下方所示的按钮即可切换明细表和汇总表。
6)SQL里用参数时,select里的参数尽量加@,避免索引失效。
如: select ?{@param1}, market from table1,避免:select ?{param1}, market from table1
7)过滤里如果某条过滤条件不能Push SQL,会导致整体的过滤条件都不能Push SQL,所以建议先将能Push到SQL的过滤完成后,在数据量减少的情况下,再去做不能Push SQL的过滤。
8)数据集样本数量默认设置为5000,保证制作报告使用样本数据量,提高性能。
9)数据集提前过滤,数据集在创建时尽可能在进行关联计算之前先对有效数据进行过滤,降低计算量,提高性能。
1.2 MPP集市数据开发
1)需要现将数据进行处理、合并形成宽表,再将宽表数据入集市,避免在入完集市之后再去做集市数据集之间的Union,Join等操作。同时需要避免集市数据集和其它类型数据集进行Join、Union等操作。
2)如果是一个细节表和多个维度表,场景上不能进行先关联形成宽表之后再入集市,可以在将这几个表分别入集市,维度表在入集市的时候勾上“维度表”。
3)如果是多个明细表关联,场景上不能进行先关联形成宽表之后再入集市,可以在这几个表入集市时,勾上“分片列”属性,对要Join的联接列来进行分片。
4)在入集市时,可以勾选“加入标签”对某列或某些列打标签,后续对于集市数据集可以通过标签过滤集市里的数据,数据量非常大可以使用打Meta形式提高报告打开速度。
5)集市计算能处理好所有的分组、聚合、过滤、表达式计算、汇总表的排序,这些计算之外的联接(除去上面的2)、3)点)、联合、抽样、明细排序、透视表、逆透视表、自循环列、镜像、去重等还是内存计算。
6)避免在集市上进行分组汇总后结果集较大的运算。
7)当列不同值较多时,避免进行精确不同值计算,可以用近似不同值替代。
8)尽量避免在集市上进行大数据量的明细查询。
1.3 VooltDB集市数据开发
1)“1.2.MPP集市数据开发”里列的项也同样适用于VooltDB。只是针对第5)项重的联接、联合、抽样、明细排序、透视表、逆透视表、自循环列、镜像、去重等计算都能下推到VooltDB进行计算。
2)VooltDB还支持在入集市时设置主键,设置主键后,入集市的数据会按照设置的主键进行排序后存储,在制作集市报告时使用主键列设置过滤时,可以加速报表查询的效率。 VooltDB不要求主键唯一,可以插入多条具有相同主键的行,主键也可以包含一列或多列。推荐对高频过滤列设置主键,设置的主键列数量控制在10个以内。